{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Dijkstra.Rules.Ledger (
  DijkstraLEDGER,
  DijkstraLedgerPredFailure (..),
  conwayToDijkstraLedgerPredFailure,
) where

import Cardano.Ledger.Address (RewardAccount (..))
import Cardano.Ledger.Allegra.Rules (AllegraUtxoPredFailure)
import Cardano.Ledger.Alonzo (AlonzoScript)
import Cardano.Ledger.Alonzo.Rules (
  AlonzoUtxoPredFailure,
  AlonzoUtxosPredFailure,
  AlonzoUtxowEvent,
  AlonzoUtxowPredFailure,
 )
import Cardano.Ledger.Alonzo.UTxO (AlonzoScriptsNeeded)
import Cardano.Ledger.Babbage (BabbageTxOut)
import Cardano.Ledger.Babbage.Rules (
  BabbageUtxoPredFailure,
  BabbageUtxowPredFailure,
 )
import Cardano.Ledger.BaseTypes (
  Mismatch (..),
  Relation (..),
  ShelleyBase,
 )
import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..))
import Cardano.Ledger.Binary.Coders
import Cardano.Ledger.Coin (Coin)
import Cardano.Ledger.Conway.Core
import Cardano.Ledger.Conway.Governance (
  ConwayEraGov (..),
  ConwayGovState,
  Proposals,
 )
import Cardano.Ledger.Conway.Rules (
  CertEnv,
  CertsEnv (..),
  ConwayCERTS,
  ConwayCertEvent (..),
  ConwayCertPredFailure (..),
  ConwayCertsEvent (..),
  ConwayCertsPredFailure (..),
  ConwayDELEG,
  ConwayDelegPredFailure,
  ConwayGovCertPredFailure,
  ConwayGovEvent,
  ConwayGovPredFailure,
  ConwayLedgerEvent (..),
  ConwayLedgerPredFailure,
  ConwayUtxoPredFailure,
  ConwayUtxosPredFailure,
  ConwayUtxowPredFailure,
  GovEnv (..),
  GovSignal (..),
  conwayLedgerTransition,
  shelleyToConwayLedgerPredFailure,
 )
import qualified Cardano.Ledger.Conway.Rules as Conway
import Cardano.Ledger.Conway.State
import Cardano.Ledger.Dijkstra.Era (DijkstraEra, DijkstraGOV, DijkstraLEDGER, DijkstraUTXOW)
import Cardano.Ledger.Dijkstra.Rules.Certs ()
import Cardano.Ledger.Dijkstra.Rules.Gov (DijkstraGovPredFailure)
import Cardano.Ledger.Dijkstra.Rules.GovCert (DijkstraGovCertPredFailure)
import Cardano.Ledger.Dijkstra.Rules.Utxo (DijkstraUtxoPredFailure)
import Cardano.Ledger.Dijkstra.Rules.Utxow (DijkstraUtxowPredFailure)
import Cardano.Ledger.Shelley.LedgerState (
  LedgerState (..),
  UTxOState (..),
 )
import Cardano.Ledger.Shelley.Rules (
  LedgerEnv (..),
  ShelleyLEDGERS,
  ShelleyLedgerPredFailure (..),
  ShelleyLedgersEvent (LedgerEvent),
  ShelleyLedgersPredFailure (LedgerFailure),
  ShelleyPoolPredFailure,
  ShelleyUtxoPredFailure,
  ShelleyUtxowPredFailure,
  UtxoEnv (..),
  renderDepositEqualsObligationViolation,
  shelleyLedgerAssertions,
 )
import Control.DeepSeq (NFData)
import Control.State.Transition.Extended (
  Embed (..),
  STS (..),
 )
import Data.List.NonEmpty (NonEmpty)
import qualified Data.Map.Strict as Map
import Data.Sequence (Seq)
import Data.Text (Text)
import GHC.Generics (Generic (..))
import NoThunks.Class (NoThunks (..))

data DijkstraLedgerPredFailure era
  = DijkstraUtxowFailure (PredicateFailure (EraRule "UTXOW" era))
  | DijkstraCertsFailure (PredicateFailure (EraRule "CERTS" era))
  | DijkstraGovFailure (PredicateFailure (EraRule "GOV" era))
  | DijkstraWdrlNotDelegatedToDRep (NonEmpty (KeyHash Staking))
  | DijkstraTreasuryValueMismatch (Mismatch RelEQ Coin)
  | DijkstraTxRefScriptsSizeTooBig (Mismatch RelLTEQ Int)
  | DijkstraMempoolFailure Text
  | DijkstraWithdrawalsMissingAccounts Withdrawals
  | DijkstraIncompleteWithdrawals (Map.Map RewardAccount (Mismatch RelEQ Coin))
  deriving ((forall x.
 DijkstraLedgerPredFailure era
 -> Rep (DijkstraLedgerPredFailure era) x)
-> (forall x.
    Rep (DijkstraLedgerPredFailure era) x
    -> DijkstraLedgerPredFailure era)
-> Generic (DijkstraLedgerPredFailure era)
forall x.
Rep (DijkstraLedgerPredFailure era) x
-> DijkstraLedgerPredFailure era
forall x.
DijkstraLedgerPredFailure era
-> Rep (DijkstraLedgerPredFailure era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraLedgerPredFailure era) x
-> DijkstraLedgerPredFailure era
forall era x.
DijkstraLedgerPredFailure era
-> Rep (DijkstraLedgerPredFailure era) x
$cfrom :: forall era x.
DijkstraLedgerPredFailure era
-> Rep (DijkstraLedgerPredFailure era) x
from :: forall x.
DijkstraLedgerPredFailure era
-> Rep (DijkstraLedgerPredFailure era) x
$cto :: forall era x.
Rep (DijkstraLedgerPredFailure era) x
-> DijkstraLedgerPredFailure era
to :: forall x.
Rep (DijkstraLedgerPredFailure era) x
-> DijkstraLedgerPredFailure era
Generic)

type instance EraRuleFailure "LEDGER" DijkstraEra = DijkstraLedgerPredFailure DijkstraEra

type instance EraRuleEvent "LEDGER" DijkstraEra = ConwayLedgerEvent DijkstraEra

instance InjectRuleFailure "LEDGER" DijkstraLedgerPredFailure DijkstraEra

instance InjectRuleFailure "LEDGER" ConwayLedgerPredFailure DijkstraEra where
  injectFailure :: ConwayLedgerPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = ConwayLedgerPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
ConwayLedgerPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
ConwayLedgerPredFailure era -> DijkstraLedgerPredFailure era
conwayToDijkstraLedgerPredFailure

instance InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure DijkstraEra where
  injectFailure :: ShelleyLedgerPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = ConwayLedgerPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
ConwayLedgerPredFailure era -> DijkstraLedgerPredFailure era
conwayToDijkstraLedgerPredFailure (ConwayLedgerPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ShelleyLedgerPredFailure DijkstraEra
    -> ConwayLedgerPredFailure DijkstraEra)
-> ShelleyLedgerPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyLedgerPredFailure DijkstraEra
-> ConwayLedgerPredFailure DijkstraEra
forall era.
ShelleyLedgerPredFailure era -> ConwayLedgerPredFailure era
shelleyToConwayLedgerPredFailure

instance InjectRuleFailure "LEDGER" DijkstraUtxowPredFailure DijkstraEra where
  injectFailure :: DijkstraUtxowPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure

instance InjectRuleFailure "LEDGER" ConwayUtxowPredFailure DijkstraEra where
  injectFailure :: ConwayUtxowPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ConwayUtxowPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> ConwayUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayUtxowPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
ConwayUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" BabbageUtxowPredFailure DijkstraEra where
  injectFailure :: BabbageUtxowPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (BabbageUtxowPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> BabbageUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BabbageUtxowPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
BabbageUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure DijkstraEra where
  injectFailure :: AlonzoUtxowPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (AlonzoUtxowPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> AlonzoUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxowPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
AlonzoUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure DijkstraEra where
  injectFailure :: ShelleyUtxowPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ShelleyUtxowPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> ShelleyUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxowPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
ShelleyUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" DijkstraUtxoPredFailure DijkstraEra where
  injectFailure :: DijkstraUtxoPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (DijkstraUtxoPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> DijkstraUtxoPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DijkstraUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
DijkstraUtxoPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" ConwayUtxoPredFailure DijkstraEra where
  injectFailure :: ConwayUtxoPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ConwayUtxoPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> ConwayUtxoPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
ConwayUtxoPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" BabbageUtxoPredFailure DijkstraEra where
  injectFailure :: BabbageUtxoPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (BabbageUtxoPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> BabbageUtxoPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BabbageUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
BabbageUtxoPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure DijkstraEra where
  injectFailure :: AlonzoUtxoPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (AlonzoUtxoPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> AlonzoUtxoPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
AlonzoUtxoPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure DijkstraEra where
  injectFailure :: AlonzoUtxosPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (AlonzoUtxosPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> AlonzoUtxosPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxosPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
AlonzoUtxosPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" ConwayUtxosPredFailure DijkstraEra where
  injectFailure :: ConwayUtxosPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ConwayUtxosPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> ConwayUtxosPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayUtxosPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
ConwayUtxosPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure DijkstraEra where
  injectFailure :: ShelleyUtxoPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ShelleyUtxoPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> ShelleyUtxoPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
ShelleyUtxoPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" AllegraUtxoPredFailure DijkstraEra where
  injectFailure :: AllegraUtxoPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "UTXOW" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraUtxowPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure (DijkstraUtxowPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (AllegraUtxoPredFailure DijkstraEra
    -> DijkstraUtxowPredFailure DijkstraEra)
-> AllegraUtxoPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AllegraUtxoPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
AllegraUtxoPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" ConwayCertsPredFailure DijkstraEra where
  injectFailure :: ConwayCertsPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "CERTS" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
ConwayCertsPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure

instance InjectRuleFailure "LEDGER" ConwayCertPredFailure DijkstraEra where
  injectFailure :: ConwayCertPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "CERTS" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
ConwayCertsPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure (ConwayCertsPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ConwayCertPredFailure DijkstraEra
    -> ConwayCertsPredFailure DijkstraEra)
-> ConwayCertPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayCertPredFailure DijkstraEra
-> EraRuleFailure "CERTS" DijkstraEra
ConwayCertPredFailure DijkstraEra
-> ConwayCertsPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" ConwayDelegPredFailure DijkstraEra where
  injectFailure :: ConwayDelegPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "CERTS" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
ConwayCertsPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure (ConwayCertsPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ConwayDelegPredFailure DijkstraEra
    -> ConwayCertsPredFailure DijkstraEra)
-> ConwayDelegPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayDelegPredFailure DijkstraEra
-> EraRuleFailure "CERTS" DijkstraEra
ConwayDelegPredFailure DijkstraEra
-> ConwayCertsPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" ShelleyPoolPredFailure DijkstraEra where
  injectFailure :: ShelleyPoolPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "CERTS" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
ConwayCertsPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure (ConwayCertsPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ShelleyPoolPredFailure DijkstraEra
    -> ConwayCertsPredFailure DijkstraEra)
-> ShelleyPoolPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyPoolPredFailure DijkstraEra
-> EraRuleFailure "CERTS" DijkstraEra
ShelleyPoolPredFailure DijkstraEra
-> ConwayCertsPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" DijkstraGovCertPredFailure DijkstraEra where
  injectFailure :: DijkstraGovCertPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "CERTS" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
ConwayCertsPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure (ConwayCertsPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (DijkstraGovCertPredFailure DijkstraEra
    -> ConwayCertsPredFailure DijkstraEra)
-> DijkstraGovCertPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DijkstraGovCertPredFailure DijkstraEra
-> EraRuleFailure "CERTS" DijkstraEra
DijkstraGovCertPredFailure DijkstraEra
-> ConwayCertsPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" DijkstraGovPredFailure DijkstraEra where
  injectFailure :: DijkstraGovPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "GOV" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraGovPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "GOV" era)
-> DijkstraLedgerPredFailure era
DijkstraGovFailure (DijkstraGovPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (DijkstraGovPredFailure DijkstraEra
    -> DijkstraGovPredFailure DijkstraEra)
-> DijkstraGovPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DijkstraGovPredFailure DijkstraEra
-> EraRuleFailure "GOV" DijkstraEra
DijkstraGovPredFailure DijkstraEra
-> DijkstraGovPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" ConwayGovCertPredFailure DijkstraEra where
  injectFailure :: ConwayGovCertPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "CERTS" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
ConwayCertsPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure (ConwayCertsPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ConwayGovCertPredFailure DijkstraEra
    -> ConwayCertsPredFailure DijkstraEra)
-> ConwayGovCertPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayGovCertPredFailure DijkstraEra
-> EraRuleFailure "CERTS" DijkstraEra
ConwayGovCertPredFailure DijkstraEra
-> ConwayCertsPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

instance InjectRuleFailure "LEDGER" ConwayGovPredFailure DijkstraEra where
  injectFailure :: ConwayGovPredFailure DijkstraEra
-> EraRuleFailure "LEDGER" DijkstraEra
injectFailure = PredicateFailure (EraRule "GOV" DijkstraEra)
-> DijkstraLedgerPredFailure DijkstraEra
DijkstraGovPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall era.
PredicateFailure (EraRule "GOV" era)
-> DijkstraLedgerPredFailure era
DijkstraGovFailure (DijkstraGovPredFailure DijkstraEra
 -> DijkstraLedgerPredFailure DijkstraEra)
-> (ConwayGovPredFailure DijkstraEra
    -> DijkstraGovPredFailure DijkstraEra)
-> ConwayGovPredFailure DijkstraEra
-> DijkstraLedgerPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayGovPredFailure DijkstraEra
-> EraRuleFailure "GOV" DijkstraEra
ConwayGovPredFailure DijkstraEra
-> DijkstraGovPredFailure DijkstraEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure

deriving instance
  ( Era era
  , Eq (PredicateFailure (EraRule "UTXOW" era))
  , Eq (PredicateFailure (EraRule "CERTS" era))
  , Eq (PredicateFailure (EraRule "GOV" era))
  ) =>
  Eq (DijkstraLedgerPredFailure era)

deriving instance
  ( Era era
  , Show (PredicateFailure (EraRule "UTXOW" era))
  , Show (PredicateFailure (EraRule "CERTS" era))
  , Show (PredicateFailure (EraRule "GOV" era))
  ) =>
  Show (DijkstraLedgerPredFailure era)

instance
  ( Era era
  , NoThunks (PredicateFailure (EraRule "UTXOW" era))
  , NoThunks (PredicateFailure (EraRule "CERTS" era))
  , NoThunks (PredicateFailure (EraRule "GOV" era))
  ) =>
  NoThunks (DijkstraLedgerPredFailure era)

instance
  ( Era era
  , NFData (PredicateFailure (EraRule "UTXOW" era))
  , NFData (PredicateFailure (EraRule "CERTS" era))
  , NFData (PredicateFailure (EraRule "GOV" era))
  ) =>
  NFData (DijkstraLedgerPredFailure era)

instance
  ( Era era
  , EncCBOR (PredicateFailure (EraRule "UTXOW" era))
  , EncCBOR (PredicateFailure (EraRule "CERTS" era))
  , EncCBOR (PredicateFailure (EraRule "GOV" era))
  ) =>
  EncCBOR (DijkstraLedgerPredFailure era)
  where
  encCBOR :: DijkstraLedgerPredFailure era -> Encoding
encCBOR =
    Encode Open (DijkstraLedgerPredFailure era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode Open (DijkstraLedgerPredFailure era) -> Encoding)
-> (DijkstraLedgerPredFailure era
    -> Encode Open (DijkstraLedgerPredFailure era))
-> DijkstraLedgerPredFailure era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
      DijkstraUtxowFailure PredicateFailure (EraRule "UTXOW" era)
x -> (PredicateFailure (EraRule "UTXOW" era)
 -> DijkstraLedgerPredFailure era)
-> Word
-> Encode
     Open
     (PredicateFailure (EraRule "UTXOW" era)
      -> DijkstraLedgerPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure @era) Word
1 Encode
  Open
  (PredicateFailure (EraRule "UTXOW" era)
   -> DijkstraLedgerPredFailure era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "UTXOW" era))
-> Encode Open (DijkstraLedgerPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> PredicateFailure (EraRule "UTXOW" era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "UTXOW" era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To PredicateFailure (EraRule "UTXOW" era)
x
      DijkstraCertsFailure PredicateFailure (EraRule "CERTS" era)
x -> (PredicateFailure (EraRule "CERTS" era)
 -> DijkstraLedgerPredFailure era)
-> Word
-> Encode
     Open
     (PredicateFailure (EraRule "CERTS" era)
      -> DijkstraLedgerPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure @era) Word
2 Encode
  Open
  (PredicateFailure (EraRule "CERTS" era)
   -> DijkstraLedgerPredFailure era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "CERTS" era))
-> Encode Open (DijkstraLedgerPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> PredicateFailure (EraRule "CERTS" era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "CERTS" era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To PredicateFailure (EraRule "CERTS" era)
x
      DijkstraGovFailure PredicateFailure (EraRule "GOV" era)
x -> (PredicateFailure (EraRule "GOV" era)
 -> DijkstraLedgerPredFailure era)
-> Word
-> Encode
     Open
     (PredicateFailure (EraRule "GOV" era)
      -> DijkstraLedgerPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
PredicateFailure (EraRule "GOV" era)
-> DijkstraLedgerPredFailure era
DijkstraGovFailure @era) Word
3 Encode
  Open
  (PredicateFailure (EraRule "GOV" era)
   -> DijkstraLedgerPredFailure era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "GOV" era))
-> Encode Open (DijkstraLedgerPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> PredicateFailure (EraRule "GOV" era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "GOV" era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To PredicateFailure (EraRule "GOV" era)
x
      DijkstraWdrlNotDelegatedToDRep NonEmpty (KeyHash Staking)
x -> (NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era)
-> Word
-> Encode
     Open (NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era
DijkstraWdrlNotDelegatedToDRep @era) Word
4 Encode
  Open (NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era)
-> Encode (Closed Dense) (NonEmpty (KeyHash Staking))
-> Encode Open (DijkstraLedgerPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (KeyHash Staking)
-> Encode (Closed Dense) (NonEmpty (KeyHash Staking))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (KeyHash Staking)
x
      DijkstraTreasuryValueMismatch Mismatch RelEQ Coin
mm -> (Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era)
-> Word
-> Encode
     Open (Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era. Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era
DijkstraTreasuryValueMismatch @era) Word
5 Encode Open (Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era)
-> Encode (Closed Dense) (Mismatch RelEQ Coin)
-> Encode Open (DijkstraLedgerPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelEQ Coin -> Encode (Closed Dense) (Mismatch RelEQ Coin)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelEQ Coin
mm
      DijkstraTxRefScriptsSizeTooBig Mismatch RelLTEQ Int
mm -> (Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era)
-> Word
-> Encode
     Open (Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era
forall era. Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era
DijkstraTxRefScriptsSizeTooBig Word
6 Encode Open (Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era)
-> Encode (Closed Dense) (Mismatch RelLTEQ Int)
-> Encode Open (DijkstraLedgerPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelLTEQ Int
-> Encode (Closed Dense) (Mismatch RelLTEQ Int)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelLTEQ Int
mm
      DijkstraMempoolFailure Text
t -> (Text -> DijkstraLedgerPredFailure era)
-> Word -> Encode Open (Text -> DijkstraLedgerPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Text -> DijkstraLedgerPredFailure era
forall era. Text -> DijkstraLedgerPredFailure era
DijkstraMempoolFailure Word
7 Encode Open (Text -> DijkstraLedgerPredFailure era)
-> Encode (Closed Dense) Text
-> Encode Open (DijkstraLedgerPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Text -> Encode (Closed Dense) Text
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Text
t
      DijkstraWithdrawalsMissingAccounts Withdrawals
w -> (Withdrawals -> DijkstraLedgerPredFailure era)
-> Word
-> Encode Open (Withdrawals -> DijkstraLedgerPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Withdrawals -> DijkstraLedgerPredFailure era
forall era. Withdrawals -> DijkstraLedgerPredFailure era
DijkstraWithdrawalsMissingAccounts Word
8 Encode Open (Withdrawals -> DijkstraLedgerPredFailure era)
-> Encode (Closed Dense) Withdrawals
-> Encode Open (DijkstraLedgerPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Withdrawals -> Encode (Closed Dense) Withdrawals
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Withdrawals
w
      DijkstraIncompleteWithdrawals Map RewardAccount (Mismatch RelEQ Coin)
w -> (Map RewardAccount (Mismatch RelEQ Coin)
 -> DijkstraLedgerPredFailure era)
-> Word
-> Encode
     Open
     (Map RewardAccount (Mismatch RelEQ Coin)
      -> DijkstraLedgerPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Map RewardAccount (Mismatch RelEQ Coin)
-> DijkstraLedgerPredFailure era
forall era.
Map RewardAccount (Mismatch RelEQ Coin)
-> DijkstraLedgerPredFailure era
DijkstraIncompleteWithdrawals Word
9 Encode
  Open
  (Map RewardAccount (Mismatch RelEQ Coin)
   -> DijkstraLedgerPredFailure era)
-> Encode (Closed Dense) (Map RewardAccount (Mismatch RelEQ Coin))
-> Encode Open (DijkstraLedgerPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Map RewardAccount (Mismatch RelEQ Coin)
-> Encode (Closed Dense) (Map RewardAccount (Mismatch RelEQ Coin))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Map RewardAccount (Mismatch RelEQ Coin)
w

instance
  ( Era era
  , DecCBOR (PredicateFailure (EraRule "UTXOW" era))
  , DecCBOR (PredicateFailure (EraRule "CERTS" era))
  , DecCBOR (PredicateFailure (EraRule "GOV" era))
  ) =>
  DecCBOR (DijkstraLedgerPredFailure era)
  where
  decCBOR :: forall s. Decoder s (DijkstraLedgerPredFailure era)
decCBOR = Decode (Closed Dense) (DijkstraLedgerPredFailure era)
-> Decoder s (DijkstraLedgerPredFailure era)
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (DijkstraLedgerPredFailure era)
 -> Decoder s (DijkstraLedgerPredFailure era))
-> ((Word -> Decode Open (DijkstraLedgerPredFailure era))
    -> Decode (Closed Dense) (DijkstraLedgerPredFailure era))
-> (Word -> Decode Open (DijkstraLedgerPredFailure era))
-> Decoder s (DijkstraLedgerPredFailure era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text
-> (Word -> Decode Open (DijkstraLedgerPredFailure era))
-> Decode (Closed Dense) (DijkstraLedgerPredFailure era)
forall t.
Text -> (Word -> Decode Open t) -> Decode (Closed Dense) t
Summands Text
"DijkstraLedgerPredFailure" ((Word -> Decode Open (DijkstraLedgerPredFailure era))
 -> Decoder s (DijkstraLedgerPredFailure era))
-> (Word -> Decode Open (DijkstraLedgerPredFailure era))
-> Decoder s (DijkstraLedgerPredFailure era)
forall a b. (a -> b) -> a -> b
$ \case
    Word
1 -> (PredicateFailure (EraRule "UTXOW" era)
 -> DijkstraLedgerPredFailure era)
-> Decode
     Open
     (PredicateFailure (EraRule "UTXOW" era)
      -> DijkstraLedgerPredFailure era)
forall t. t -> Decode Open t
SumD PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure Decode
  Open
  (PredicateFailure (EraRule "UTXOW" era)
   -> DijkstraLedgerPredFailure era)
-> Decode
     (Closed (ZonkAny 0)) (PredicateFailure (EraRule "UTXOW" era))
-> Decode Open (DijkstraLedgerPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
  (Closed (ZonkAny 0)) (PredicateFailure (EraRule "UTXOW" era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
2 -> (PredicateFailure (EraRule "CERTS" era)
 -> DijkstraLedgerPredFailure era)
-> Decode
     Open
     (PredicateFailure (EraRule "CERTS" era)
      -> DijkstraLedgerPredFailure era)
forall t. t -> Decode Open t
SumD PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure Decode
  Open
  (PredicateFailure (EraRule "CERTS" era)
   -> DijkstraLedgerPredFailure era)
-> Decode
     (Closed (ZonkAny 1)) (PredicateFailure (EraRule "CERTS" era))
-> Decode Open (DijkstraLedgerPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
  (Closed (ZonkAny 1)) (PredicateFailure (EraRule "CERTS" era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
3 -> (PredicateFailure (EraRule "GOV" era)
 -> DijkstraLedgerPredFailure era)
-> Decode
     Open
     (PredicateFailure (EraRule "GOV" era)
      -> DijkstraLedgerPredFailure era)
forall t. t -> Decode Open t
SumD PredicateFailure (EraRule "GOV" era)
-> DijkstraLedgerPredFailure era
forall era.
PredicateFailure (EraRule "GOV" era)
-> DijkstraLedgerPredFailure era
DijkstraGovFailure Decode
  Open
  (PredicateFailure (EraRule "GOV" era)
   -> DijkstraLedgerPredFailure era)
-> Decode
     (Closed (ZonkAny 2)) (PredicateFailure (EraRule "GOV" era))
-> Decode Open (DijkstraLedgerPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 2)) (PredicateFailure (EraRule "GOV" era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
4 -> (NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era)
-> Decode
     Open (NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era
forall era.
NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era
DijkstraWdrlNotDelegatedToDRep Decode
  Open (NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era)
-> Decode (Closed (ZonkAny 3)) (NonEmpty (KeyHash Staking))
-> Decode Open (DijkstraLedgerPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 3)) (NonEmpty (KeyHash Staking))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
5 -> (Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era)
-> Decode
     Open (Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era
forall era. Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era
DijkstraTreasuryValueMismatch Decode Open (Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era)
-> Decode (Closed (ZonkAny 4)) (Mismatch RelEQ Coin)
-> Decode Open (DijkstraLedgerPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 4)) (Mismatch RelEQ Coin)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
6 -> (Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era)
-> Decode
     Open (Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era
forall era. Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era
DijkstraTxRefScriptsSizeTooBig Decode Open (Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era)
-> Decode (Closed (ZonkAny 5)) (Mismatch RelLTEQ Int)
-> Decode Open (DijkstraLedgerPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 5)) (Mismatch RelLTEQ Int)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
7 -> (Text -> DijkstraLedgerPredFailure era)
-> Decode Open (Text -> DijkstraLedgerPredFailure era)
forall t. t -> Decode Open t
SumD Text -> DijkstraLedgerPredFailure era
forall era. Text -> DijkstraLedgerPredFailure era
DijkstraMempoolFailure Decode Open (Text -> DijkstraLedgerPredFailure era)
-> Decode (Closed (ZonkAny 6)) Text
-> Decode Open (DijkstraLedgerPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 6)) Text
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
8 -> (Withdrawals -> DijkstraLedgerPredFailure era)
-> Decode Open (Withdrawals -> DijkstraLedgerPredFailure era)
forall t. t -> Decode Open t
SumD Withdrawals -> DijkstraLedgerPredFailure era
forall era. Withdrawals -> DijkstraLedgerPredFailure era
DijkstraWithdrawalsMissingAccounts Decode Open (Withdrawals -> DijkstraLedgerPredFailure era)
-> Decode (Closed (ZonkAny 7)) Withdrawals
-> Decode Open (DijkstraLedgerPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 7)) Withdrawals
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
9 -> (Map RewardAccount (Mismatch RelEQ Coin)
 -> DijkstraLedgerPredFailure era)
-> Decode
     Open
     (Map RewardAccount (Mismatch RelEQ Coin)
      -> DijkstraLedgerPredFailure era)
forall t. t -> Decode Open t
SumD Map RewardAccount (Mismatch RelEQ Coin)
-> DijkstraLedgerPredFailure era
forall era.
Map RewardAccount (Mismatch RelEQ Coin)
-> DijkstraLedgerPredFailure era
DijkstraIncompleteWithdrawals Decode
  Open
  (Map RewardAccount (Mismatch RelEQ Coin)
   -> DijkstraLedgerPredFailure era)
-> Decode
     (Closed (ZonkAny 8)) (Map RewardAccount (Mismatch RelEQ Coin))
-> Decode Open (DijkstraLedgerPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
  (Closed (ZonkAny 8)) (Map RewardAccount (Mismatch RelEQ Coin))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
n -> Word -> Decode Open (DijkstraLedgerPredFailure era)
forall (w :: Wrapped) t. Word -> Decode w t
Invalid Word
n

instance
  ( AlonzoEraTx era
  , ConwayEraTxBody era
  , ConwayEraGov era
  , GovState era ~ ConwayGovState era
  , Embed (EraRule "UTXOW" era) (DijkstraLEDGER era)
  , Embed (EraRule "GOV" era) (DijkstraLEDGER era)
  , Embed (EraRule "CERTS" era) (DijkstraLEDGER era)
  , State (EraRule "UTXOW" era) ~ UTxOState era
  , State (EraRule "CERTS" era) ~ CertState era
  , State (EraRule "GOV" era) ~ Proposals era
  , Environment (EraRule "UTXOW" era) ~ UtxoEnv era
  , Environment (EraRule "CERTS" era) ~ CertsEnv era
  , Environment (EraRule "GOV" era) ~ GovEnv era
  , Signal (EraRule "UTXOW" era) ~ Tx TopTx era
  , Signal (EraRule "CERTS" era) ~ Seq (TxCert era)
  , Signal (EraRule "GOV" era) ~ GovSignal era
  , ConwayEraCertState era
  , EraCertState era
  , EraRule "LEDGER" era ~ DijkstraLEDGER era
  , InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure era
  , InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era
  , InjectRuleFailure "LEDGER" DijkstraLedgerPredFailure era
  ) =>
  STS (DijkstraLEDGER era)
  where
  type State (DijkstraLEDGER era) = LedgerState era
  type Signal (DijkstraLEDGER era) = Tx TopTx era
  type Environment (DijkstraLEDGER era) = LedgerEnv era
  type BaseM (DijkstraLEDGER era) = ShelleyBase
  type PredicateFailure (DijkstraLEDGER era) = DijkstraLedgerPredFailure era
  type Event (DijkstraLEDGER era) = ConwayLedgerEvent era

  initialRules :: [InitialRule (DijkstraLEDGER era)]
initialRules = []
  transitionRules :: [TransitionRule (DijkstraLEDGER era)]
transitionRules = [forall (someLEDGER :: * -> *) era.
(AlonzoEraTx era, ConwayEraTxBody era, ConwayEraGov era,
 GovState era ~ ConwayGovState era,
 Signal (someLEDGER era) ~ Tx TopTx era,
 State (someLEDGER era) ~ LedgerState era,
 Environment (someLEDGER era) ~ LedgerEnv era,
 Embed (EraRule "UTXOW" era) (someLEDGER era),
 Embed (EraRule "GOV" era) (someLEDGER era),
 Embed (EraRule "CERTS" era) (someLEDGER era),
 State (EraRule "UTXOW" era) ~ UTxOState era,
 State (EraRule "CERTS" era) ~ CertState era,
 State (EraRule "GOV" era) ~ Proposals era,
 Environment (EraRule "UTXOW" era) ~ UtxoEnv era,
 Environment (EraRule "GOV" era) ~ GovEnv era,
 Environment (EraRule "CERTS" era) ~ CertsEnv era,
 Signal (EraRule "UTXOW" era) ~ Tx TopTx era,
 Signal (EraRule "CERTS" era) ~ Seq (TxCert era),
 Signal (EraRule "GOV" era) ~ GovSignal era,
 BaseM (someLEDGER era) ~ ShelleyBase, STS (someLEDGER era),
 ConwayEraCertState era, EraRule "LEDGER" era ~ someLEDGER era,
 InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure era,
 InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era) =>
TransitionRule (someLEDGER era)
conwayLedgerTransition @DijkstraLEDGER]

  renderAssertionViolation :: AssertionViolation (DijkstraLEDGER era) -> String
renderAssertionViolation = AssertionViolation (DijkstraLEDGER era) -> String
forall era t.
(EraTx era, EraGov era, EraCertState era,
 Environment t ~ LedgerEnv era, Signal t ~ Tx TopTx era,
 State t ~ LedgerState era) =>
AssertionViolation t -> String
renderDepositEqualsObligationViolation

  assertions :: [Assertion (DijkstraLEDGER era)]
assertions = forall era (rule :: * -> *).
(EraGov era, EraCertState era,
 State (rule era) ~ LedgerState era) =>
[Assertion (rule era)]
shelleyLedgerAssertions @era @DijkstraLEDGER

instance
  ( BaseM (DijkstraUTXOW era) ~ ShelleyBase
  , AlonzoEraTx era
  , EraUTxO era
  , BabbageEraTxBody era
  , Embed (EraRule "UTXO" era) (DijkstraUTXOW era)
  , State (EraRule "UTXO" era) ~ UTxOState era
  , Environment (EraRule "UTXO" era) ~ UtxoEnv era
  , Script era ~ AlonzoScript era
  , TxOut era ~ BabbageTxOut era
  , ScriptsNeeded era ~ AlonzoScriptsNeeded era
  , Signal (EraRule "UTXO" era) ~ Tx TopTx era
  , PredicateFailure (EraRule "UTXOW" era) ~ DijkstraUtxowPredFailure era
  , Event (EraRule "UTXOW" era) ~ AlonzoUtxowEvent era
  , STS (DijkstraUTXOW era)
  , PredicateFailure (DijkstraUTXOW era) ~ DijkstraUtxowPredFailure era
  , Event (DijkstraUTXOW era) ~ AlonzoUtxowEvent era
  ) =>
  Embed (DijkstraUTXOW era) (DijkstraLEDGER era)
  where
  wrapFailed :: PredicateFailure (DijkstraUTXOW era)
-> PredicateFailure (DijkstraLEDGER era)
wrapFailed = PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
PredicateFailure (DijkstraUTXOW era)
-> PredicateFailure (DijkstraLEDGER era)
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure
  wrapEvent :: Event (DijkstraUTXOW era) -> Event (DijkstraLEDGER era)
wrapEvent = Event (EraRule "UTXOW" era) -> ConwayLedgerEvent era
Event (DijkstraUTXOW era) -> Event (DijkstraLEDGER era)
forall era. Event (EraRule "UTXOW" era) -> ConwayLedgerEvent era
Conway.UtxowEvent

instance
  ( Embed (EraRule "UTXOW" era) (DijkstraLEDGER era)
  , Embed (EraRule "CERTS" era) (DijkstraLEDGER era)
  , Embed (EraRule "GOV" era) (DijkstraLEDGER era)
  , ConwayEraGov era
  , AlonzoEraTx era
  , ConwayEraTxBody era
  , ConwayEraPParams era
  , GovState era ~ ConwayGovState era
  , Environment (EraRule "UTXOW" era) ~ UtxoEnv era
  , Environment (EraRule "CERTS" era) ~ CertsEnv era
  , Environment (EraRule "GOV" era) ~ GovEnv era
  , Signal (EraRule "UTXOW" era) ~ Tx TopTx era
  , Signal (EraRule "CERTS" era) ~ Seq (TxCert era)
  , Signal (EraRule "GOV" era) ~ GovSignal era
  , State (EraRule "UTXOW" era) ~ UTxOState era
  , State (EraRule "CERTS" era) ~ CertState era
  , State (EraRule "GOV" era) ~ Proposals era
  , EraRule "GOV" era ~ DijkstraGOV era
  , Event (EraRule "LEDGER" era) ~ ConwayLedgerEvent era
  , EraGov era
  , ConwayEraCertState era
  , EraRule "LEDGER" era ~ DijkstraLEDGER era
  , InjectRuleFailure "LEDGER" ShelleyLedgerPredFailure era
  , InjectRuleFailure "LEDGER" ConwayLedgerPredFailure era
  , InjectRuleFailure "LEDGER" DijkstraLedgerPredFailure era
  ) =>
  Embed (DijkstraLEDGER era) (ShelleyLEDGERS era)
  where
  wrapFailed :: PredicateFailure (DijkstraLEDGER era)
-> PredicateFailure (ShelleyLEDGERS era)
wrapFailed = PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
PredicateFailure (DijkstraLEDGER era)
-> PredicateFailure (ShelleyLEDGERS era)
forall era.
PredicateFailure (EraRule "LEDGER" era)
-> ShelleyLedgersPredFailure era
LedgerFailure
  wrapEvent :: Event (DijkstraLEDGER era) -> Event (ShelleyLEDGERS era)
wrapEvent = Event (EraRule "LEDGER" era) -> ShelleyLedgersEvent era
Event (DijkstraLEDGER era) -> Event (ShelleyLEDGERS era)
forall era. Event (EraRule "LEDGER" era) -> ShelleyLedgersEvent era
LedgerEvent

instance
  ( ConwayEraTxCert era
  , ConwayEraPParams era
  , ConwayEraGov era
  , BaseM (DijkstraLEDGER era) ~ ShelleyBase
  , PredicateFailure (EraRule "GOV" era) ~ DijkstraGovPredFailure era
  , Event (EraRule "GOV" era) ~ ConwayGovEvent era
  , EraRule "GOV" era ~ DijkstraGOV era
  , InjectRuleFailure "GOV" ConwayGovPredFailure era
  , InjectRuleFailure "GOV" DijkstraGovPredFailure era
  , EraCertState era
  , ConwayEraCertState era
  ) =>
  Embed (DijkstraGOV era) (DijkstraLEDGER era)
  where
  wrapFailed :: PredicateFailure (DijkstraGOV era)
-> PredicateFailure (DijkstraLEDGER era)
wrapFailed = PredicateFailure (EraRule "GOV" era)
-> DijkstraLedgerPredFailure era
PredicateFailure (DijkstraGOV era)
-> PredicateFailure (DijkstraLEDGER era)
forall era.
PredicateFailure (EraRule "GOV" era)
-> DijkstraLedgerPredFailure era
DijkstraGovFailure
  wrapEvent :: Event (DijkstraGOV era) -> Event (DijkstraLEDGER era)
wrapEvent = Event (EraRule "GOV" era) -> ConwayLedgerEvent era
Event (DijkstraGOV era) -> Event (DijkstraLEDGER era)
forall era. Event (EraRule "GOV" era) -> ConwayLedgerEvent era
GovEvent

conwayToDijkstraLedgerPredFailure ::
  forall era. ConwayLedgerPredFailure era -> DijkstraLedgerPredFailure era
conwayToDijkstraLedgerPredFailure :: forall era.
ConwayLedgerPredFailure era -> DijkstraLedgerPredFailure era
conwayToDijkstraLedgerPredFailure = \case
  Conway.ConwayUtxowFailure PredicateFailure (EraRule "UTXOW" era)
f -> PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
forall era.
PredicateFailure (EraRule "UTXOW" era)
-> DijkstraLedgerPredFailure era
DijkstraUtxowFailure PredicateFailure (EraRule "UTXOW" era)
f
  Conway.ConwayCertsFailure PredicateFailure (EraRule "CERTS" era)
f -> PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure PredicateFailure (EraRule "CERTS" era)
f
  Conway.ConwayGovFailure PredicateFailure (EraRule "GOV" era)
f -> PredicateFailure (EraRule "GOV" era)
-> DijkstraLedgerPredFailure era
forall era.
PredicateFailure (EraRule "GOV" era)
-> DijkstraLedgerPredFailure era
DijkstraGovFailure PredicateFailure (EraRule "GOV" era)
f
  Conway.ConwayWdrlNotDelegatedToDRep NonEmpty (KeyHash Staking)
kh -> NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era
forall era.
NonEmpty (KeyHash Staking) -> DijkstraLedgerPredFailure era
DijkstraWdrlNotDelegatedToDRep NonEmpty (KeyHash Staking)
kh
  Conway.ConwayTreasuryValueMismatch Mismatch RelEQ Coin
mm -> Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era
forall era. Mismatch RelEQ Coin -> DijkstraLedgerPredFailure era
DijkstraTreasuryValueMismatch Mismatch RelEQ Coin
mm
  Conway.ConwayTxRefScriptsSizeTooBig Mismatch RelLTEQ Int
mm -> Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era
forall era. Mismatch RelLTEQ Int -> DijkstraLedgerPredFailure era
DijkstraTxRefScriptsSizeTooBig Mismatch RelLTEQ Int
mm
  Conway.ConwayMempoolFailure Text
f -> Text -> DijkstraLedgerPredFailure era
forall era. Text -> DijkstraLedgerPredFailure era
DijkstraMempoolFailure Text
f
  Conway.ConwayWithdrawalsMissingAccounts Withdrawals
ws -> Withdrawals -> DijkstraLedgerPredFailure era
forall era. Withdrawals -> DijkstraLedgerPredFailure era
DijkstraWithdrawalsMissingAccounts Withdrawals
ws
  Conway.ConwayIncompleteWithdrawals Map RewardAccount (Mismatch RelEQ Coin)
ws -> Map RewardAccount (Mismatch RelEQ Coin)
-> DijkstraLedgerPredFailure era
forall era.
Map RewardAccount (Mismatch RelEQ Coin)
-> DijkstraLedgerPredFailure era
DijkstraIncompleteWithdrawals Map RewardAccount (Mismatch RelEQ Coin)
ws

instance
  ( EraTx era
  , ConwayEraTxBody era
  , ConwayEraPParams era
  , ConwayEraGov era
  , Embed (EraRule "CERT" era) (ConwayCERTS era)
  , State (EraRule "CERT" era) ~ CertState era
  , Environment (EraRule "CERT" era) ~ CertEnv era
  , Signal (EraRule "CERT" era) ~ TxCert era
  , PredicateFailure (EraRule "CERTS" era) ~ ConwayCertsPredFailure era
  , PredicateFailure (EraRule "CERT" era) ~ ConwayCertPredFailure era
  , EraRuleFailure "CERT" era ~ ConwayCertPredFailure era
  , Event (EraRule "CERTS" era) ~ ConwayCertsEvent era
  , EraRule "CERTS" era ~ ConwayCERTS era
  , EraCertState era
  , ConwayEraCertState era
  ) =>
  Embed (ConwayCERTS era) (DijkstraLEDGER era)
  where
  wrapFailed :: PredicateFailure (ConwayCERTS era)
-> PredicateFailure (DijkstraLEDGER era)
wrapFailed = PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
PredicateFailure (ConwayCERTS era)
-> PredicateFailure (DijkstraLEDGER era)
forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure
  wrapEvent :: Event (ConwayCERTS era) -> Event (DijkstraLEDGER era)
wrapEvent = Event (EraRule "CERTS" era) -> ConwayLedgerEvent era
Event (ConwayCERTS era) -> Event (DijkstraLEDGER era)
forall era. Event (EraRule "CERTS" era) -> ConwayLedgerEvent era
CertsEvent

instance
  ( EraPParams era
  , EraRule "DELEG" era ~ ConwayDELEG era
  , PredicateFailure (EraRule "CERTS" era) ~ ConwayCertsPredFailure era
  , PredicateFailure (EraRule "CERT" era) ~ ConwayCertPredFailure era
  , Event (EraRule "CERTS" era) ~ ConwayCertsEvent era
  , Event (EraRule "CERT" era) ~ ConwayCertEvent era
  , EraCertState era
  , ConwayEraCertState era
  ) =>
  Embed (ConwayDELEG era) (DijkstraLEDGER era)
  where
  wrapFailed :: PredicateFailure (ConwayDELEG era)
-> PredicateFailure (DijkstraLEDGER era)
wrapFailed = PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
ConwayCertsPredFailure era -> DijkstraLedgerPredFailure era
forall era.
PredicateFailure (EraRule "CERTS" era)
-> DijkstraLedgerPredFailure era
DijkstraCertsFailure (ConwayCertsPredFailure era -> DijkstraLedgerPredFailure era)
-> (ConwayDelegPredFailure era -> ConwayCertsPredFailure era)
-> ConwayDelegPredFailure era
-> DijkstraLedgerPredFailure era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "CERT" era) -> ConwayCertsPredFailure era
ConwayCertPredFailure era -> ConwayCertsPredFailure era
forall era.
PredicateFailure (EraRule "CERT" era) -> ConwayCertsPredFailure era
CertFailure (ConwayCertPredFailure era -> ConwayCertsPredFailure era)
-> (ConwayDelegPredFailure era -> ConwayCertPredFailure era)
-> ConwayDelegPredFailure era
-> ConwayCertsPredFailure era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PredicateFailure (EraRule "DELEG" era) -> ConwayCertPredFailure era
ConwayDelegPredFailure era -> ConwayCertPredFailure era
forall era.
PredicateFailure (EraRule "DELEG" era) -> ConwayCertPredFailure era
DelegFailure
  wrapEvent :: Event (ConwayDELEG era) -> Event (DijkstraLEDGER era)
wrapEvent = ConwayCertsEvent era -> ConwayLedgerEvent era
Event (EraRule "CERTS" era) -> ConwayLedgerEvent era
forall era. Event (EraRule "CERTS" era) -> ConwayLedgerEvent era
CertsEvent (ConwayCertsEvent era -> ConwayLedgerEvent era)
-> (Void -> ConwayCertsEvent era) -> Void -> ConwayLedgerEvent era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConwayCertEvent era -> ConwayCertsEvent era
Event (EraRule "CERT" era) -> ConwayCertsEvent era
forall era. Event (EraRule "CERT" era) -> ConwayCertsEvent era
CertEvent (ConwayCertEvent era -> ConwayCertsEvent era)
-> (Void -> ConwayCertEvent era) -> Void -> ConwayCertsEvent era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Void -> ConwayCertEvent era
Event (EraRule "DELEG" era) -> ConwayCertEvent era
forall era. Event (EraRule "DELEG" era) -> ConwayCertEvent era
DelegEvent