{-# LANGUAGE DataKinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wno-orphans #-}

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

import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure)
import Cardano.Ledger.Alonzo.Rules (
  AlonzoBbodyEvent,
  AlonzoBbodyPredFailure,
  AlonzoUtxoPredFailure,
  AlonzoUtxosPredFailure,
  AlonzoUtxowPredFailure,
 )
import Cardano.Ledger.Babbage.Rules (BabbageUtxoPredFailure, BabbageUtxowPredFailure)
import Cardano.Ledger.Conway.Rules (
  ConwayBbodyPredFailure,
  ConwayCertPredFailure,
  ConwayCertsPredFailure,
  ConwayDelegPredFailure,
  ConwayGovCertPredFailure,
  ConwayGovPredFailure,
  ConwayLedgerPredFailure,
  ConwayUtxoPredFailure,
  ConwayUtxosPredFailure,
  ConwayUtxowPredFailure,
  alonzoToConwayBbodyPredFailure,
  shelleyToConwayBbodyPredFailure,
 )
import Cardano.Ledger.Dijkstra.Core (EraRuleEvent, EraRuleFailure, InjectRuleFailure (..))
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
import Cardano.Ledger.Dijkstra.Rules.Ledgers ()
import Cardano.Ledger.Shelley.Rules (
  ShelleyBbodyPredFailure,
  ShelleyLedgersPredFailure,
  ShelleyPoolPredFailure,
  ShelleyUtxoPredFailure,
  ShelleyUtxowPredFailure,
 )
import qualified Cardano.Ledger.Shelley.Rules as Shelley

type instance EraRuleFailure "BBODY" DijkstraEra = ConwayBbodyPredFailure DijkstraEra

type instance EraRuleEvent "BBODY" DijkstraEra = AlonzoBbodyEvent DijkstraEra

instance InjectRuleFailure "BBODY" ConwayBbodyPredFailure DijkstraEra

instance InjectRuleFailure "BBODY" AlonzoBbodyPredFailure DijkstraEra where
  injectFailure :: AlonzoBbodyPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = AlonzoBbodyPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
AlonzoBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
AlonzoBbodyPredFailure era -> ConwayBbodyPredFailure era
alonzoToConwayBbodyPredFailure

instance InjectRuleFailure "BBODY" ShelleyBbodyPredFailure DijkstraEra where
  injectFailure :: ShelleyBbodyPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure

instance InjectRuleFailure "BBODY" ShelleyLedgersPredFailure DijkstraEra where
  injectFailure :: ShelleyLedgersPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (ShelleyLedgersPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> ShelleyLedgersPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure

instance InjectRuleFailure "BBODY" ConwayLedgerPredFailure DijkstraEra where
  injectFailure :: ConwayLedgerPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (ConwayLedgerPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> ConwayLedgerPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure DijkstraEra
 -> ShelleyBbodyPredFailure DijkstraEra)
-> (ConwayLedgerPredFailure DijkstraEra
    -> ShelleyLedgersPredFailure DijkstraEra)
-> ConwayLedgerPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayLedgerPredFailure DijkstraEra
-> EraRuleFailure "LEDGERS" DijkstraEra
ConwayLedgerPredFailure DijkstraEra
-> ShelleyLedgersPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" ConwayUtxowPredFailure DijkstraEra where
  injectFailure :: ConwayUtxowPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (ConwayUtxowPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> ConwayUtxowPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure DijkstraEra
 -> ShelleyBbodyPredFailure DijkstraEra)
-> (ConwayUtxowPredFailure DijkstraEra
    -> ShelleyLedgersPredFailure DijkstraEra)
-> ConwayUtxowPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayUtxowPredFailure DijkstraEra
-> EraRuleFailure "LEDGERS" DijkstraEra
ConwayUtxowPredFailure DijkstraEra
-> ShelleyLedgersPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

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

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

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

instance InjectRuleFailure "BBODY" ConwayUtxoPredFailure DijkstraEra where
  injectFailure :: ConwayUtxoPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (ConwayUtxoPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> ConwayUtxoPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure DijkstraEra
 -> ShelleyBbodyPredFailure DijkstraEra)
-> (ConwayUtxoPredFailure DijkstraEra
    -> ShelleyLedgersPredFailure DijkstraEra)
-> ConwayUtxoPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayUtxoPredFailure DijkstraEra
-> EraRuleFailure "LEDGERS" DijkstraEra
ConwayUtxoPredFailure DijkstraEra
-> ShelleyLedgersPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

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

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

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

instance InjectRuleFailure "BBODY" ConwayUtxosPredFailure DijkstraEra where
  injectFailure :: ConwayUtxosPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (ConwayUtxosPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> ConwayUtxosPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure DijkstraEra
 -> ShelleyBbodyPredFailure DijkstraEra)
-> (ConwayUtxosPredFailure DijkstraEra
    -> ShelleyLedgersPredFailure DijkstraEra)
-> ConwayUtxosPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayUtxosPredFailure DijkstraEra
-> EraRuleFailure "LEDGERS" DijkstraEra
ConwayUtxosPredFailure DijkstraEra
-> ShelleyLedgersPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

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

instance InjectRuleFailure "BBODY" AllegraUtxoPredFailure DijkstraEra where
  injectFailure :: AllegraUtxoPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (AllegraUtxoPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> AllegraUtxoPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure DijkstraEra
 -> ShelleyBbodyPredFailure DijkstraEra)
-> (AllegraUtxoPredFailure DijkstraEra
    -> ShelleyLedgersPredFailure DijkstraEra)
-> AllegraUtxoPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllegraUtxoPredFailure DijkstraEra
-> EraRuleFailure "LEDGERS" DijkstraEra
AllegraUtxoPredFailure DijkstraEra
-> ShelleyLedgersPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" ConwayCertsPredFailure DijkstraEra where
  injectFailure :: ConwayCertsPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (ConwayCertsPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> ConwayCertsPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure DijkstraEra
 -> ShelleyBbodyPredFailure DijkstraEra)
-> (ConwayCertsPredFailure DijkstraEra
    -> ShelleyLedgersPredFailure DijkstraEra)
-> ConwayCertsPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayCertsPredFailure DijkstraEra
-> EraRuleFailure "LEDGERS" DijkstraEra
ConwayCertsPredFailure DijkstraEra
-> ShelleyLedgersPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" ConwayCertPredFailure DijkstraEra where
  injectFailure :: ConwayCertPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (ConwayCertPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> ConwayCertPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure DijkstraEra
 -> ShelleyBbodyPredFailure DijkstraEra)
-> (ConwayCertPredFailure DijkstraEra
    -> ShelleyLedgersPredFailure DijkstraEra)
-> ConwayCertPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayCertPredFailure DijkstraEra
-> EraRuleFailure "LEDGERS" DijkstraEra
ConwayCertPredFailure DijkstraEra
-> ShelleyLedgersPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" ConwayDelegPredFailure DijkstraEra where
  injectFailure :: ConwayDelegPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (ConwayDelegPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> ConwayDelegPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure DijkstraEra
 -> ShelleyBbodyPredFailure DijkstraEra)
-> (ConwayDelegPredFailure DijkstraEra
    -> ShelleyLedgersPredFailure DijkstraEra)
-> ConwayDelegPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayDelegPredFailure DijkstraEra
-> EraRuleFailure "LEDGERS" DijkstraEra
ConwayDelegPredFailure DijkstraEra
-> ShelleyLedgersPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

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

instance InjectRuleFailure "BBODY" ConwayGovCertPredFailure DijkstraEra where
  injectFailure :: ConwayGovCertPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (ConwayGovCertPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> ConwayGovCertPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure DijkstraEra
 -> ShelleyBbodyPredFailure DijkstraEra)
-> (ConwayGovCertPredFailure DijkstraEra
    -> ShelleyLedgersPredFailure DijkstraEra)
-> ConwayGovCertPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayGovCertPredFailure DijkstraEra
-> EraRuleFailure "LEDGERS" DijkstraEra
ConwayGovCertPredFailure DijkstraEra
-> ShelleyLedgersPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "BBODY" ConwayGovPredFailure DijkstraEra where
  injectFailure :: ConwayGovPredFailure DijkstraEra
-> EraRuleFailure "BBODY" DijkstraEra
injectFailure = ShelleyBbodyPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall era.
ShelleyBbodyPredFailure era -> ConwayBbodyPredFailure era
shelleyToConwayBbodyPredFailure (ShelleyBbodyPredFailure DijkstraEra
 -> ConwayBbodyPredFailure DijkstraEra)
-> (ConwayGovPredFailure DijkstraEra
    -> ShelleyBbodyPredFailure DijkstraEra)
-> ConwayGovPredFailure DijkstraEra
-> ConwayBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "LEDGERS" DijkstraEra)
-> ShelleyBbodyPredFailure DijkstraEra
ShelleyLedgersPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure (ShelleyLedgersPredFailure DijkstraEra
 -> ShelleyBbodyPredFailure DijkstraEra)
-> (ConwayGovPredFailure DijkstraEra
    -> ShelleyLedgersPredFailure DijkstraEra)
-> ConwayGovPredFailure DijkstraEra
-> ShelleyBbodyPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayGovPredFailure DijkstraEra
-> EraRuleFailure "LEDGERS" DijkstraEra
ConwayGovPredFailure DijkstraEra
-> ShelleyLedgersPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure