{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Babbage.Rules.Ledger (BabbageLEDGER) where

import qualified Cardano.Ledger.Allegra.Rules as Allegra
import qualified Cardano.Ledger.Alonzo.Rules as Alonzo
import Cardano.Ledger.Babbage.Core
import Cardano.Ledger.Babbage.Era (BabbageEra, BabbageLEDGER)
import Cardano.Ledger.Babbage.Rules.Delegs ()
import Cardano.Ledger.Babbage.Rules.Utxo (BabbageUtxoPredFailure)
import Cardano.Ledger.Babbage.Rules.Utxow (BabbageUTXOW, BabbageUtxowPredFailure)
import Cardano.Ledger.BaseTypes (ShelleyBase)
import Cardano.Ledger.Shelley.LedgerState (
  CertState,
  LedgerState (..),
  UTxOState (..),
 )
import qualified Cardano.Ledger.Shelley.Rules as Shelley
import Cardano.Ledger.State (EraCertState)
import Control.State.Transition (
  Embed (..),
  STS (..),
 )
import Data.Sequence (Seq)

-- ==================================================

type instance EraRuleFailure "LEDGER" BabbageEra = Shelley.ShelleyLedgerPredFailure BabbageEra

instance InjectRuleFailure "LEDGER" Shelley.ShelleyLedgerPredFailure BabbageEra

instance InjectRuleFailure "LEDGER" BabbageUtxowPredFailure BabbageEra where
  injectFailure :: BabbageUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "UTXOW" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
BabbageUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
Shelley.UtxowFailure

instance InjectRuleFailure "LEDGER" Alonzo.AlonzoUtxowPredFailure BabbageEra where
  injectFailure :: AlonzoUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "UTXOW" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
Shelley.UtxowFailure (BabbageUtxowPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (AlonzoUtxowPredFailure BabbageEra
    -> BabbageUtxowPredFailure BabbageEra)
-> AlonzoUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxowPredFailure BabbageEra
-> EraRuleFailure "UTXOW" BabbageEra
AlonzoUtxowPredFailure BabbageEra
-> BabbageUtxowPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" Shelley.ShelleyUtxowPredFailure BabbageEra where
  injectFailure :: ShelleyUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "UTXOW" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
Shelley.UtxowFailure (BabbageUtxowPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (ShelleyUtxowPredFailure BabbageEra
    -> BabbageUtxowPredFailure BabbageEra)
-> ShelleyUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxowPredFailure BabbageEra
-> EraRuleFailure "UTXOW" BabbageEra
ShelleyUtxowPredFailure BabbageEra
-> BabbageUtxowPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" BabbageUtxoPredFailure BabbageEra where
  injectFailure :: BabbageUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "UTXOW" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
Shelley.UtxowFailure (BabbageUtxowPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (BabbageUtxoPredFailure BabbageEra
    -> BabbageUtxowPredFailure BabbageEra)
-> BabbageUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BabbageUtxoPredFailure BabbageEra
-> EraRuleFailure "UTXOW" BabbageEra
BabbageUtxoPredFailure BabbageEra
-> BabbageUtxowPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" Alonzo.AlonzoUtxoPredFailure BabbageEra where
  injectFailure :: AlonzoUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "UTXOW" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
Shelley.UtxowFailure (BabbageUtxowPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (AlonzoUtxoPredFailure BabbageEra
    -> BabbageUtxowPredFailure BabbageEra)
-> AlonzoUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxoPredFailure BabbageEra
-> EraRuleFailure "UTXOW" BabbageEra
AlonzoUtxoPredFailure BabbageEra
-> BabbageUtxowPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" Alonzo.AlonzoUtxosPredFailure BabbageEra where
  injectFailure :: AlonzoUtxosPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "UTXOW" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
Shelley.UtxowFailure (BabbageUtxowPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (AlonzoUtxosPredFailure BabbageEra
    -> BabbageUtxowPredFailure BabbageEra)
-> AlonzoUtxosPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxosPredFailure BabbageEra
-> EraRuleFailure "UTXOW" BabbageEra
AlonzoUtxosPredFailure BabbageEra
-> BabbageUtxowPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" Shelley.ShelleyPpupPredFailure BabbageEra where
  injectFailure :: ShelleyPpupPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "UTXOW" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
Shelley.UtxowFailure (BabbageUtxowPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (ShelleyPpupPredFailure BabbageEra
    -> BabbageUtxowPredFailure BabbageEra)
-> ShelleyPpupPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyPpupPredFailure BabbageEra
-> EraRuleFailure "UTXOW" BabbageEra
ShelleyPpupPredFailure BabbageEra
-> BabbageUtxowPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" Shelley.ShelleyUtxoPredFailure BabbageEra where
  injectFailure :: ShelleyUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "UTXOW" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
Shelley.UtxowFailure (BabbageUtxowPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (ShelleyUtxoPredFailure BabbageEra
    -> BabbageUtxowPredFailure BabbageEra)
-> ShelleyUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxoPredFailure BabbageEra
-> EraRuleFailure "UTXOW" BabbageEra
ShelleyUtxoPredFailure BabbageEra
-> BabbageUtxowPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" Allegra.AllegraUtxoPredFailure BabbageEra where
  injectFailure :: AllegraUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "UTXOW" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
Shelley.UtxowFailure (BabbageUtxowPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (AllegraUtxoPredFailure BabbageEra
    -> BabbageUtxowPredFailure BabbageEra)
-> AllegraUtxoPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllegraUtxoPredFailure BabbageEra
-> EraRuleFailure "UTXOW" BabbageEra
AllegraUtxoPredFailure BabbageEra
-> BabbageUtxowPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" Shelley.ShelleyDelegsPredFailure BabbageEra where
  injectFailure :: ShelleyDelegsPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "DELEGS" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
ShelleyDelegsPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
forall era.
PredicateFailure (EraRule "DELEGS" era)
-> ShelleyLedgerPredFailure era
Shelley.DelegsFailure

instance InjectRuleFailure "LEDGER" Shelley.ShelleyDelplPredFailure BabbageEra where
  injectFailure :: ShelleyDelplPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "DELEGS" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
ShelleyDelegsPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "DELEGS" era)
-> ShelleyLedgerPredFailure era
Shelley.DelegsFailure (ShelleyDelegsPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (ShelleyDelplPredFailure BabbageEra
    -> ShelleyDelegsPredFailure BabbageEra)
-> ShelleyDelplPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyDelplPredFailure BabbageEra
-> EraRuleFailure "DELEGS" BabbageEra
ShelleyDelplPredFailure BabbageEra
-> ShelleyDelegsPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" Shelley.ShelleyPoolPredFailure BabbageEra where
  injectFailure :: ShelleyPoolPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "DELEGS" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
ShelleyDelegsPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "DELEGS" era)
-> ShelleyLedgerPredFailure era
Shelley.DelegsFailure (ShelleyDelegsPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (ShelleyPoolPredFailure BabbageEra
    -> ShelleyDelegsPredFailure BabbageEra)
-> ShelleyPoolPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyPoolPredFailure BabbageEra
-> EraRuleFailure "DELEGS" BabbageEra
ShelleyPoolPredFailure BabbageEra
-> ShelleyDelegsPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" Shelley.ShelleyDelegPredFailure BabbageEra where
  injectFailure :: ShelleyDelegPredFailure BabbageEra
-> EraRuleFailure "LEDGER" BabbageEra
injectFailure = PredicateFailure (EraRule "DELEGS" BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
ShelleyDelegsPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "DELEGS" era)
-> ShelleyLedgerPredFailure era
Shelley.DelegsFailure (ShelleyDelegsPredFailure BabbageEra
 -> ShelleyLedgerPredFailure BabbageEra)
-> (ShelleyDelegPredFailure BabbageEra
    -> ShelleyDelegsPredFailure BabbageEra)
-> ShelleyDelegPredFailure BabbageEra
-> ShelleyLedgerPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyDelegPredFailure BabbageEra
-> EraRuleFailure "DELEGS" BabbageEra
ShelleyDelegPredFailure BabbageEra
-> ShelleyDelegsPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance
  ( AlonzoEraTx era
  , EraGov era
  , Embed (EraRule "DELEGS" era) (BabbageLEDGER era)
  , Embed (EraRule "UTXOW" era) (BabbageLEDGER era)
  , Environment (EraRule "UTXOW" era) ~ Shelley.UtxoEnv era
  , State (EraRule "UTXOW" era) ~ UTxOState era
  , Signal (EraRule "UTXOW" era) ~ StAnnTx TopTx era
  , Environment (EraRule "DELEGS" era) ~ Shelley.DelegsEnv era
  , State (EraRule "DELEGS" era) ~ CertState era
  , Signal (EraRule "DELEGS" era) ~ Seq (TxCert era)
  , AtMostEra "Babbage" era
  , EraCertState era
  , EraRule "LEDGER" era ~ BabbageLEDGER era
  , EraRuleFailure "LEDGER" era ~ Shelley.ShelleyLedgerPredFailure era
  , InjectRuleFailure "LEDGER" Shelley.ShelleyLedgerPredFailure era
  ) =>
  STS (BabbageLEDGER era)
  where
  type State (BabbageLEDGER era) = LedgerState era
  type Signal (BabbageLEDGER era) = StAnnTx TopTx era
  type Environment (BabbageLEDGER era) = Shelley.LedgerEnv era
  type BaseM (BabbageLEDGER era) = ShelleyBase
  type PredicateFailure (BabbageLEDGER era) = Shelley.ShelleyLedgerPredFailure era
  type Event (BabbageLEDGER era) = Shelley.ShelleyLedgerEvent era

  initialRules :: [InitialRule (BabbageLEDGER era)]
initialRules = []
  transitionRules :: [TransitionRule (BabbageLEDGER era)]
transitionRules = [forall (someLEDGER :: * -> *) era.
(STS (someLEDGER era), BaseM (someLEDGER era) ~ ShelleyBase,
 Signal (someLEDGER era) ~ StAnnTx TopTx era,
 State (someLEDGER era) ~ LedgerState era,
 Environment (someLEDGER era) ~ LedgerEnv era,
 Embed (EraRule "UTXOW" era) (someLEDGER era),
 Embed (EraRule "DELEGS" era) (someLEDGER era),
 Environment (EraRule "DELEGS" era) ~ DelegsEnv era,
 State (EraRule "DELEGS" era) ~ CertState era,
 Signal (EraRule "DELEGS" era) ~ Seq (TxCert era),
 Environment (EraRule "UTXOW" era) ~ UtxoEnv era,
 State (EraRule "UTXOW" era) ~ UTxOState era,
 Signal (EraRule "UTXOW" era) ~ StAnnTx TopTx era, AlonzoEraTx era,
 EraCertState era, EraRule "LEDGER" era ~ someLEDGER era,
 InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure era) =>
TransitionRule (someLEDGER era)
Alonzo.ledgerTransition @BabbageLEDGER]

  renderAssertionViolation :: AssertionViolation (BabbageLEDGER era) -> String
renderAssertionViolation = AssertionViolation (BabbageLEDGER era) -> String
forall era t.
(EraTx era, EraGov era, EraCertState era,
 Environment t ~ LedgerEnv era, Signal t ~ StAnnTx TopTx era,
 State t ~ LedgerState era) =>
AssertionViolation t -> String
Shelley.renderDepositEqualsObligationViolation

  assertions :: [Assertion (BabbageLEDGER era)]
assertions = [Assertion (BabbageLEDGER era)]
forall era (rule :: * -> *).
(EraGov era, EraCertState era,
 State (rule era) ~ LedgerState era) =>
[Assertion (rule era)]
Shelley.shelleyLedgerAssertions

instance
  ( Era era
  , STS (Shelley.ShelleyDELEGS era)
  , PredicateFailure (EraRule "DELEGS" era) ~ Shelley.ShelleyDelegsPredFailure era
  , Event (EraRule "DELEGS" era) ~ Shelley.ShelleyDelegsEvent era
  ) =>
  Embed (Shelley.ShelleyDELEGS era) (BabbageLEDGER era)
  where
  wrapFailed :: PredicateFailure (ShelleyDELEGS era)
-> PredicateFailure (BabbageLEDGER era)
wrapFailed = PredicateFailure (EraRule "DELEGS" era)
-> ShelleyLedgerPredFailure era
PredicateFailure (ShelleyDELEGS era)
-> PredicateFailure (BabbageLEDGER era)
forall era.
PredicateFailure (EraRule "DELEGS" era)
-> ShelleyLedgerPredFailure era
Shelley.DelegsFailure
  wrapEvent :: Event (ShelleyDELEGS era) -> Event (BabbageLEDGER era)
wrapEvent = Event (EraRule "DELEGS" era) -> ShelleyLedgerEvent era
Event (ShelleyDELEGS era) -> Event (BabbageLEDGER era)
forall era. Event (EraRule "DELEGS" era) -> ShelleyLedgerEvent era
Shelley.DelegsEvent

instance
  ( Era era
  , STS (BabbageUTXOW era)
  , Event (EraRule "UTXOW" era) ~ Alonzo.AlonzoUtxowEvent era
  , PredicateFailure (EraRule "UTXOW" era) ~ BabbageUtxowPredFailure era
  ) =>
  Embed (BabbageUTXOW era) (BabbageLEDGER era)
  where
  wrapFailed :: PredicateFailure (BabbageUTXOW era)
-> PredicateFailure (BabbageLEDGER era)
wrapFailed = PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
PredicateFailure (BabbageUTXOW era)
-> PredicateFailure (BabbageLEDGER era)
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> ShelleyLedgerPredFailure era
Shelley.UtxowFailure
  wrapEvent :: Event (BabbageUTXOW era) -> Event (BabbageLEDGER era)
wrapEvent = Event (EraRule "UTXOW" era) -> ShelleyLedgerEvent era
Event (BabbageUTXOW era) -> Event (BabbageLEDGER era)
forall era. Event (EraRule "UTXOW" era) -> ShelleyLedgerEvent era
Shelley.UtxowEvent

instance
  ( Era era
  , STS (BabbageLEDGER era)
  , PredicateFailure (EraRule "LEDGER" era) ~ Shelley.ShelleyLedgerPredFailure era
  , Event (EraRule "LEDGER" era) ~ Shelley.ShelleyLedgerEvent era
  ) =>
  Embed (BabbageLEDGER era) (Shelley.ShelleyLEDGERS era)
  where
  wrapFailed :: PredicateFailure (BabbageLEDGER era)
-> PredicateFailure (ShelleyLEDGERS era)
wrapFailed = PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
PredicateFailure (BabbageLEDGER era)
-> PredicateFailure (ShelleyLEDGERS era)
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure
  wrapEvent :: Event (BabbageLEDGER era) -> Event (ShelleyLEDGERS era)
wrapEvent = Event (EraRule "LEDGER" era) -> ShelleyLedgersEvent era
Event (BabbageLEDGER era) -> Event (ShelleyLEDGERS era)
forall era. Event (EraRule "LEDGER" era) -> ShelleyLedgersEvent era
Shelley.LedgerEvent