{-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} module Cardano.Api.LedgerEvents.Rule.BBODY.UTXOW ( handleAlonzoOnwardsUTxOWEvent , handleAllegraMaryUTxOWEvent , handlePreAlonzoUTxOWEvent ) where import Cardano.Api.LedgerEvents.LedgerEvent import qualified Cardano.Ledger.Allegra.Rules as Allegra import Cardano.Ledger.Alonzo.Rules (AlonzoUtxoEvent (..), AlonzoUtxosEvent (..), AlonzoUtxowEvent (..)) import qualified Cardano.Ledger.Alonzo.Rules as Alonzo import qualified Cardano.Ledger.Core as Ledger.Core import qualified Cardano.Ledger.Crypto as Crypto import qualified Cardano.Ledger.Shelley.Rules as Shelley import Control.State.Transition.Extended handleAlonzoOnwardsUTxOWEvent :: 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 handleAlonzoOnwardsUTxOWEvent :: forall ledgerera. (Event (EraRule "UTXO" ledgerera) ~ AlonzoUtxoEvent ledgerera, Event (EraRule "UTXOS" ledgerera) ~ AlonzoUtxosEvent ledgerera, EraCrypto ledgerera ~ StandardCrypto) => AlonzoUtxowEvent ledgerera -> Maybe LedgerEvent handleAlonzoOnwardsUTxOWEvent (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