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

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

import Cardano.Ledger.Allegra.Era (AllegraEra)
import Cardano.Ledger.Allegra.Rules.Ledger ()
import Cardano.Ledger.Core
import Cardano.Ledger.Shelley.Rules (
  ShelleyDelegPredFailure,
  ShelleyDelegsPredFailure,
  ShelleyDelplPredFailure,
  ShelleyLedgerPredFailure,
  ShelleyLedgersPredFailure (..),
  ShelleyPoolPredFailure,
  ShelleyPpupPredFailure,
  ShelleyUtxoPredFailure,
  ShelleyUtxowPredFailure,
 )

type instance EraRuleFailure "LEDGERS" AllegraEra = ShelleyLedgersPredFailure AllegraEra

instance InjectRuleFailure "LEDGERS" ShelleyLedgersPredFailure AllegraEra

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

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

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

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

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

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

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

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