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

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

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

type instance EraRuleFailure "UTXO" MaryEra = Allegra.AllegraUtxoPredFailure MaryEra

instance InjectRuleFailure "UTXO" Allegra.AllegraUtxoPredFailure MaryEra

instance InjectRuleFailure "UTXO" Shelley.ShelleyUtxoPredFailure MaryEra where
  injectFailure :: ShelleyUtxoPredFailure MaryEra -> EraRuleFailure "UTXO" MaryEra
injectFailure = ShelleyUtxoPredFailure MaryEra -> AllegraUtxoPredFailure MaryEra
ShelleyUtxoPredFailure MaryEra -> EraRuleFailure "UTXO" MaryEra
forall era.
ShelleyUtxoPredFailure era -> AllegraUtxoPredFailure era
Allegra.shelleyToAllegraUtxoPredFailure

instance InjectRuleFailure "UTXO" Shelley.ShelleyPpupPredFailure MaryEra where
  injectFailure :: ShelleyPpupPredFailure MaryEra -> EraRuleFailure "UTXO" MaryEra
injectFailure = EraRuleFailure "PPUP" MaryEra -> AllegraUtxoPredFailure MaryEra
ShelleyPpupPredFailure MaryEra -> EraRuleFailure "UTXO" MaryEra
forall era. EraRuleFailure "PPUP" era -> AllegraUtxoPredFailure era
Allegra.UpdateFailure