{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} module Cardano.Api.Internal.LedgerEvents.Rule.BBODY.LEDGER ( LatestBBodyEventConstraints , handleShelleyLEDGEREvents ) where import Cardano.Api.Internal.LedgerEvents.LedgerEvent import Cardano.Api.Internal.LedgerEvents.Rule.BBODY.DELEGS import Cardano.Api.Internal.LedgerEvents.Rule.BBODY.UTXOW import Cardano.Ledger.Alonzo.Rules ( AlonzoUtxoEvent (..) , AlonzoUtxosEvent (..) , AlonzoUtxowEvent (..) ) import Cardano.Ledger.Alonzo.Rules qualified as Alonzo 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 type LatestBBodyEventConstraints ledgerera = ( Event (Ledger.Core.EraRule "BBODY" ledgerera) ~ Alonzo.AlonzoBbodyEvent ledgerera , Event (Ledger.Core.EraRule "LEDGERS" ledgerera) ~ Shelley.ShelleyLedgersEvent ledgerera , Event (Ledger.Core.EraRule "LEDGER" ledgerera) ~ Shelley.ShelleyLedgerEvent ledgerera , Event (Ledger.Core.EraRule "DELEGS" ledgerera) ~ Shelley.ShelleyDelegsEvent ledgerera , Event (Ledger.Core.EraRule "UTXOW" ledgerera) ~ AlonzoUtxowEvent ledgerera , Event (Ledger.Core.EraRule "UTXO" ledgerera) ~ AlonzoUtxoEvent ledgerera , Event (Ledger.Core.EraRule "UTXOS" ledgerera) ~ AlonzoUtxosEvent ledgerera ) handleShelleyLEDGEREvents :: Event (Ledger.Core.EraRule "UTXOW" ledgerera) ~ AlonzoUtxowEvent ledgerera => Event (Ledger.Core.EraRule "UTXO" ledgerera) ~ AlonzoUtxoEvent ledgerera => Event (Ledger.Core.EraRule "UTXOS" ledgerera) ~ AlonzoUtxosEvent ledgerera => Event (Ledger.Core.EraRule "DELEGS" ledgerera) ~ Shelley.ShelleyDelegsEvent ledgerera => Ledger.Core.EraCrypto ledgerera ~ Crypto.StandardCrypto => Shelley.ShelleyLedgerEvent ledgerera -> Maybe LedgerEvent handleShelleyLEDGEREvents :: forall ledgerera. (Event (EraRule "UTXOW" ledgerera) ~ AlonzoUtxowEvent ledgerera, Event (EraRule "UTXO" ledgerera) ~ AlonzoUtxoEvent ledgerera, Event (EraRule "UTXOS" ledgerera) ~ AlonzoUtxosEvent ledgerera, Event (EraRule "DELEGS" ledgerera) ~ ShelleyDelegsEvent ledgerera, EraCrypto ledgerera ~ StandardCrypto) => ShelleyLedgerEvent ledgerera -> Maybe LedgerEvent handleShelleyLEDGEREvents ShelleyLedgerEvent ledgerera ledgerEvent = case ShelleyLedgerEvent ledgerera ledgerEvent of Shelley.UtxowEvent Event (EraRule "UTXOW" ledgerera) e -> AlonzoUtxowEvent ledgerera -> Maybe LedgerEvent forall ledgerera. (Event (EraRule "UTXO" ledgerera) ~ AlonzoUtxoEvent ledgerera, Event (EraRule "UTXOS" ledgerera) ~ AlonzoUtxosEvent ledgerera, EraCrypto ledgerera ~ StandardCrypto) => AlonzoUtxowEvent ledgerera -> Maybe LedgerEvent handleAlonzoUTxOWEvent AlonzoUtxowEvent ledgerera Event (EraRule "UTXOW" ledgerera) e Shelley.DelegsEvent Event (EraRule "DELEGS" ledgerera) e -> ShelleyDelegsEvent ledgerera -> Maybe LedgerEvent forall ledgerera. ShelleyDelegsEvent ledgerera -> Maybe LedgerEvent handleShelleyDELEGSEvent Event (EraRule "DELEGS" ledgerera) ShelleyDelegsEvent ledgerera e