{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}
{-# 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.Utxow (
  DijkstraUTXOW,
  DijkstraUtxowPredFailure (..),
) where

import Cardano.Crypto.Hash (ByteString)
import Cardano.Ledger.Allegra.Rules (
  AllegraUtxoPredFailure,
 )
import Cardano.Ledger.Alonzo.Rules (
  AlonzoUtxoEvent,
  AlonzoUtxoPredFailure,
  AlonzoUtxosPredFailure,
  AlonzoUtxowEvent (WrappedShelleyEraEvent),
  AlonzoUtxowPredFailure,
 )
import Cardano.Ledger.Alonzo.UTxO (AlonzoEraUTxO, AlonzoScriptsNeeded)
import Cardano.Ledger.Babbage.Rules (
  BabbageUtxoPredFailure,
  BabbageUtxowPredFailure,
  babbageUtxowTransition,
 )
import Cardano.Ledger.BaseTypes (
  Mismatch (..),
  Relation (..),
  ShelleyBase,
  StrictMaybe (..),
 )
import Cardano.Ledger.Binary (DecCBOR (..), EncCBOR (..))
import Cardano.Ledger.Binary.Coders (
  Decode (..),
  Encode (..),
  decode,
  encode,
  (!>),
  (<!),
 )
import Cardano.Ledger.Conway.Core
import Cardano.Ledger.Conway.Rules (
  ConwayUtxoPredFailure,
  ConwayUtxosPredFailure,
  ConwayUtxowPredFailure,
  alonzoToConwayUtxowPredFailure,
  babbageToConwayUtxowPredFailure,
  shelleyToConwayUtxowPredFailure,
 )
import qualified Cardano.Ledger.Conway.Rules as Conway
import Cardano.Ledger.Dijkstra.Era (DijkstraEra, DijkstraUTXO, DijkstraUTXOW)
import Cardano.Ledger.Dijkstra.Rules.Utxo (DijkstraUtxoPredFailure)
import Cardano.Ledger.Keys (VKey)
import qualified Cardano.Ledger.Shelley.LedgerState as Shelley (UTxOState)
import Cardano.Ledger.Shelley.Rules (
  ShelleyUtxoPredFailure,
  ShelleyUtxowEvent (UtxoEvent),
  ShelleyUtxowPredFailure,
 )
import qualified Cardano.Ledger.Shelley.Rules as Shelley (
  UtxoEnv,
 )
import Cardano.Ledger.State (EraUTxO (..))
import Cardano.Ledger.TxIn (TxIn)
import Control.DeepSeq (NFData)
import Control.State.Transition.Extended (
  Embed (..),
  STS (..),
 )
import Data.Set (Set)
import GHC.Generics (Generic)
import NoThunks.Class (
  InspectHeapNamed (..),
  NoThunks (..),
 )

-- ================================

-- | Predicate failure type for the Conway Era
data DijkstraUtxowPredFailure era
  = UtxoFailure (PredicateFailure (EraRule "UTXO" era))
  | InvalidWitnessesUTXOW [VKey Witness]
  | -- | witnesses which failed in verifiedWits function
    MissingVKeyWitnessesUTXOW
      -- | witnesses which were needed and not supplied
      (Set (KeyHash Witness))
  | -- | missing scripts
    MissingScriptWitnessesUTXOW (Set ScriptHash)
  | -- | failed scripts
    ScriptWitnessNotValidatingUTXOW (Set ScriptHash)
  | -- | hash of the full metadata
    MissingTxBodyMetadataHash TxAuxDataHash
  | -- | hash of the metadata included in the transaction body
    MissingTxMetadata TxAuxDataHash
  | ConflictingMetadataHash (Mismatch RelEQ TxAuxDataHash)
  | -- | Contains out of range values (string`s too long)
    InvalidMetadata
  | -- | extraneous scripts
    ExtraneousScriptWitnessesUTXOW (Set ScriptHash)
  | MissingRedeemers [(PlutusPurpose AsItem era, ScriptHash)]
  | MissingRequiredDatums
      -- TODO: Make this NonEmpty #4066

      -- | Set of missing data hashes
      (Set DataHash)
      -- | Set of received data hashes
      (Set DataHash)
  | NotAllowedSupplementalDatums
      -- TODO: Make this NonEmpty #4066

      -- | Set of unallowed data hashes.
      (Set DataHash)
      -- | Set of acceptable supplemental data hashes
      (Set DataHash)
  | PPViewHashesDontMatch
      (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
  | -- | Set of transaction inputs that are TwoPhase scripts, and should have a DataHash but don't
    UnspendableUTxONoDatumHash
      -- TODO: Make this NonEmpty #4066
      (Set TxIn)
  | -- | List of redeemers not needed
    ExtraRedeemers [PlutusPurpose AsIx era]
  | -- | Embed UTXO rule failures
    MalformedScriptWitnesses (Set ScriptHash)
  | -- | the set of malformed script witnesses
    MalformedReferenceScripts (Set ScriptHash)
  | -- | The computed script integrity hash does not match the provided script integrity hash
    ScriptIntegrityHashMismatch
      (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
      (StrictMaybe ByteString)
  deriving ((forall x.
 DijkstraUtxowPredFailure era
 -> Rep (DijkstraUtxowPredFailure era) x)
-> (forall x.
    Rep (DijkstraUtxowPredFailure era) x
    -> DijkstraUtxowPredFailure era)
-> Generic (DijkstraUtxowPredFailure era)
forall x.
Rep (DijkstraUtxowPredFailure era) x
-> DijkstraUtxowPredFailure era
forall x.
DijkstraUtxowPredFailure era
-> Rep (DijkstraUtxowPredFailure era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraUtxowPredFailure era) x
-> DijkstraUtxowPredFailure era
forall era x.
DijkstraUtxowPredFailure era
-> Rep (DijkstraUtxowPredFailure era) x
$cfrom :: forall era x.
DijkstraUtxowPredFailure era
-> Rep (DijkstraUtxowPredFailure era) x
from :: forall x.
DijkstraUtxowPredFailure era
-> Rep (DijkstraUtxowPredFailure era) x
$cto :: forall era x.
Rep (DijkstraUtxowPredFailure era) x
-> DijkstraUtxowPredFailure era
to :: forall x.
Rep (DijkstraUtxowPredFailure era) x
-> DijkstraUtxowPredFailure era
Generic)

type instance EraRuleFailure "UTXOW" DijkstraEra = DijkstraUtxowPredFailure DijkstraEra

type instance EraRuleEvent "UTXOW" DijkstraEra = AlonzoUtxowEvent DijkstraEra

instance InjectRuleFailure "UTXOW" DijkstraUtxowPredFailure DijkstraEra

instance InjectRuleFailure "UTXOW" ConwayUtxowPredFailure DijkstraEra where
  injectFailure :: ConwayUtxowPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
injectFailure = ConwayUtxowPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
ConwayUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall era.
ConwayUtxowPredFailure era -> DijkstraUtxowPredFailure era
conwayToDijkstraUtxowPredFailure

instance InjectRuleFailure "UTXOW" BabbageUtxowPredFailure DijkstraEra where
  injectFailure :: BabbageUtxowPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
injectFailure = ConwayUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall era.
ConwayUtxowPredFailure era -> DijkstraUtxowPredFailure era
conwayToDijkstraUtxowPredFailure (ConwayUtxowPredFailure DijkstraEra
 -> DijkstraUtxowPredFailure DijkstraEra)
-> (BabbageUtxowPredFailure DijkstraEra
    -> ConwayUtxowPredFailure DijkstraEra)
-> BabbageUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BabbageUtxowPredFailure DijkstraEra
-> ConwayUtxowPredFailure DijkstraEra
forall era.
BabbageUtxowPredFailure era -> ConwayUtxowPredFailure era
babbageToConwayUtxowPredFailure

instance InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure DijkstraEra where
  injectFailure :: AlonzoUtxowPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
injectFailure = ConwayUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall era.
ConwayUtxowPredFailure era -> DijkstraUtxowPredFailure era
conwayToDijkstraUtxowPredFailure (ConwayUtxowPredFailure DijkstraEra
 -> DijkstraUtxowPredFailure DijkstraEra)
-> (AlonzoUtxowPredFailure DijkstraEra
    -> ConwayUtxowPredFailure DijkstraEra)
-> AlonzoUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxowPredFailure DijkstraEra
-> ConwayUtxowPredFailure DijkstraEra
forall era.
AlonzoUtxowPredFailure era -> ConwayUtxowPredFailure era
alonzoToConwayUtxowPredFailure

instance InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure DijkstraEra where
  injectFailure :: ShelleyUtxowPredFailure DijkstraEra
-> EraRuleFailure "UTXOW" DijkstraEra
injectFailure = ConwayUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall era.
ConwayUtxowPredFailure era -> DijkstraUtxowPredFailure era
conwayToDijkstraUtxowPredFailure (ConwayUtxowPredFailure DijkstraEra
 -> DijkstraUtxowPredFailure DijkstraEra)
-> (ShelleyUtxowPredFailure DijkstraEra
    -> ConwayUtxowPredFailure DijkstraEra)
-> ShelleyUtxowPredFailure DijkstraEra
-> DijkstraUtxowPredFailure DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShelleyUtxowPredFailure DijkstraEra
-> ConwayUtxowPredFailure DijkstraEra
forall era.
ShelleyUtxowPredFailure era -> ConwayUtxowPredFailure era
shelleyToConwayUtxowPredFailure

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

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

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

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

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

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

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

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

deriving instance
  ( ConwayEraScript era
  , Show (PredicateFailure (EraRule "UTXO" era))
  ) =>
  Show (DijkstraUtxowPredFailure era)

deriving instance
  ( ConwayEraScript era
  , Eq (PredicateFailure (EraRule "UTXO" era))
  ) =>
  Eq (DijkstraUtxowPredFailure era)

deriving via
  InspectHeapNamed "ConwayUtxowPred" (DijkstraUtxowPredFailure era)
  instance
    NoThunks (DijkstraUtxowPredFailure era)

instance
  ( ConwayEraScript era
  , NFData (TxCert era)
  , NFData (PredicateFailure (EraRule "UTXO" era))
  ) =>
  NFData (DijkstraUtxowPredFailure era)

--------------------------------------------------------------------------------
-- DijkstraUTXOW STS
--------------------------------------------------------------------------------

instance
  forall era.
  ( AlonzoEraTx era
  , AlonzoEraUTxO era
  , ScriptsNeeded era ~ AlonzoScriptsNeeded era
  , ConwayEraTxBody era
  , EraRule "UTXOW" era ~ DijkstraUTXOW era
  , InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era
  , InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure era
  , InjectRuleFailure "UTXOW" BabbageUtxowPredFailure era
  , InjectRuleFailure "UTXOW" ConwayUtxowPredFailure era
  , InjectRuleFailure "UTXOW" DijkstraUtxowPredFailure era
  , -- Allow UTXOW to call UTXO
    Embed (EraRule "UTXO" era) (DijkstraUTXOW era)
  , Environment (EraRule "UTXO" era) ~ Shelley.UtxoEnv era
  , State (EraRule "UTXO" era) ~ Shelley.UTxOState era
  , Signal (EraRule "UTXO" era) ~ Tx TopTx era
  , Eq (PredicateFailure (EraRule "UTXOS" era))
  , Show (PredicateFailure (EraRule "UTXOS" era))
  ) =>
  STS (DijkstraUTXOW era)
  where
  type State (DijkstraUTXOW era) = Shelley.UTxOState era
  type Signal (DijkstraUTXOW era) = Tx TopTx era
  type Environment (DijkstraUTXOW era) = Shelley.UtxoEnv era
  type BaseM (DijkstraUTXOW era) = ShelleyBase
  type PredicateFailure (DijkstraUTXOW era) = DijkstraUtxowPredFailure era
  type Event (DijkstraUTXOW era) = AlonzoUtxowEvent era
  transitionRules :: [TransitionRule (DijkstraUTXOW era)]
transitionRules = [forall era.
(AlonzoEraTx era, AlonzoEraUTxO era,
 ScriptsNeeded era ~ AlonzoScriptsNeeded era, BabbageEraTxBody era,
 Environment (EraRule "UTXOW" era) ~ UtxoEnv era,
 Signal (EraRule "UTXOW" era) ~ Tx TopTx era,
 State (EraRule "UTXOW" era) ~ UTxOState era,
 InjectRuleFailure "UTXOW" ShelleyUtxowPredFailure era,
 InjectRuleFailure "UTXOW" AlonzoUtxowPredFailure era,
 InjectRuleFailure "UTXOW" BabbageUtxowPredFailure era,
 Embed (EraRule "UTXO" era) (EraRule "UTXOW" era),
 Environment (EraRule "UTXO" era) ~ UtxoEnv era,
 Signal (EraRule "UTXO" era) ~ Tx TopTx era,
 State (EraRule "UTXO" era) ~ UTxOState era) =>
TransitionRule (EraRule "UTXOW" era)
babbageUtxowTransition @era]
  initialRules :: [InitialRule (DijkstraUTXOW era)]
initialRules = []

instance
  ( Era era
  , STS (DijkstraUTXO era)
  , PredicateFailure (EraRule "UTXO" era) ~ DijkstraUtxoPredFailure era
  , Event (EraRule "UTXO" era) ~ AlonzoUtxoEvent era
  , BaseM (DijkstraUTXOW era) ~ ShelleyBase
  , PredicateFailure (DijkstraUTXOW era) ~ DijkstraUtxowPredFailure era
  , Event (DijkstraUTXOW era) ~ AlonzoUtxowEvent era
  ) =>
  Embed (DijkstraUTXO era) (DijkstraUTXOW era)
  where
  wrapFailed :: PredicateFailure (DijkstraUTXO era)
-> PredicateFailure (DijkstraUTXOW era)
wrapFailed = PredicateFailure (EraRule "UTXO" era)
-> DijkstraUtxowPredFailure era
PredicateFailure (DijkstraUTXO era)
-> PredicateFailure (DijkstraUTXOW era)
forall era.
PredicateFailure (EraRule "UTXO" era)
-> DijkstraUtxowPredFailure era
UtxoFailure
  wrapEvent :: Event (DijkstraUTXO era) -> Event (DijkstraUTXOW era)
wrapEvent = ShelleyUtxowEvent era -> AlonzoUtxowEvent era
forall era. ShelleyUtxowEvent era -> AlonzoUtxowEvent era
WrappedShelleyEraEvent (ShelleyUtxowEvent era -> AlonzoUtxowEvent era)
-> (AlonzoUtxoEvent era -> ShelleyUtxowEvent era)
-> AlonzoUtxoEvent era
-> AlonzoUtxowEvent era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AlonzoUtxoEvent era -> ShelleyUtxowEvent era
Event (EraRule "UTXO" era) -> ShelleyUtxowEvent era
forall era. Event (EraRule "UTXO" era) -> ShelleyUtxowEvent era
UtxoEvent

--------------------------------------------------------------------------------
-- Serialisation
--------------------------------------------------------------------------------

instance
  ( ConwayEraScript era
  , EncCBOR (PredicateFailure (EraRule "UTXO" era))
  ) =>
  EncCBOR (DijkstraUtxowPredFailure era)
  where
  encCBOR :: DijkstraUtxowPredFailure era -> Encoding
encCBOR =
    Encode Open (DijkstraUtxowPredFailure era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode Open (DijkstraUtxowPredFailure era) -> Encoding)
-> (DijkstraUtxowPredFailure era
    -> Encode Open (DijkstraUtxowPredFailure era))
-> DijkstraUtxowPredFailure era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
      UtxoFailure PredicateFailure (EraRule "UTXO" era)
x -> (PredicateFailure (EraRule "UTXO" era)
 -> DijkstraUtxowPredFailure era)
-> Word
-> Encode
     Open
     (PredicateFailure (EraRule "UTXO" era)
      -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum PredicateFailure (EraRule "UTXO" era)
-> DijkstraUtxowPredFailure era
forall era.
PredicateFailure (EraRule "UTXO" era)
-> DijkstraUtxowPredFailure era
UtxoFailure Word
0 Encode
  Open
  (PredicateFailure (EraRule "UTXO" era)
   -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "UTXO" era))
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> PredicateFailure (EraRule "UTXO" era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "UTXO" era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To PredicateFailure (EraRule "UTXO" era)
x
      InvalidWitnessesUTXOW [VKey Witness]
xs -> ([VKey Witness] -> DijkstraUtxowPredFailure era)
-> Word
-> Encode Open ([VKey Witness] -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum [VKey Witness] -> DijkstraUtxowPredFailure era
forall era. [VKey Witness] -> DijkstraUtxowPredFailure era
InvalidWitnessesUTXOW Word
1 Encode Open ([VKey Witness] -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) [VKey Witness]
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> [VKey Witness] -> Encode (Closed Dense) [VKey Witness]
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To [VKey Witness]
xs
      MissingVKeyWitnessesUTXOW Set (KeyHash Witness)
xs -> (Set (KeyHash Witness) -> DijkstraUtxowPredFailure era)
-> Word
-> Encode
     Open (Set (KeyHash Witness) -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set (KeyHash Witness) -> DijkstraUtxowPredFailure era
forall era. Set (KeyHash Witness) -> DijkstraUtxowPredFailure era
MissingVKeyWitnessesUTXOW Word
2 Encode Open (Set (KeyHash Witness) -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set (KeyHash Witness))
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set (KeyHash Witness)
-> Encode (Closed Dense) (Set (KeyHash Witness))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set (KeyHash Witness)
xs
      MissingScriptWitnessesUTXOW Set ScriptHash
xs -> (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Word
-> Encode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
MissingScriptWitnessesUTXOW Word
3 Encode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set ScriptHash)
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set ScriptHash -> Encode (Closed Dense) (Set ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set ScriptHash
xs
      ScriptWitnessNotValidatingUTXOW Set ScriptHash
xs -> (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Word
-> Encode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
ScriptWitnessNotValidatingUTXOW Word
4 Encode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set ScriptHash)
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set ScriptHash -> Encode (Closed Dense) (Set ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set ScriptHash
xs
      MissingTxBodyMetadataHash TxAuxDataHash
xs -> (TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Word
-> Encode Open (TxAuxDataHash -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum TxAuxDataHash -> DijkstraUtxowPredFailure era
forall era. TxAuxDataHash -> DijkstraUtxowPredFailure era
MissingTxBodyMetadataHash Word
5 Encode Open (TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) TxAuxDataHash
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> TxAuxDataHash -> Encode (Closed Dense) TxAuxDataHash
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To TxAuxDataHash
xs
      MissingTxMetadata TxAuxDataHash
xs -> (TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Word
-> Encode Open (TxAuxDataHash -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum TxAuxDataHash -> DijkstraUtxowPredFailure era
forall era. TxAuxDataHash -> DijkstraUtxowPredFailure era
MissingTxMetadata Word
6 Encode Open (TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) TxAuxDataHash
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> TxAuxDataHash -> Encode (Closed Dense) TxAuxDataHash
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To TxAuxDataHash
xs
      ConflictingMetadataHash Mismatch RelEQ TxAuxDataHash
mm -> (Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Word
-> Encode
     Open (Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era
forall era.
Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era
ConflictingMetadataHash Word
7 Encode
  Open (Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Mismatch RelEQ TxAuxDataHash)
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelEQ TxAuxDataHash
-> Encode (Closed Dense) (Mismatch RelEQ TxAuxDataHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelEQ TxAuxDataHash
mm
      DijkstraUtxowPredFailure era
InvalidMetadata -> DijkstraUtxowPredFailure era
-> Word -> Encode Open (DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum DijkstraUtxowPredFailure era
forall era. DijkstraUtxowPredFailure era
InvalidMetadata Word
8
      ExtraneousScriptWitnessesUTXOW Set ScriptHash
xs -> (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Word
-> Encode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
ExtraneousScriptWitnessesUTXOW Word
9 Encode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set ScriptHash)
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set ScriptHash -> Encode (Closed Dense) (Set ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set ScriptHash
xs
      MissingRedeemers [(PlutusPurpose AsItem era, ScriptHash)]
x -> ([(PlutusPurpose AsItem era, ScriptHash)]
 -> DijkstraUtxowPredFailure era)
-> Word
-> Encode
     Open
     ([(PlutusPurpose AsItem era, ScriptHash)]
      -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum [(PlutusPurpose AsItem era, ScriptHash)]
-> DijkstraUtxowPredFailure era
forall era.
[(PlutusPurpose AsItem era, ScriptHash)]
-> DijkstraUtxowPredFailure era
MissingRedeemers Word
10 Encode
  Open
  ([(PlutusPurpose AsItem era, ScriptHash)]
   -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) [(PlutusPurpose AsItem era, ScriptHash)]
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> [(PlutusPurpose AsItem era, ScriptHash)]
-> Encode (Closed Dense) [(PlutusPurpose AsItem era, ScriptHash)]
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To [(PlutusPurpose AsItem era, ScriptHash)]
x
      MissingRequiredDatums Set DataHash
x Set DataHash
y -> (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
-> Word
-> Encode
     Open (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
forall era.
Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
MissingRequiredDatums Word
11 Encode
  Open (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set DataHash)
-> Encode Open (Set DataHash -> DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set DataHash -> Encode (Closed Dense) (Set DataHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set DataHash
x Encode Open (Set DataHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set DataHash)
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set DataHash -> Encode (Closed Dense) (Set DataHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set DataHash
y
      NotAllowedSupplementalDatums Set DataHash
x Set DataHash
y -> (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
-> Word
-> Encode
     Open (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
forall era.
Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
NotAllowedSupplementalDatums Word
12 Encode
  Open (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set DataHash)
-> Encode Open (Set DataHash -> DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set DataHash -> Encode (Closed Dense) (Set DataHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set DataHash
x Encode Open (Set DataHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set DataHash)
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set DataHash -> Encode (Closed Dense) (Set DataHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set DataHash
y
      PPViewHashesDontMatch Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
mm -> (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
 -> DijkstraUtxowPredFailure era)
-> Word
-> Encode
     Open
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
      -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> DijkstraUtxowPredFailure era
forall era.
Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> DijkstraUtxowPredFailure era
PPViewHashesDontMatch Word
13 Encode
  Open
  (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
   -> DijkstraUtxowPredFailure era)
-> Encode
     (Closed Dense) (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> Encode
     (Closed Dense) (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
mm
      UnspendableUTxONoDatumHash Set TxIn
x -> (Set TxIn -> DijkstraUtxowPredFailure era)
-> Word -> Encode Open (Set TxIn -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set TxIn -> DijkstraUtxowPredFailure era
forall era. Set TxIn -> DijkstraUtxowPredFailure era
UnspendableUTxONoDatumHash Word
14 Encode Open (Set TxIn -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set TxIn)
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set TxIn -> Encode (Closed Dense) (Set TxIn)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set TxIn
x
      ExtraRedeemers [PlutusPurpose AsIx era]
x -> ([PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era)
-> Word
-> Encode
     Open ([PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum [PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era
forall era.
[PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era
ExtraRedeemers Word
15 Encode
  Open ([PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) [PlutusPurpose AsIx era]
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> [PlutusPurpose AsIx era]
-> Encode (Closed Dense) [PlutusPurpose AsIx era]
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To [PlutusPurpose AsIx era]
x
      MalformedScriptWitnesses Set ScriptHash
x -> (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Word
-> Encode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
MalformedScriptWitnesses Word
16 Encode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set ScriptHash)
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set ScriptHash -> Encode (Closed Dense) (Set ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set ScriptHash
x
      MalformedReferenceScripts Set ScriptHash
x -> (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Word
-> Encode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
MalformedReferenceScripts Word
17 Encode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (Set ScriptHash)
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Set ScriptHash -> Encode (Closed Dense) (Set ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Set ScriptHash
x
      ScriptIntegrityHashMismatch Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
x StrictMaybe ByteString
y -> (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
 -> StrictMaybe ByteString -> DijkstraUtxowPredFailure era)
-> Word
-> Encode
     Open
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
      -> StrictMaybe ByteString -> DijkstraUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ByteString -> DijkstraUtxowPredFailure era
forall era.
Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ByteString -> DijkstraUtxowPredFailure era
ScriptIntegrityHashMismatch Word
18 Encode
  Open
  (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
   -> StrictMaybe ByteString -> DijkstraUtxowPredFailure era)
-> Encode
     (Closed Dense) (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
-> Encode
     Open (StrictMaybe ByteString -> DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> Encode
     (Closed Dense) (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
x Encode
  Open (StrictMaybe ByteString -> DijkstraUtxowPredFailure era)
-> Encode (Closed Dense) (StrictMaybe ByteString)
-> Encode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> StrictMaybe ByteString
-> Encode (Closed Dense) (StrictMaybe ByteString)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To StrictMaybe ByteString
y

instance
  ( ConwayEraScript era
  , DecCBOR (PredicateFailure (EraRule "UTXO" era))
  ) =>
  DecCBOR (DijkstraUtxowPredFailure era)
  where
  decCBOR :: forall s. Decoder s (DijkstraUtxowPredFailure era)
decCBOR = Decode (Closed Dense) (DijkstraUtxowPredFailure era)
-> Decoder s (DijkstraUtxowPredFailure era)
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (DijkstraUtxowPredFailure era)
 -> Decoder s (DijkstraUtxowPredFailure era))
-> ((Word -> Decode Open (DijkstraUtxowPredFailure era))
    -> Decode (Closed Dense) (DijkstraUtxowPredFailure era))
-> (Word -> Decode Open (DijkstraUtxowPredFailure era))
-> Decoder s (DijkstraUtxowPredFailure era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text
-> (Word -> Decode Open (DijkstraUtxowPredFailure era))
-> Decode (Closed Dense) (DijkstraUtxowPredFailure era)
forall t.
Text -> (Word -> Decode Open t) -> Decode (Closed Dense) t
Summands Text
"ConwayUtxowPred" ((Word -> Decode Open (DijkstraUtxowPredFailure era))
 -> Decoder s (DijkstraUtxowPredFailure era))
-> (Word -> Decode Open (DijkstraUtxowPredFailure era))
-> Decoder s (DijkstraUtxowPredFailure era)
forall a b. (a -> b) -> a -> b
$ \case
    Word
0 -> (PredicateFailure (EraRule "UTXO" era)
 -> DijkstraUtxowPredFailure era)
-> Decode
     Open
     (PredicateFailure (EraRule "UTXO" era)
      -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD PredicateFailure (EraRule "UTXO" era)
-> DijkstraUtxowPredFailure era
forall era.
PredicateFailure (EraRule "UTXO" era)
-> DijkstraUtxowPredFailure era
UtxoFailure Decode
  Open
  (PredicateFailure (EraRule "UTXO" era)
   -> DijkstraUtxowPredFailure era)
-> Decode
     (Closed (ZonkAny 0)) (PredicateFailure (EraRule "UTXO" era))
-> Decode Open (DijkstraUtxowPredFailure 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 "UTXO" era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
1 -> ([VKey Witness] -> DijkstraUtxowPredFailure era)
-> Decode Open ([VKey Witness] -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD [VKey Witness] -> DijkstraUtxowPredFailure era
forall era. [VKey Witness] -> DijkstraUtxowPredFailure era
InvalidWitnessesUTXOW Decode Open ([VKey Witness] -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 1)) [VKey Witness]
-> Decode Open (DijkstraUtxowPredFailure 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)) [VKey Witness]
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
2 -> (Set (KeyHash Witness) -> DijkstraUtxowPredFailure era)
-> Decode
     Open (Set (KeyHash Witness) -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Set (KeyHash Witness) -> DijkstraUtxowPredFailure era
forall era. Set (KeyHash Witness) -> DijkstraUtxowPredFailure era
MissingVKeyWitnessesUTXOW Decode Open (Set (KeyHash Witness) -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 2)) (Set (KeyHash Witness))
-> Decode Open (DijkstraUtxowPredFailure 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)) (Set (KeyHash Witness))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
3 -> (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Decode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
MissingScriptWitnessesUTXOW Decode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 3)) (Set ScriptHash)
-> Decode Open (DijkstraUtxowPredFailure 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)) (Set ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
4 -> (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Decode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
ScriptWitnessNotValidatingUTXOW Decode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 4)) (Set ScriptHash)
-> Decode Open (DijkstraUtxowPredFailure 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)) (Set ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
5 -> (TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Decode Open (TxAuxDataHash -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD TxAuxDataHash -> DijkstraUtxowPredFailure era
forall era. TxAuxDataHash -> DijkstraUtxowPredFailure era
MissingTxBodyMetadataHash Decode Open (TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 5)) TxAuxDataHash
-> Decode Open (DijkstraUtxowPredFailure 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)) TxAuxDataHash
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
6 -> (TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Decode Open (TxAuxDataHash -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD TxAuxDataHash -> DijkstraUtxowPredFailure era
forall era. TxAuxDataHash -> DijkstraUtxowPredFailure era
MissingTxMetadata Decode Open (TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 6)) TxAuxDataHash
-> Decode Open (DijkstraUtxowPredFailure 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)) TxAuxDataHash
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
7 -> (Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Decode
     Open (Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era
forall era.
Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era
ConflictingMetadataHash Decode
  Open (Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 7)) (Mismatch RelEQ TxAuxDataHash)
-> Decode Open (DijkstraUtxowPredFailure 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)) (Mismatch RelEQ TxAuxDataHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
8 -> DijkstraUtxowPredFailure era
-> Decode Open (DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD DijkstraUtxowPredFailure era
forall era. DijkstraUtxowPredFailure era
InvalidMetadata
    Word
9 -> (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Decode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
ExtraneousScriptWitnessesUTXOW Decode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 8)) (Set ScriptHash)
-> Decode Open (DijkstraUtxowPredFailure 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)) (Set ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
10 -> ([(PlutusPurpose AsItem era, ScriptHash)]
 -> DijkstraUtxowPredFailure era)
-> Decode
     Open
     ([(PlutusPurpose AsItem era, ScriptHash)]
      -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD [(PlutusPurpose AsItem era, ScriptHash)]
-> DijkstraUtxowPredFailure era
forall era.
[(PlutusPurpose AsItem era, ScriptHash)]
-> DijkstraUtxowPredFailure era
MissingRedeemers Decode
  Open
  ([(PlutusPurpose AsItem era, ScriptHash)]
   -> DijkstraUtxowPredFailure era)
-> Decode
     (Closed (ZonkAny 9)) [(PlutusPurpose AsItem era, ScriptHash)]
-> Decode Open (DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
  (Closed (ZonkAny 9)) [(PlutusPurpose AsItem era, ScriptHash)]
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
11 -> (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
-> Decode
     Open (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
forall era.
Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
MissingRequiredDatums Decode
  Open (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 11)) (Set DataHash)
-> Decode Open (Set DataHash -> DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 11)) (Set DataHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (Set DataHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 10)) (Set DataHash)
-> Decode Open (DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 10)) (Set DataHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
12 -> (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
-> Decode
     Open (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
forall era.
Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
NotAllowedSupplementalDatums Decode
  Open (Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 13)) (Set DataHash)
-> Decode Open (Set DataHash -> DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 13)) (Set DataHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (Set DataHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 12)) (Set DataHash)
-> Decode Open (DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 12)) (Set DataHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
13 -> (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
 -> DijkstraUtxowPredFailure era)
-> Decode
     Open
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
      -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> DijkstraUtxowPredFailure era
forall era.
Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> DijkstraUtxowPredFailure era
PPViewHashesDontMatch Decode
  Open
  (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
   -> DijkstraUtxowPredFailure era)
-> Decode
     (Closed (ZonkAny 14))
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
-> Decode Open (DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
  (Closed (ZonkAny 14))
  (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
14 -> (Set TxIn -> DijkstraUtxowPredFailure era)
-> Decode Open (Set TxIn -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Set TxIn -> DijkstraUtxowPredFailure era
forall era. Set TxIn -> DijkstraUtxowPredFailure era
UnspendableUTxONoDatumHash Decode Open (Set TxIn -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 15)) (Set TxIn)
-> Decode Open (DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 15)) (Set TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
15 -> ([PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era)
-> Decode
     Open ([PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD [PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era
forall era.
[PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era
ExtraRedeemers Decode
  Open ([PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 16)) [PlutusPurpose AsIx era]
-> Decode Open (DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 16)) [PlutusPurpose AsIx era]
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
16 -> (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Decode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
MalformedScriptWitnesses Decode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 17)) (Set ScriptHash)
-> Decode Open (DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 17)) (Set ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
17 -> (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Decode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
MalformedReferenceScripts Decode Open (Set ScriptHash -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 18)) (Set ScriptHash)
-> Decode Open (DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 18)) (Set ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
18 -> (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
 -> StrictMaybe ByteString -> DijkstraUtxowPredFailure era)
-> Decode
     Open
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
      -> StrictMaybe ByteString -> DijkstraUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ByteString -> DijkstraUtxowPredFailure era
forall era.
Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ByteString -> DijkstraUtxowPredFailure era
ScriptIntegrityHashMismatch Decode
  Open
  (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
   -> StrictMaybe ByteString -> DijkstraUtxowPredFailure era)
-> Decode
     (Closed (ZonkAny 20))
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
-> Decode
     Open (StrictMaybe ByteString -> DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode
  (Closed (ZonkAny 20))
  (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode
  Open (StrictMaybe ByteString -> DijkstraUtxowPredFailure era)
-> Decode (Closed (ZonkAny 19)) (StrictMaybe ByteString)
-> Decode Open (DijkstraUtxowPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 19)) (StrictMaybe ByteString)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
n -> Word -> Decode Open (DijkstraUtxowPredFailure era)
forall (w :: Wrapped) t. Word -> Decode w t
Invalid Word
n

-- =====================================================
-- Injecting from one PredicateFailure to another

conwayToDijkstraUtxowPredFailure ::
  forall era.
  ConwayUtxowPredFailure era ->
  DijkstraUtxowPredFailure era
conwayToDijkstraUtxowPredFailure :: forall era.
ConwayUtxowPredFailure era -> DijkstraUtxowPredFailure era
conwayToDijkstraUtxowPredFailure = \case
  Conway.UtxoFailure PredicateFailure (EraRule "UTXO" era)
f -> PredicateFailure (EraRule "UTXO" era)
-> DijkstraUtxowPredFailure era
forall era.
PredicateFailure (EraRule "UTXO" era)
-> DijkstraUtxowPredFailure era
UtxoFailure PredicateFailure (EraRule "UTXO" era)
f
  Conway.InvalidWitnessesUTXOW [VKey Witness]
ks -> [VKey Witness] -> DijkstraUtxowPredFailure era
forall era. [VKey Witness] -> DijkstraUtxowPredFailure era
InvalidWitnessesUTXOW [VKey Witness]
ks
  Conway.MissingVKeyWitnessesUTXOW Set (KeyHash Witness)
ks -> Set (KeyHash Witness) -> DijkstraUtxowPredFailure era
forall era. Set (KeyHash Witness) -> DijkstraUtxowPredFailure era
MissingVKeyWitnessesUTXOW Set (KeyHash Witness)
ks
  Conway.MissingScriptWitnessesUTXOW Set ScriptHash
hs -> Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
MissingScriptWitnessesUTXOW Set ScriptHash
hs
  Conway.ScriptWitnessNotValidatingUTXOW Set ScriptHash
hs -> Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
ScriptWitnessNotValidatingUTXOW Set ScriptHash
hs
  Conway.MissingTxBodyMetadataHash TxAuxDataHash
dh -> TxAuxDataHash -> DijkstraUtxowPredFailure era
forall era. TxAuxDataHash -> DijkstraUtxowPredFailure era
MissingTxBodyMetadataHash TxAuxDataHash
dh
  Conway.MissingTxMetadata TxAuxDataHash
dh -> TxAuxDataHash -> DijkstraUtxowPredFailure era
forall era. TxAuxDataHash -> DijkstraUtxowPredFailure era
MissingTxMetadata TxAuxDataHash
dh
  Conway.ConflictingMetadataHash Mismatch RelEQ TxAuxDataHash
mm -> Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era
forall era.
Mismatch RelEQ TxAuxDataHash -> DijkstraUtxowPredFailure era
ConflictingMetadataHash Mismatch RelEQ TxAuxDataHash
mm
  ConwayUtxowPredFailure era
Conway.InvalidMetadata -> DijkstraUtxowPredFailure era
forall era. DijkstraUtxowPredFailure era
InvalidMetadata
  Conway.ExtraneousScriptWitnessesUTXOW Set ScriptHash
hs -> Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
ExtraneousScriptWitnessesUTXOW Set ScriptHash
hs
  Conway.MissingRedeemers [(PlutusPurpose AsItem era, ScriptHash)]
pps -> [(PlutusPurpose AsItem era, ScriptHash)]
-> DijkstraUtxowPredFailure era
forall era.
[(PlutusPurpose AsItem era, ScriptHash)]
-> DijkstraUtxowPredFailure era
MissingRedeemers [(PlutusPurpose AsItem era, ScriptHash)]
pps
  Conway.MissingRequiredDatums Set DataHash
hs1 Set DataHash
hs2 -> Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
forall era.
Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
MissingRequiredDatums Set DataHash
hs1 Set DataHash
hs2
  Conway.NotAllowedSupplementalDatums Set DataHash
hs1 Set DataHash
hs2 -> Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
forall era.
Set DataHash -> Set DataHash -> DijkstraUtxowPredFailure era
NotAllowedSupplementalDatums Set DataHash
hs1 Set DataHash
hs2
  Conway.PPViewHashesDontMatch Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
mm -> Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> DijkstraUtxowPredFailure era
forall era.
Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> DijkstraUtxowPredFailure era
PPViewHashesDontMatch Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
mm
  Conway.UnspendableUTxONoDatumHash Set TxIn
txs -> Set TxIn -> DijkstraUtxowPredFailure era
forall era. Set TxIn -> DijkstraUtxowPredFailure era
UnspendableUTxONoDatumHash Set TxIn
txs
  Conway.ExtraRedeemers [PlutusPurpose AsIx era]
pps -> [PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era
forall era.
[PlutusPurpose AsIx era] -> DijkstraUtxowPredFailure era
ExtraRedeemers [PlutusPurpose AsIx era]
pps
  Conway.MalformedScriptWitnesses Set ScriptHash
hs -> Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
MalformedScriptWitnesses Set ScriptHash
hs
  Conway.MalformedReferenceScripts Set ScriptHash
hs -> Set ScriptHash -> DijkstraUtxowPredFailure era
forall era. Set ScriptHash -> DijkstraUtxowPredFailure era
MalformedReferenceScripts Set ScriptHash
hs
  Conway.ScriptIntegrityHashMismatch Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
mm StrictMaybe ByteString
f -> Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ByteString -> DijkstraUtxowPredFailure era
forall era.
Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ByteString -> DijkstraUtxowPredFailure era
ScriptIntegrityHashMismatch Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
mm StrictMaybe ByteString
f