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

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

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

type instance EraRuleFailure "DELEGS" AllegraEra = ShelleyDelegsPredFailure AllegraEra

instance InjectRuleFailure "DELEGS" ShelleyDelegsPredFailure AllegraEra

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

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

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