{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} module Cardano.Api.Internal.LedgerEvents.Rule.BBODY.UTXOW ( handleAlonzoUTxOWEvent , handleAllegraMaryUTxOWEvent , handleConwayUTxOWEvent , handlePreAlonzoUTxOWEvent ) where import Cardano.Api.Internal.LedgerEvents.LedgerEvent import Cardano.Ledger.Allegra.Rules qualified as Allegra import Cardano.Ledger.Alonzo.Rules ( AlonzoUtxoEvent (..) , AlonzoUtxosEvent (..) , AlonzoUtxowEvent (..) ) import Cardano.Ledger.Alonzo.Rules qualified as Alonzo import Cardano.Ledger.Conway import Cardano.Ledger.Conway.Rules qualified as Conway import Cardano.Ledger.Core qualified as Ledger.Core import Cardano.Ledger.Crypto qualified as Crypto import Cardano.Ledger.Shelley.Rules qualified as Shelley import Control.State.Transition.Extended handleConwayUTxOWEvent :: AlonzoUtxowEvent (ConwayEra Crypto.StandardCrypto) -> Maybe LedgerEvent handleConwayUTxOWEvent :: AlonzoUtxowEvent (ConwayEra StandardCrypto) -> Maybe LedgerEvent handleConwayUTxOWEvent (Alonzo.WrappedShelleyEraEvent (Shelley.UtxoEvent (Alonzo.UtxosEvent Event (EraRule "UTXOS" (ConwayEra StandardCrypto)) conwayUTxOsEvent))) = case Event (EraRule "UTXOS" (ConwayEra StandardCrypto)) conwayUTxOsEvent of Conway.TotalDeposits{} -> Maybe LedgerEvent forall a. Maybe a Nothing Conway.SuccessfulPlutusScriptsEvent NonEmpty (PlutusWithContext (EraCrypto (ConwayEra StandardCrypto))) e -> LedgerEvent -> Maybe LedgerEvent forall a. a -> Maybe a Just (LedgerEvent -> Maybe LedgerEvent) -> LedgerEvent -> Maybe LedgerEvent forall a b. (a -> b) -> a -> b $ NonEmpty (PlutusWithContext StandardCrypto) -> LedgerEvent SuccessfulPlutusScript NonEmpty (PlutusWithContext (EraCrypto (ConwayEra StandardCrypto))) NonEmpty (PlutusWithContext StandardCrypto) e Conway.FailedPlutusScriptsEvent NonEmpty (PlutusWithContext (EraCrypto (ConwayEra StandardCrypto))) e -> LedgerEvent -> Maybe LedgerEvent forall a. a -> Maybe a Just (LedgerEvent -> Maybe LedgerEvent) -> LedgerEvent -> Maybe LedgerEvent forall a b. (a -> b) -> a -> b $ NonEmpty (PlutusWithContext StandardCrypto) -> LedgerEvent FailedPlutusScript NonEmpty (PlutusWithContext (EraCrypto (ConwayEra StandardCrypto))) NonEmpty (PlutusWithContext StandardCrypto) e Conway.TxUTxODiff UTxO (ConwayEra StandardCrypto) _ UTxO (ConwayEra StandardCrypto) _ -> Maybe LedgerEvent forall a. Maybe a Nothing handleAlonzoUTxOWEvent :: Event (Ledger.Core.EraRule "UTXO" ledgerera) ~ AlonzoUtxoEvent ledgerera => Event (Ledger.Core.EraRule "UTXOS" ledgerera) ~ AlonzoUtxosEvent ledgerera => Ledger.Core.EraCrypto ledgerera ~ Crypto.StandardCrypto => AlonzoUtxowEvent ledgerera -> Maybe LedgerEvent handleAlonzoUTxOWEvent :: forall ledgerera. (Event (EraRule "UTXO" ledgerera) ~ AlonzoUtxoEvent ledgerera, Event (EraRule "UTXOS" ledgerera) ~ AlonzoUtxosEvent ledgerera, EraCrypto ledgerera ~ StandardCrypto) => AlonzoUtxowEvent ledgerera -> Maybe LedgerEvent handleAlonzoUTxOWEvent (WrappedShelleyEraEvent (Shelley.UtxoEvent (UtxosEvent Event (EraRule "UTXOS" ledgerera) utxoEvent))) = case Event (EraRule "UTXOS" ledgerera) utxoEvent of Alonzo.AlonzoPpupToUtxosEvent{} -> Maybe LedgerEvent forall a. Maybe a Nothing Alonzo.TotalDeposits{} -> Maybe LedgerEvent forall a. Maybe a Nothing Alonzo.SuccessfulPlutusScriptsEvent NonEmpty (PlutusWithContext (EraCrypto ledgerera)) e -> LedgerEvent -> Maybe LedgerEvent forall a. a -> Maybe a Just (LedgerEvent -> Maybe LedgerEvent) -> LedgerEvent -> Maybe LedgerEvent forall a b. (a -> b) -> a -> b $ NonEmpty (PlutusWithContext StandardCrypto) -> LedgerEvent SuccessfulPlutusScript NonEmpty (PlutusWithContext (EraCrypto ledgerera)) NonEmpty (PlutusWithContext StandardCrypto) e Alonzo.FailedPlutusScriptsEvent NonEmpty (PlutusWithContext (EraCrypto ledgerera)) e -> LedgerEvent -> Maybe LedgerEvent forall a. a -> Maybe a Just (LedgerEvent -> Maybe LedgerEvent) -> LedgerEvent -> Maybe LedgerEvent forall a b. (a -> b) -> a -> b $ NonEmpty (PlutusWithContext StandardCrypto) -> LedgerEvent FailedPlutusScript NonEmpty (PlutusWithContext (EraCrypto ledgerera)) NonEmpty (PlutusWithContext StandardCrypto) e Alonzo.TxUTxODiff UTxO ledgerera _ UTxO ledgerera _ -> Maybe LedgerEvent forall a. Maybe a Nothing handlePreAlonzoUTxOWEvent :: Event (Ledger.Core.EraRule "UTXO" ledgerera) ~ Shelley.UtxoEvent ledgerera => Event (Ledger.Core.EraRule "PPUP" ledgerera) ~ Shelley.PpupEvent ledgerera => Shelley.ShelleyUtxowEvent ledgerera -> Maybe LedgerEvent handlePreAlonzoUTxOWEvent :: forall ledgerera. (Event (EraRule "UTXO" ledgerera) ~ UtxoEvent ledgerera, Event (EraRule "PPUP" ledgerera) ~ PpupEvent ledgerera) => ShelleyUtxowEvent ledgerera -> Maybe LedgerEvent handlePreAlonzoUTxOWEvent (Shelley.UtxoEvent Event (EraRule "UTXO" ledgerera) e) = case Event (EraRule "UTXO" ledgerera) e of Shelley.TotalDeposits{} -> Maybe LedgerEvent forall a. Maybe a Nothing Shelley.UpdateEvent (Shelley.PpupNewEpoch EpochNo _) -> Maybe LedgerEvent forall a. Maybe a Nothing Shelley.TxUTxODiff UTxO ledgerera _ UTxO ledgerera _ -> Maybe LedgerEvent forall a. Maybe a Nothing handleAllegraMaryUTxOWEvent :: Event (Ledger.Core.EraRule "UTXO" ledgerera) ~ Allegra.AllegraUtxoEvent ledgerera => Event (Ledger.Core.EraRule "PPUP" ledgerera) ~ Shelley.PpupEvent ledgerera => Shelley.ShelleyUtxowEvent ledgerera -> Maybe LedgerEvent handleAllegraMaryUTxOWEvent :: forall ledgerera. (Event (EraRule "UTXO" ledgerera) ~ AllegraUtxoEvent ledgerera, Event (EraRule "PPUP" ledgerera) ~ PpupEvent ledgerera) => ShelleyUtxowEvent ledgerera -> Maybe LedgerEvent handleAllegraMaryUTxOWEvent (Shelley.UtxoEvent Event (EraRule "UTXO" ledgerera) e) = case Event (EraRule "UTXO" ledgerera) e of Allegra.TotalDeposits{} -> Maybe LedgerEvent forall a. Maybe a Nothing Allegra.UpdateEvent (Shelley.PpupNewEpoch EpochNo _) -> Maybe LedgerEvent forall a. Maybe a Nothing Allegra.TxUTxODiff UTxO ledgerera _ UTxO ledgerera _ -> Maybe LedgerEvent forall a. Maybe a Nothing