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

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

import qualified Cardano.Ledger.Allegra.Rules as Allegra
import qualified Cardano.Ledger.Alonzo.Rules as Alonzo
import Cardano.Ledger.Babbage.Era (BabbageEra)
import Cardano.Ledger.Babbage.Rules.Ledger ()
import Cardano.Ledger.Babbage.Rules.Utxo (BabbageUtxoPredFailure)
import Cardano.Ledger.Babbage.Rules.Utxow (BabbageUtxowPredFailure)
import Cardano.Ledger.Core
import qualified Cardano.Ledger.Shelley.Rules as Shelley

type instance EraRuleFailure "LEDGERS" BabbageEra = Shelley.ShelleyLedgersPredFailure BabbageEra

instance InjectRuleFailure "LEDGERS" Shelley.ShelleyLedgersPredFailure BabbageEra

instance InjectRuleFailure "LEDGERS" Shelley.ShelleyLedgerPredFailure BabbageEra where
  injectFailure :: ShelleyLedgerPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
injectFailure = PredicateFailure (EraRule "LEDGER" BabbageEra)
-> ShelleyLedgersPredFailure BabbageEra
ShelleyLedgerPredFailure BabbageEra
-> EraRuleFailure "LEDGERS" BabbageEra
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
Shelley.LedgerFailure

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

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

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

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

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

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

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

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

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

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

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

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

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