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

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

import qualified Cardano.Ledger.Allegra.Rules as Allegra
import Cardano.Ledger.Alonzo.Core
import qualified Cardano.Ledger.Alonzo.Rules as Alonzo
import Cardano.Ledger.Babbage.Era (BBODY, BabbageEra)
import Cardano.Ledger.Babbage.Rules.Ledgers ()
import Cardano.Ledger.Babbage.Rules.Utxo (BabbageUtxoPredFailure)
import Cardano.Ledger.Babbage.Rules.Utxow (BabbageUtxowPredFailure)
import Cardano.Ledger.BaseTypes (ShelleyBase)
import Cardano.Ledger.Block (PraosBbodySignal (..))
import Cardano.Ledger.Shelley.LedgerState (LedgerState)
import qualified Cardano.Ledger.Shelley.Rules as Shelley
import Control.State.Transition (Embed (..), STS (..), withJudgmentContext)
import Data.Sequence (Seq)

type instance EraRuleFailure "BBODY" BabbageEra = Alonzo.AlonzoBbodyPredFailure BabbageEra

instance InjectRuleFailure "BBODY" Alonzo.AlonzoBbodyPredFailure BabbageEra

instance InjectRuleFailure "BBODY" Shelley.ShelleyBbodyPredFailure BabbageEra where
  injectFailure :: ShelleyBbodyPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure

instance InjectRuleFailure "BBODY" Shelley.ShelleyLedgersPredFailure BabbageEra where
  injectFailure :: ShelleyLedgersPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (ShelleyLedgersPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure

instance InjectRuleFailure "BBODY" Shelley.ShelleyLedgerPredFailure BabbageEra where
  injectFailure :: ShelleyLedgerPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (ShelleyLedgerPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (ShelleyLedgerPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> ShelleyLedgerPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyLedgerPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" BabbageUtxowPredFailure BabbageEra where
  injectFailure :: BabbageUtxowPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (BabbageUtxowPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> BabbageUtxowPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (BabbageUtxowPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> BabbageUtxowPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BabbageUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
BabbageUtxowPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Alonzo.AlonzoUtxowPredFailure BabbageEra where
  injectFailure :: AlonzoUtxowPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (AlonzoUtxowPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> AlonzoUtxowPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (AlonzoUtxowPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> AlonzoUtxowPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
AlonzoUtxowPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Shelley.ShelleyUtxowPredFailure BabbageEra where
  injectFailure :: ShelleyUtxowPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (ShelleyUtxowPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> ShelleyUtxowPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (ShelleyUtxowPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> ShelleyUtxowPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxowPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
ShelleyUtxowPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" BabbageUtxoPredFailure BabbageEra where
  injectFailure :: BabbageUtxoPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (BabbageUtxoPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> BabbageUtxoPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (BabbageUtxoPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> BabbageUtxoPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BabbageUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
BabbageUtxoPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Alonzo.AlonzoUtxoPredFailure BabbageEra where
  injectFailure :: AlonzoUtxoPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (AlonzoUtxoPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> AlonzoUtxoPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (AlonzoUtxoPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> AlonzoUtxoPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
AlonzoUtxoPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Alonzo.AlonzoUtxosPredFailure BabbageEra where
  injectFailure :: AlonzoUtxosPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (AlonzoUtxosPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> AlonzoUtxosPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (AlonzoUtxosPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> AlonzoUtxosPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxosPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
AlonzoUtxosPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Shelley.ShelleyPpupPredFailure BabbageEra where
  injectFailure :: ShelleyPpupPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (ShelleyPpupPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> ShelleyPpupPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (ShelleyPpupPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> ShelleyPpupPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyPpupPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
ShelleyPpupPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Shelley.ShelleyUtxoPredFailure BabbageEra where
  injectFailure :: ShelleyUtxoPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (ShelleyUtxoPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> ShelleyUtxoPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (ShelleyUtxoPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> ShelleyUtxoPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
ShelleyUtxoPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Allegra.AllegraUtxoPredFailure BabbageEra where
  injectFailure :: AllegraUtxoPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (AllegraUtxoPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> AllegraUtxoPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (AllegraUtxoPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> AllegraUtxoPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllegraUtxoPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
AllegraUtxoPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Shelley.ShelleyDelegsPredFailure BabbageEra where
  injectFailure :: ShelleyDelegsPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (ShelleyDelegsPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> ShelleyDelegsPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (ShelleyDelegsPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> ShelleyDelegsPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyDelegsPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
ShelleyDelegsPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Shelley.ShelleyDelplPredFailure BabbageEra where
  injectFailure :: ShelleyDelplPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (ShelleyDelplPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> ShelleyDelplPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (ShelleyDelplPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> ShelleyDelplPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyDelplPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
ShelleyDelplPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Shelley.ShelleyPoolPredFailure BabbageEra where
  injectFailure :: ShelleyPoolPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (ShelleyPoolPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> ShelleyPoolPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (ShelleyPoolPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> ShelleyPoolPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyPoolPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
ShelleyPoolPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" Shelley.ShelleyDelegPredFailure BabbageEra where
  injectFailure :: ShelleyDelegPredFailure BabbageEra
-> EraRuleFailure "BBODY" BabbageEra
injectFailure = ShelleyBbodyPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure BabbageEra
 -> AlonzoBbodyPredFailure BabbageEra)
-> (ShelleyDelegPredFailure BabbageEra
    -> ShelleyBbodyPredFailure BabbageEra)
-> ShelleyDelegPredFailure BabbageEra
-> AlonzoBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" BabbageEra)
-> ShelleyBbodyPredFailure BabbageEra
ShelleyLedgersPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure BabbageEra
 -> ShelleyBbodyPredFailure BabbageEra)
-> (ShelleyDelegPredFailure BabbageEra
    -> ShelleyLedgersPredFailure BabbageEra)
-> ShelleyDelegPredFailure BabbageEra
-> ShelleyBbodyPredFailure BabbageEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyDelegPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
ShelleyDelegPredFailure BabbageEra
-> ShelleyLedgersPredFailure BabbageEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance
  ( EraRule "BBODY" era ~ BBODY era
  , InjectRuleFailure "BBODY" Alonzo.AlonzoBbodyPredFailure era
  , InjectRuleFailure "BBODY" Shelley.ShelleyBbodyPredFailure era
  , Embed (EraRule "LEDGERS" era) (BBODY era)
  , Environment (EraRule "LEDGERS" era) ~ Shelley.ShelleyLedgersEnv era
  , State (EraRule "LEDGERS" era) ~ LedgerState era
  , Signal (EraRule "LEDGERS" era) ~ Seq (Tx TopTx era)
  , AlonzoEraTxWits era
  , EraBlockBody era
  , AlonzoEraPParams era
  , AlonzoEraTx era
  ) =>
  STS (BBODY era)
  where
  type State (BBODY era) = Shelley.ShelleyBbodyState era

  type Signal (BBODY era) = PraosBbodySignal era

  type Environment (BBODY era) = Shelley.BbodyEnv era

  type BaseM (BBODY era) = ShelleyBase

  type PredicateFailure (BBODY era) = Alonzo.AlonzoBbodyPredFailure era
  type Event (BBODY era) = Alonzo.AlonzoBbodyEvent era

  initialRules :: [InitialRule (BBODY era)]
initialRules = []
  transitionRules :: [TransitionRule (BBODY era)]
transitionRules =
    [ (Environment (BBODY era)
 -> State (BBODY era)
 -> Signal (BBODY era)
 -> TransitionRule (BBODY era))
-> TransitionRule (BBODY era)
forall sts.
(Environment sts -> State sts -> Signal sts -> TransitionRule sts)
-> TransitionRule sts
withJudgmentContext ((Environment (BBODY era)
  -> State (BBODY era)
  -> Signal (BBODY era)
  -> TransitionRule (BBODY era))
 -> TransitionRule (BBODY era))
-> (Environment (BBODY era)
    -> State (BBODY era)
    -> Signal (BBODY era)
    -> TransitionRule (BBODY era))
-> TransitionRule (BBODY era)
forall a b. (a -> b) -> a -> b
$ \Environment (BBODY era)
env State (BBODY era)
state (PraosBbodySignal Block h era
block) ->
        BbodyEnv era
-> ShelleyBbodyState era
-> Block h era
-> TransitionRule (EraRule "BBODY" era)
forall era h.
(STS (EraRule "BBODY" era),
 InjectRuleFailure "BBODY" AlonzoBbodyPredFailure era,
 InjectRuleFailure "BBODY" ShelleyBbodyPredFailure era,
 BaseM (EraRule "BBODY" era) ~ ShelleyBase,
 State (EraRule "BBODY" era) ~ ShelleyBbodyState era,
 Embed (EraRule "LEDGERS" era) (EraRule "BBODY" era),
 Environment (EraRule "LEDGERS" era) ~ ShelleyLedgersEnv era,
 State (EraRule "LEDGERS" era) ~ LedgerState era,
 Signal (EraRule "LEDGERS" era) ~ Seq (Tx TopTx era),
 EraBlockBody era, AlonzoEraTx era, EraBlockHeader h era) =>
BbodyEnv era
-> ShelleyBbodyState era
-> Block h era
-> TransitionRule (EraRule "BBODY" era)
Alonzo.bbodyTransition BbodyEnv era
Environment (BBODY era)
env State (BBODY era)
ShelleyBbodyState era
state Block h era
block
    ]

instance
  ( Era era
  , BaseM ledgers ~ ShelleyBase
  , ledgers ~ EraRule "LEDGERS" era
  , STS ledgers
  ) =>
  Embed ledgers (BBODY era)
  where
  wrapFailed :: PredicateFailure ledgers -> PredicateFailure (BBODY era)
wrapFailed = ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
forall era.
ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era
Alonzo.ShelleyInAlonzoBbodyPredFailure (ShelleyBbodyPredFailure era -> AlonzoBbodyPredFailure era)
-> (PredicateFailure ledgers -> ShelleyBbodyPredFailure era)
-> PredicateFailure ledgers
-> AlonzoBbodyPredFailure era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure ledgers -> ShelleyBbodyPredFailure era
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure
  wrapEvent :: Event ledgers -> Event (BBODY era)
wrapEvent = ShelleyBbodyEvent era -> AlonzoBbodyEvent era
forall era. ShelleyBbodyEvent era -> AlonzoBbodyEvent era
Alonzo.ShelleyInAlonzoEvent (ShelleyBbodyEvent era -> AlonzoBbodyEvent era)
-> (Event ledgers -> ShelleyBbodyEvent era)
-> Event ledgers
-> AlonzoBbodyEvent era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Event ledgers -> ShelleyBbodyEvent era
Event (EraRule "LEDGERS" era) -> ShelleyBbodyEvent era
forall era. Event (EraRule "LEDGERS" era) -> ShelleyBbodyEvent era
Shelley.LedgersEvent