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

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

import Cardano.Ledger.Core
import Cardano.Ledger.Mary.Era (MaryEra)
import Cardano.Ledger.Mary.Rules.Delpl ()
import Cardano.Ledger.Shelley.Rules (
  ShelleyDelegPredFailure,
  ShelleyDelegsPredFailure (..),
  ShelleyDelplPredFailure,
  ShelleyPoolPredFailure,
 )

type instance EraRuleFailure "DELEGS" MaryEra = ShelleyDelegsPredFailure MaryEra

instance InjectRuleFailure "DELEGS" ShelleyDelegsPredFailure MaryEra

instance InjectRuleFailure "DELEGS" ShelleyDelplPredFailure MaryEra where
  injectFailure :: ShelleyDelplPredFailure MaryEra -> EraRuleFailure "DELEGS" MaryEra
injectFailure = PredicateFailure (EraRule "DELPL" MaryEra)
-> ShelleyDelegsPredFailure MaryEra
ShelleyDelplPredFailure MaryEra -> EraRuleFailure "DELEGS" MaryEra
forall era.
PredicateFailure (EraRule "DELPL" era)
-> ShelleyDelegsPredFailure era
DelplFailure

instance InjectRuleFailure "DELEGS" ShelleyPoolPredFailure MaryEra where
  injectFailure :: ShelleyPoolPredFailure MaryEra -> EraRuleFailure "DELEGS" MaryEra
injectFailure = PredicateFailure (EraRule "DELPL" MaryEra)
-> ShelleyDelegsPredFailure MaryEra
ShelleyDelplPredFailure MaryEra -> ShelleyDelegsPredFailure MaryEra
forall era.
PredicateFailure (EraRule "DELPL" era)
-> ShelleyDelegsPredFailure era
DelplFailure (ShelleyDelplPredFailure MaryEra
 -> ShelleyDelegsPredFailure MaryEra)
-> (ShelleyPoolPredFailure MaryEra
    -> ShelleyDelplPredFailure MaryEra)
-> ShelleyPoolPredFailure MaryEra
-> ShelleyDelegsPredFailure MaryEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyPoolPredFailure MaryEra -> EraRuleFailure "DELPL" MaryEra
ShelleyPoolPredFailure MaryEra -> ShelleyDelplPredFailure MaryEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "DELEGS" ShelleyDelegPredFailure MaryEra where
  injectFailure :: ShelleyDelegPredFailure MaryEra -> EraRuleFailure "DELEGS" MaryEra
injectFailure = PredicateFailure (EraRule "DELPL" MaryEra)
-> ShelleyDelegsPredFailure MaryEra
ShelleyDelplPredFailure MaryEra -> ShelleyDelegsPredFailure MaryEra
forall era.
PredicateFailure (EraRule "DELPL" era)
-> ShelleyDelegsPredFailure era
DelplFailure (ShelleyDelplPredFailure MaryEra
 -> ShelleyDelegsPredFailure MaryEra)
-> (ShelleyDelegPredFailure MaryEra
    -> ShelleyDelplPredFailure MaryEra)
-> ShelleyDelegPredFailure MaryEra
-> ShelleyDelegsPredFailure MaryEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyDelegPredFailure MaryEra -> EraRuleFailure "DELPL" MaryEra
ShelleyDelegPredFailure MaryEra -> ShelleyDelplPredFailure MaryEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure