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

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

import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure)
import Cardano.Ledger.Alonzo.Rules (
  AlonzoUtxoPredFailure,
  AlonzoUtxosPredFailure,
  AlonzoUtxowPredFailure,
 )
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 Cardano.Ledger.Shelley.Rules (
  ShelleyDelegPredFailure,
  ShelleyDelegsPredFailure,
  ShelleyDelplPredFailure,
  ShelleyLedgerPredFailure,
  ShelleyLedgersPredFailure (..),
  ShelleyPoolPredFailure,
  ShelleyPpupPredFailure,
  ShelleyUtxoPredFailure,
  ShelleyUtxowPredFailure,
 )

type instance EraRuleFailure "LEDGERS" BabbageEra = ShelleyLedgersPredFailure BabbageEra

instance InjectRuleFailure "LEDGERS" ShelleyLedgersPredFailure BabbageEra

instance InjectRuleFailure "LEDGERS" 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
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
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" 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
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" 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
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
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" 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
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" 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
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" 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
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" 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
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" 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
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" 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
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" 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
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" 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
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" 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
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