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

module Cardano.Ledger.Dijkstra.Rules.Utxos () where

import qualified Cardano.Ledger.Alonzo.Rules as Alonzo
import qualified Cardano.Ledger.Conway.Rules as Conway
import Cardano.Ledger.Dijkstra.Core (
  EraRuleEvent,
  EraRuleFailure,
  InjectRuleEvent (..),
  InjectRuleFailure (..),
 )
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)

type instance EraRuleFailure "UTXOS" DijkstraEra = Conway.ConwayUtxosPredFailure DijkstraEra

type instance EraRuleEvent "UTXOS" DijkstraEra = Conway.ConwayUtxosEvent DijkstraEra

instance InjectRuleFailure "UTXOS" Conway.ConwayUtxosPredFailure DijkstraEra

instance InjectRuleEvent "UTXOS" Conway.ConwayUtxosEvent DijkstraEra

instance InjectRuleFailure "UTXOS" Alonzo.AlonzoUtxosPredFailure DijkstraEra where
  injectFailure :: AlonzoUtxosPredFailure DijkstraEra
-> EraRuleFailure "UTXOS" DijkstraEra
injectFailure = AlonzoUtxosPredFailure DijkstraEra
-> EraRuleFailure "UTXOS" DijkstraEra
AlonzoUtxosPredFailure DijkstraEra
-> ConwayUtxosPredFailure DijkstraEra
forall era.
(EraRuleFailure "PPUP" era ~ VoidEraRule "PPUP" era) =>
AlonzoUtxosPredFailure era -> ConwayUtxosPredFailure era
Conway.alonzoToConwayUtxosPredFailure

instance InjectRuleEvent "UTXOS" Alonzo.AlonzoUtxosEvent DijkstraEra where
  injectEvent :: AlonzoUtxosEvent DijkstraEra -> EraRuleEvent "UTXOS" DijkstraEra
injectEvent = AlonzoUtxosEvent DijkstraEra -> EraRuleEvent "UTXOS" DijkstraEra
AlonzoUtxosEvent DijkstraEra -> ConwayUtxosEvent DijkstraEra
forall era.
(EraRuleEvent "PPUP" era ~ VoidEraRule "PPUP" era) =>
AlonzoUtxosEvent era -> ConwayUtxosEvent era
Conway.alonzoToConwayUtxosEvent