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

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

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

type instance EraRuleFailure "UTXOW" MaryEra = Shelley.ShelleyUtxowPredFailure MaryEra

instance InjectRuleFailure "UTXOW" Shelley.ShelleyUtxowPredFailure MaryEra

instance InjectRuleFailure "UTXOW" Allegra.AllegraUtxoPredFailure MaryEra where
  injectFailure :: AllegraUtxoPredFailure MaryEra -> EraRuleFailure "UTXOW" MaryEra
injectFailure = AllegraUtxoPredFailure MaryEra -> EraRuleFailure "UTXOW" MaryEra
PredicateFailure (EraRule "UTXO" MaryEra)
-> ShelleyUtxowPredFailure MaryEra
forall era.
PredicateFailure (EraRule "UTXO" era)
-> ShelleyUtxowPredFailure era
Shelley.UtxoFailure

instance InjectRuleFailure "UTXOW" Shelley.ShelleyUtxoPredFailure MaryEra where
  injectFailure :: ShelleyUtxoPredFailure MaryEra -> EraRuleFailure "UTXOW" MaryEra
injectFailure = AllegraUtxoPredFailure MaryEra -> ShelleyUtxowPredFailure MaryEra
PredicateFailure (EraRule "UTXO" MaryEra)
-> ShelleyUtxowPredFailure MaryEra
forall era.
PredicateFailure (EraRule "UTXO" era)
-> ShelleyUtxowPredFailure era
Shelley.UtxoFailure (AllegraUtxoPredFailure MaryEra -> ShelleyUtxowPredFailure MaryEra)
-> (ShelleyUtxoPredFailure MaryEra
    -> AllegraUtxoPredFailure MaryEra)
-> ShelleyUtxoPredFailure MaryEra
-> ShelleyUtxowPredFailure MaryEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxoPredFailure MaryEra -> AllegraUtxoPredFailure MaryEra
ShelleyUtxoPredFailure MaryEra -> EraRuleFailure "UTXO" MaryEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "UTXOW" Shelley.ShelleyPpupPredFailure MaryEra where
  injectFailure :: ShelleyPpupPredFailure MaryEra -> EraRuleFailure "UTXOW" MaryEra
injectFailure = AllegraUtxoPredFailure MaryEra -> ShelleyUtxowPredFailure MaryEra
PredicateFailure (EraRule "UTXO" MaryEra)
-> ShelleyUtxowPredFailure MaryEra
forall era.
PredicateFailure (EraRule "UTXO" era)
-> ShelleyUtxowPredFailure era
Shelley.UtxoFailure (AllegraUtxoPredFailure MaryEra -> ShelleyUtxowPredFailure MaryEra)
-> (ShelleyPpupPredFailure MaryEra
    -> AllegraUtxoPredFailure MaryEra)
-> ShelleyPpupPredFailure MaryEra
-> ShelleyUtxowPredFailure MaryEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyPpupPredFailure MaryEra -> AllegraUtxoPredFailure MaryEra
ShelleyPpupPredFailure MaryEra -> EraRuleFailure "UTXO" MaryEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure