{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} module Cardano.Api.LedgerState.Internal.Rule.BBODY.UTXOW ( handleAlonzoUTxOWEvent , handleAllegraMaryUTxOWEvent , handleConwayUTxOWEvent , handlePreAlonzoUTxOWEvent ) where import Cardano.Api.LedgerState.Internal.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.Shelley.Rules qualified as Shelley import Control.State.Transition.Extended handleConwayUTxOWEvent :: AlonzoUtxowEvent ConwayEra -> Maybe LedgerEvent handleConwayUTxOWEvent :: AlonzoUtxowEvent ConwayEra -> Maybe LedgerEvent handleConwayUTxOWEvent = \case (Alonzo.WrappedShelleyEraEvent (Shelley.UtxoEvent TotalDeposits{})) -> Maybe LedgerEvent forall a. Maybe a Nothing (Alonzo.WrappedShelleyEraEvent (Shelley.UtxoEvent TxUTxODiff{})) -> Maybe LedgerEvent forall a. Maybe a Nothing (Alonzo.WrappedShelleyEraEvent (Shelley.UtxoEvent (Alonzo.UtxosEvent Event (EraRule "UTXOS" ConwayEra) conwayUTxOsEvent))) -> case Event (EraRule "UTXOS" ConwayEra) conwayUTxOsEvent of Conway.SuccessfulPlutusScriptsEvent NonEmpty PlutusWithContext 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 -> LedgerEvent SuccessfulPlutusScript NonEmpty PlutusWithContext e Conway.FailedPlutusScriptsEvent NonEmpty PlutusWithContext 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 -> LedgerEvent FailedPlutusScript NonEmpty PlutusWithContext e handleAlonzoUTxOWEvent :: Event (Ledger.Core.EraRule "UTXO" ledgerera) ~ AlonzoUtxoEvent ledgerera => Event (Ledger.Core.EraRule "UTXOS" ledgerera) ~ AlonzoUtxosEvent ledgerera => AlonzoUtxowEvent ledgerera -> Maybe LedgerEvent handleAlonzoUTxOWEvent :: forall ledgerera. (Event (EraRule "UTXO" ledgerera) ~ AlonzoUtxoEvent ledgerera, Event (EraRule "UTXOS" ledgerera) ~ AlonzoUtxosEvent ledgerera) => AlonzoUtxowEvent ledgerera -> Maybe LedgerEvent handleAlonzoUTxOWEvent = \case (Alonzo.WrappedShelleyEraEvent (Shelley.UtxoEvent TotalDeposits{})) -> Maybe LedgerEvent forall a. Maybe a Nothing (Alonzo.WrappedShelleyEraEvent (Shelley.UtxoEvent TxUTxODiff{})) -> Maybe LedgerEvent forall a. Maybe a Nothing (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.SuccessfulPlutusScriptsEvent NonEmpty PlutusWithContext 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 -> LedgerEvent SuccessfulPlutusScript NonEmpty PlutusWithContext e Alonzo.FailedPlutusScriptsEvent NonEmpty PlutusWithContext 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 -> LedgerEvent FailedPlutusScript NonEmpty PlutusWithContext e 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