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

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

import Cardano.Ledger.Core
import Cardano.Ledger.Mary.Era (MaryEra)
import Cardano.Ledger.Mary.Rules.Ledgers ()
import qualified Cardano.Ledger.Shelley.Rules as Shelley

type instance EraRuleFailure "BBODY" MaryEra = Shelley.ShelleyBbodyPredFailure MaryEra

instance InjectRuleFailure "BBODY" Shelley.ShelleyBbodyPredFailure MaryEra

instance InjectRuleFailure "BBODY" Shelley.ShelleyLedgersPredFailure MaryEra where
  injectFailure :: ShelleyLedgersPredFailure MaryEra -> EraRuleFailure "BBODY" MaryEra
injectFailure = PredicateFailure (EraRule "LEDGERS" MaryEra)
-> ShelleyBbodyPredFailure MaryEra
ShelleyLedgersPredFailure MaryEra -> EraRuleFailure "BBODY" MaryEra
forall era.
PredicateFailure (EraRule "LEDGERS" era)
-> ShelleyBbodyPredFailure era
Shelley.LedgersFailure

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

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

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

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

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

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

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

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