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

module Cardano.Ledger.Dijkstra.Rules.SubUtxow (
  DijkstraSUBUTXOW,
  DijkstraSubUtxowPredFailure (..),
  DijkstraSubUtxowEvent (..),
) where

import Cardano.Crypto.Hash (ByteString)
import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusContext)
import Cardano.Ledger.BaseTypes
import Cardano.Ledger.Binary (
  DecCBOR (..),
  EncCBOR (..),
 )
import Cardano.Ledger.Binary.Coders
import Cardano.Ledger.Conway.Core
import Cardano.Ledger.Conway.Governance
import Cardano.Ledger.Dijkstra.Era (
  DijkstraEra,
  DijkstraSUBUTXO,
  DijkstraSUBUTXOS,
  DijkstraSUBUTXOW,
 )
import Cardano.Ledger.Dijkstra.Rules.SubUtxo (
  DijkstraSubUtxoPredFailure,
 )
import Cardano.Ledger.Keys (VKey)
import Cardano.Ledger.Shelley.LedgerState (UTxOState)
import Cardano.Ledger.Shelley.Rules (UtxoEnv)
import Cardano.Ledger.TxIn (TxIn)
import Control.DeepSeq (NFData)
import Control.State.Transition.Extended
import Data.List.NonEmpty (NonEmpty)
import Data.Set (Set)
import Data.Set.NonEmpty (NonEmptySet)
import GHC.Generics (Generic)
import NoThunks.Class (
  InspectHeapNamed (..),
  NoThunks (..),
 )

data DijkstraSubUtxowPredFailure era
  = SubUtxoFailure (PredicateFailure (EraRule "SUBUTXO" era))
  | SubInvalidWitnessesUTXOW (NonEmpty (VKey Witness))
  | -- | witnesses which failed in verifiedWits function
    SubMissingVKeyWitnessesUTXOW
      -- | witnesses which were needed and not supplied
      (NonEmptySet (KeyHash Witness))
  | -- | missing scripts
    SubMissingScriptWitnessesUTXOW (NonEmptySet ScriptHash)
  | -- | failed scripts
    SubScriptWitnessNotValidatingUTXOW (NonEmptySet ScriptHash)
  | -- | hash of the full metadata
    SubMissingTxBodyMetadataHash TxAuxDataHash
  | -- | hash of the metadata included in the transaction body
    SubMissingTxMetadata TxAuxDataHash
  | SubConflictingMetadataHash (Mismatch RelEQ TxAuxDataHash)
  | -- | Contains out of range values (string`s too long)
    SubInvalidMetadata
  | -- | extraneous scripts
    SubExtraneousScriptWitnessesUTXOW (NonEmptySet ScriptHash)
  | SubMissingRedeemers (NonEmpty (PlutusPurpose AsItem era, ScriptHash))
  | SubMissingRequiredDatums
      -- | Set of missing data hashes
      (NonEmptySet DataHash)
      -- | Set of received data hashes
      (Set DataHash)
  | SubNotAllowedSupplementalDatums
      -- | Set of unallowed data hashes.
      (NonEmptySet DataHash)
      -- | Set of acceptable supplemental data hashes
      (Set DataHash)
  | SubPPViewHashesDontMatch
      (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
  | -- | Set of transaction inputs that are TwoPhase scripts, and should have a DataHash but don't
    SubUnspendableUTxONoDatumHash
      (NonEmptySet TxIn)
  | -- | List of redeemers not needed
    SubExtraRedeemers (NonEmpty (PlutusPurpose AsIx era))
  | -- | Embed UTXO rule failures
    SubMalformedScriptWitnesses (NonEmptySet ScriptHash)
  | -- | the set of malformed script witnesses
    SubMalformedReferenceScripts (NonEmptySet ScriptHash)
  | -- | The computed script integrity hash does not match the provided script integrity hash
    SubScriptIntegrityHashMismatch
      (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
      (StrictMaybe ByteString)
  deriving ((forall x.
 DijkstraSubUtxowPredFailure era
 -> Rep (DijkstraSubUtxowPredFailure era) x)
-> (forall x.
    Rep (DijkstraSubUtxowPredFailure era) x
    -> DijkstraSubUtxowPredFailure era)
-> Generic (DijkstraSubUtxowPredFailure era)
forall x.
Rep (DijkstraSubUtxowPredFailure era) x
-> DijkstraSubUtxowPredFailure era
forall x.
DijkstraSubUtxowPredFailure era
-> Rep (DijkstraSubUtxowPredFailure era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraSubUtxowPredFailure era) x
-> DijkstraSubUtxowPredFailure era
forall era x.
DijkstraSubUtxowPredFailure era
-> Rep (DijkstraSubUtxowPredFailure era) x
$cfrom :: forall era x.
DijkstraSubUtxowPredFailure era
-> Rep (DijkstraSubUtxowPredFailure era) x
from :: forall x.
DijkstraSubUtxowPredFailure era
-> Rep (DijkstraSubUtxowPredFailure era) x
$cto :: forall era x.
Rep (DijkstraSubUtxowPredFailure era) x
-> DijkstraSubUtxowPredFailure era
to :: forall x.
Rep (DijkstraSubUtxowPredFailure era) x
-> DijkstraSubUtxowPredFailure era
Generic)

deriving stock instance
  ( ConwayEraScript era
  , Eq (PredicateFailure (EraRule "SUBUTXO" era))
  ) =>
  Eq (DijkstraSubUtxowPredFailure era)

deriving stock instance
  ( ConwayEraScript era
  , Show (PredicateFailure (EraRule "SUBUTXO" era))
  ) =>
  Show (DijkstraSubUtxowPredFailure era)

deriving via
  InspectHeapNamed "DijkstraSubUtxowPred" (DijkstraSubUtxowPredFailure era)
  instance
    NoThunks (DijkstraSubUtxowPredFailure era)

instance
  ( ConwayEraScript era
  , NFData (TxCert era)
  , NFData (PredicateFailure (EraRule "SUBUTXO" era))
  ) =>
  NFData (DijkstraSubUtxowPredFailure era)

type instance EraRuleFailure "SUBUTXOW" DijkstraEra = DijkstraSubUtxowPredFailure DijkstraEra

type instance EraRuleEvent "SUBUTXOW" DijkstraEra = DijkstraSubUtxowEvent DijkstraEra

instance InjectRuleFailure "SUBUTXOW" DijkstraSubUtxowPredFailure DijkstraEra

instance InjectRuleFailure "SUBUTXOW" DijkstraSubUtxoPredFailure DijkstraEra where
  injectFailure :: DijkstraSubUtxoPredFailure DijkstraEra
-> EraRuleFailure "SUBUTXOW" DijkstraEra
injectFailure = PredicateFailure (EraRule "SUBUTXO" DijkstraEra)
-> DijkstraSubUtxowPredFailure DijkstraEra
DijkstraSubUtxoPredFailure DijkstraEra
-> EraRuleFailure "SUBUTXOW" DijkstraEra
forall era.
PredicateFailure (EraRule "SUBUTXO" era)
-> DijkstraSubUtxowPredFailure era
SubUtxoFailure

instance InjectRuleEvent "SUBUTXOW" DijkstraSubUtxowEvent DijkstraEra

newtype DijkstraSubUtxowEvent era = SubUtxo (Event (EraRule "SUBUTXO" era))
  deriving ((forall x.
 DijkstraSubUtxowEvent era -> Rep (DijkstraSubUtxowEvent era) x)
-> (forall x.
    Rep (DijkstraSubUtxowEvent era) x -> DijkstraSubUtxowEvent era)
-> Generic (DijkstraSubUtxowEvent era)
forall x.
Rep (DijkstraSubUtxowEvent era) x -> DijkstraSubUtxowEvent era
forall x.
DijkstraSubUtxowEvent era -> Rep (DijkstraSubUtxowEvent era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraSubUtxowEvent era) x -> DijkstraSubUtxowEvent era
forall era x.
DijkstraSubUtxowEvent era -> Rep (DijkstraSubUtxowEvent era) x
$cfrom :: forall era x.
DijkstraSubUtxowEvent era -> Rep (DijkstraSubUtxowEvent era) x
from :: forall x.
DijkstraSubUtxowEvent era -> Rep (DijkstraSubUtxowEvent era) x
$cto :: forall era x.
Rep (DijkstraSubUtxowEvent era) x -> DijkstraSubUtxowEvent era
to :: forall x.
Rep (DijkstraSubUtxowEvent era) x -> DijkstraSubUtxowEvent era
Generic)

deriving instance Eq (Event (EraRule "SUBUTXO" era)) => Eq (DijkstraSubUtxowEvent era)

instance NFData (Event (EraRule "SUBUTXO" era)) => NFData (DijkstraSubUtxowEvent era)

instance
  ( ConwayEraGov era
  , ConwayEraTxBody era
  , EraPlutusContext era
  , EraRule "SUBUTXO" era ~ DijkstraSUBUTXO era
  , EraRule "SUBUTXOW" era ~ DijkstraSUBUTXOW era
  , EraRule "SUBUTXOS" era ~ DijkstraSUBUTXOS era
  , Embed (EraRule "SUBUTXO" era) (DijkstraSUBUTXOW era)
  ) =>
  STS (DijkstraSUBUTXOW era)
  where
  type State (DijkstraSUBUTXOW era) = UTxOState era
  type Signal (DijkstraSUBUTXOW era) = Tx SubTx era
  type Environment (DijkstraSUBUTXOW era) = UtxoEnv era
  type BaseM (DijkstraSUBUTXOW era) = ShelleyBase
  type PredicateFailure (DijkstraSUBUTXOW era) = DijkstraSubUtxowPredFailure era
  type Event (DijkstraSUBUTXOW era) = DijkstraSubUtxowEvent era

  transitionRules :: [TransitionRule (DijkstraSUBUTXOW era)]
transitionRules = [forall era.
(EraRule "SUBUTXO" era ~ DijkstraSUBUTXO era,
 EraRule "SUBUTXOW" era ~ DijkstraSUBUTXOW era,
 Embed (EraRule "SUBUTXO" era) (DijkstraSUBUTXOW era)) =>
TransitionRule (EraRule "SUBUTXOW" era)
dijkstraSubUtxowTransition @era]

dijkstraSubUtxowTransition ::
  forall era.
  ( EraRule "SUBUTXO" era ~ DijkstraSUBUTXO era
  , EraRule "SUBUTXOW" era ~ DijkstraSUBUTXOW era
  , Embed (EraRule "SUBUTXO" era) (DijkstraSUBUTXOW era)
  ) =>
  TransitionRule (EraRule "SUBUTXOW" era)
dijkstraSubUtxowTransition :: forall era.
(EraRule "SUBUTXO" era ~ DijkstraSUBUTXO era,
 EraRule "SUBUTXOW" era ~ DijkstraSUBUTXOW era,
 Embed (EraRule "SUBUTXO" era) (DijkstraSUBUTXOW era)) =>
TransitionRule (EraRule "SUBUTXOW" era)
dijkstraSubUtxowTransition = do
  TRC (env, state, signal) <- Rule
  (DijkstraSUBUTXOW era)
  'Transition
  (RuleContext 'Transition (DijkstraSUBUTXOW era))
F (Clause (DijkstraSUBUTXOW era) 'Transition)
  (TRC (DijkstraSUBUTXOW era))
forall sts (rtype :: RuleType).
Rule sts rtype (RuleContext rtype sts)
judgmentContext
  trans @(EraRule "SUBUTXO" era) $ TRC (env, state, signal)

instance
  ( ConwayEraGov era
  , ConwayEraTxBody era
  , EraPlutusContext era
  , EraRule "SUBUTXO" era ~ DijkstraSUBUTXO era
  , EraRule "SUBUTXOS" era ~ DijkstraSUBUTXOS era
  , EraRule "SUBUTXOW" era ~ DijkstraSUBUTXOW era
  ) =>
  Embed (DijkstraSUBUTXO era) (DijkstraSUBUTXOW era)
  where
  wrapFailed :: PredicateFailure (DijkstraSUBUTXO era)
-> PredicateFailure (DijkstraSUBUTXOW era)
wrapFailed = PredicateFailure (EraRule "SUBUTXO" era)
-> DijkstraSubUtxowPredFailure era
PredicateFailure (DijkstraSUBUTXO era)
-> PredicateFailure (DijkstraSUBUTXOW era)
forall era.
PredicateFailure (EraRule "SUBUTXO" era)
-> DijkstraSubUtxowPredFailure era
SubUtxoFailure
  wrapEvent :: Event (DijkstraSUBUTXO era) -> Event (DijkstraSUBUTXOW era)
wrapEvent = Event (EraRule "SUBUTXO" era) -> DijkstraSubUtxowEvent era
Event (DijkstraSUBUTXO era) -> Event (DijkstraSUBUTXOW era)
forall era.
Event (EraRule "SUBUTXO" era) -> DijkstraSubUtxowEvent era
SubUtxo

instance
  ( ConwayEraScript era
  , EncCBOR (PredicateFailure (EraRule "SUBUTXO" era))
  ) =>
  EncCBOR (DijkstraSubUtxowPredFailure era)
  where
  encCBOR :: DijkstraSubUtxowPredFailure era -> Encoding
encCBOR =
    Encode Open (DijkstraSubUtxowPredFailure era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode Open (DijkstraSubUtxowPredFailure era) -> Encoding)
-> (DijkstraSubUtxowPredFailure era
    -> Encode Open (DijkstraSubUtxowPredFailure era))
-> DijkstraSubUtxowPredFailure era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
      SubUtxoFailure PredicateFailure (EraRule "SUBUTXO" era)
x -> (PredicateFailure (EraRule "SUBUTXO" era)
 -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open
     (PredicateFailure (EraRule "SUBUTXO" era)
      -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum PredicateFailure (EraRule "SUBUTXO" era)
-> DijkstraSubUtxowPredFailure era
forall era.
PredicateFailure (EraRule "SUBUTXO" era)
-> DijkstraSubUtxowPredFailure era
SubUtxoFailure Word
0 Encode
  Open
  (PredicateFailure (EraRule "SUBUTXO" era)
   -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "SUBUTXO" era))
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> PredicateFailure (EraRule "SUBUTXO" era)
-> Encode (Closed Dense) (PredicateFailure (EraRule "SUBUTXO" era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To PredicateFailure (EraRule "SUBUTXO" era)
x
      SubInvalidWitnessesUTXOW NonEmpty (VKey Witness)
xs -> (NonEmpty (VKey Witness) -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open (NonEmpty (VKey Witness) -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty (VKey Witness) -> DijkstraSubUtxowPredFailure era
forall era.
NonEmpty (VKey Witness) -> DijkstraSubUtxowPredFailure era
SubInvalidWitnessesUTXOW Word
1 Encode
  Open (NonEmpty (VKey Witness) -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmpty (VKey Witness))
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (VKey Witness)
-> Encode (Closed Dense) (NonEmpty (VKey Witness))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (VKey Witness)
xs
      SubMissingVKeyWitnessesUTXOW NonEmptySet (KeyHash Witness)
xs -> (NonEmptySet (KeyHash Witness) -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open
     (NonEmptySet (KeyHash Witness) -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptySet (KeyHash Witness) -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet (KeyHash Witness) -> DijkstraSubUtxowPredFailure era
SubMissingVKeyWitnessesUTXOW Word
2 Encode
  Open
  (NonEmptySet (KeyHash Witness) -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmptySet (KeyHash Witness))
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet (KeyHash Witness)
-> Encode (Closed Dense) (NonEmptySet (KeyHash Witness))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet (KeyHash Witness)
xs
      SubMissingScriptWitnessesUTXOW NonEmptySet ScriptHash
xs -> (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
SubMissingScriptWitnessesUTXOW Word
3 Encode
  Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmptySet ScriptHash)
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet ScriptHash
-> Encode (Closed Dense) (NonEmptySet ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet ScriptHash
xs
      SubScriptWitnessNotValidatingUTXOW NonEmptySet ScriptHash
xs -> (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
SubScriptWitnessNotValidatingUTXOW Word
4 Encode
  Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmptySet ScriptHash)
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet ScriptHash
-> Encode (Closed Dense) (NonEmptySet ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet ScriptHash
xs
      SubMissingTxBodyMetadataHash TxAuxDataHash
xs -> (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode Open (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum TxAuxDataHash -> DijkstraSubUtxowPredFailure era
forall era. TxAuxDataHash -> DijkstraSubUtxowPredFailure era
SubMissingTxBodyMetadataHash Word
5 Encode Open (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) TxAuxDataHash
-> Encode Open (DijkstraSubUtxowPredFailure 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
      SubMissingTxMetadata TxAuxDataHash
xs -> (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode Open (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum TxAuxDataHash -> DijkstraSubUtxowPredFailure era
forall era. TxAuxDataHash -> DijkstraSubUtxowPredFailure era
SubMissingTxMetadata Word
6 Encode Open (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) TxAuxDataHash
-> Encode Open (DijkstraSubUtxowPredFailure 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
      SubConflictingMetadataHash Mismatch RelEQ TxAuxDataHash
mm -> (Mismatch RelEQ TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open
     (Mismatch RelEQ TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelEQ TxAuxDataHash -> DijkstraSubUtxowPredFailure era
forall era.
Mismatch RelEQ TxAuxDataHash -> DijkstraSubUtxowPredFailure era
SubConflictingMetadataHash Word
7 Encode
  Open
  (Mismatch RelEQ TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (Mismatch RelEQ TxAuxDataHash)
-> Encode Open (DijkstraSubUtxowPredFailure 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
      DijkstraSubUtxowPredFailure era
SubInvalidMetadata -> DijkstraSubUtxowPredFailure era
-> Word -> Encode Open (DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum DijkstraSubUtxowPredFailure era
forall era. DijkstraSubUtxowPredFailure era
SubInvalidMetadata Word
8
      SubExtraneousScriptWitnessesUTXOW NonEmptySet ScriptHash
xs -> (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
SubExtraneousScriptWitnessesUTXOW Word
9 Encode
  Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmptySet ScriptHash)
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet ScriptHash
-> Encode (Closed Dense) (NonEmptySet ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet ScriptHash
xs
      SubMissingRedeemers NonEmpty (PlutusPurpose AsItem era, ScriptHash)
x -> (NonEmpty (PlutusPurpose AsItem era, ScriptHash)
 -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open
     (NonEmpty (PlutusPurpose AsItem era, ScriptHash)
      -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty (PlutusPurpose AsItem era, ScriptHash)
-> DijkstraSubUtxowPredFailure era
forall era.
NonEmpty (PlutusPurpose AsItem era, ScriptHash)
-> DijkstraSubUtxowPredFailure era
SubMissingRedeemers Word
10 Encode
  Open
  (NonEmpty (PlutusPurpose AsItem era, ScriptHash)
   -> DijkstraSubUtxowPredFailure era)
-> Encode
     (Closed Dense) (NonEmpty (PlutusPurpose AsItem era, ScriptHash))
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (PlutusPurpose AsItem era, ScriptHash)
-> Encode
     (Closed Dense) (NonEmpty (PlutusPurpose AsItem era, ScriptHash))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (PlutusPurpose AsItem era, ScriptHash)
x
      SubMissingRequiredDatums NonEmptySet DataHash
x Set DataHash
y -> (NonEmptySet DataHash
 -> Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open
     (NonEmptySet DataHash
      -> Set DataHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptySet DataHash
-> Set DataHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet DataHash
-> Set DataHash -> DijkstraSubUtxowPredFailure era
SubMissingRequiredDatums Word
11 Encode
  Open
  (NonEmptySet DataHash
   -> Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmptySet DataHash)
-> Encode Open (Set DataHash -> DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet DataHash
-> Encode (Closed Dense) (NonEmptySet DataHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet DataHash
x Encode Open (Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (Set DataHash)
-> Encode Open (DijkstraSubUtxowPredFailure 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
      SubNotAllowedSupplementalDatums NonEmptySet DataHash
x Set DataHash
y -> (NonEmptySet DataHash
 -> Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open
     (NonEmptySet DataHash
      -> Set DataHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptySet DataHash
-> Set DataHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet DataHash
-> Set DataHash -> DijkstraSubUtxowPredFailure era
SubNotAllowedSupplementalDatums Word
12 Encode
  Open
  (NonEmptySet DataHash
   -> Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmptySet DataHash)
-> Encode Open (Set DataHash -> DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet DataHash
-> Encode (Closed Dense) (NonEmptySet DataHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet DataHash
x Encode Open (Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (Set DataHash)
-> Encode Open (DijkstraSubUtxowPredFailure 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
      SubPPViewHashesDontMatch Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
mm -> (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
 -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
      -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> DijkstraSubUtxowPredFailure era
forall era.
Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> DijkstraSubUtxowPredFailure era
SubPPViewHashesDontMatch Word
13 Encode
  Open
  (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
   -> DijkstraSubUtxowPredFailure era)
-> Encode
     (Closed Dense) (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
-> Encode Open (DijkstraSubUtxowPredFailure 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
      SubUnspendableUTxONoDatumHash NonEmptySet TxIn
x -> (NonEmptySet TxIn -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open (NonEmptySet TxIn -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptySet TxIn -> DijkstraSubUtxowPredFailure era
forall era. NonEmptySet TxIn -> DijkstraSubUtxowPredFailure era
SubUnspendableUTxONoDatumHash Word
14 Encode Open (NonEmptySet TxIn -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmptySet TxIn)
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet TxIn -> Encode (Closed Dense) (NonEmptySet TxIn)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet TxIn
x
      SubExtraRedeemers NonEmpty (PlutusPurpose AsIx era)
x -> (NonEmpty (PlutusPurpose AsIx era)
 -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open
     (NonEmpty (PlutusPurpose AsIx era)
      -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty (PlutusPurpose AsIx era)
-> DijkstraSubUtxowPredFailure era
forall era.
NonEmpty (PlutusPurpose AsIx era)
-> DijkstraSubUtxowPredFailure era
SubExtraRedeemers Word
15 Encode
  Open
  (NonEmpty (PlutusPurpose AsIx era)
   -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmpty (PlutusPurpose AsIx era))
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (PlutusPurpose AsIx era)
-> Encode (Closed Dense) (NonEmpty (PlutusPurpose AsIx era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (PlutusPurpose AsIx era)
x
      SubMalformedScriptWitnesses NonEmptySet ScriptHash
x -> (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
SubMalformedScriptWitnesses Word
16 Encode
  Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmptySet ScriptHash)
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet ScriptHash
-> Encode (Closed Dense) (NonEmptySet ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet ScriptHash
x
      SubMalformedReferenceScripts NonEmptySet ScriptHash
x -> (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
SubMalformedReferenceScripts Word
17 Encode
  Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (NonEmptySet ScriptHash)
-> Encode Open (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet ScriptHash
-> Encode (Closed Dense) (NonEmptySet ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet ScriptHash
x
      SubScriptIntegrityHashMismatch Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
x StrictMaybe ByteString
y -> (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
 -> StrictMaybe ByteString -> DijkstraSubUtxowPredFailure era)
-> Word
-> Encode
     Open
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
      -> StrictMaybe ByteString -> DijkstraSubUtxowPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ByteString -> DijkstraSubUtxowPredFailure era
forall era.
Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ByteString -> DijkstraSubUtxowPredFailure era
SubScriptIntegrityHashMismatch Word
18 Encode
  Open
  (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
   -> StrictMaybe ByteString -> DijkstraSubUtxowPredFailure era)
-> Encode
     (Closed Dense) (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
-> Encode
     Open (StrictMaybe ByteString -> DijkstraSubUtxowPredFailure 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 -> DijkstraSubUtxowPredFailure era)
-> Encode (Closed Dense) (StrictMaybe ByteString)
-> Encode Open (DijkstraSubUtxowPredFailure 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 "SUBUTXO" era))
  ) =>
  DecCBOR (DijkstraSubUtxowPredFailure era)
  where
  decCBOR :: forall s. Decoder s (DijkstraSubUtxowPredFailure era)
decCBOR = Decode (Closed Dense) (DijkstraSubUtxowPredFailure era)
-> Decoder s (DijkstraSubUtxowPredFailure era)
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (DijkstraSubUtxowPredFailure era)
 -> Decoder s (DijkstraSubUtxowPredFailure era))
-> ((Word -> Decode Open (DijkstraSubUtxowPredFailure era))
    -> Decode (Closed Dense) (DijkstraSubUtxowPredFailure era))
-> (Word -> Decode Open (DijkstraSubUtxowPredFailure era))
-> Decoder s (DijkstraSubUtxowPredFailure era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text
-> (Word -> Decode Open (DijkstraSubUtxowPredFailure era))
-> Decode (Closed Dense) (DijkstraSubUtxowPredFailure era)
forall t.
Text -> (Word -> Decode Open t) -> Decode (Closed Dense) t
Summands Text
"DijkstraUtxowPred" ((Word -> Decode Open (DijkstraSubUtxowPredFailure era))
 -> Decoder s (DijkstraSubUtxowPredFailure era))
-> (Word -> Decode Open (DijkstraSubUtxowPredFailure era))
-> Decoder s (DijkstraSubUtxowPredFailure era)
forall a b. (a -> b) -> a -> b
$ \case
    Word
0 -> (PredicateFailure (EraRule "SUBUTXO" era)
 -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open
     (PredicateFailure (EraRule "SUBUTXO" era)
      -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD PredicateFailure (EraRule "SUBUTXO" era)
-> DijkstraSubUtxowPredFailure era
forall era.
PredicateFailure (EraRule "SUBUTXO" era)
-> DijkstraSubUtxowPredFailure era
SubUtxoFailure Decode
  Open
  (PredicateFailure (EraRule "SUBUTXO" era)
   -> DijkstraSubUtxowPredFailure era)
-> Decode
     (Closed (ZonkAny 0)) (PredicateFailure (EraRule "SUBUTXO" era))
-> Decode Open (DijkstraSubUtxowPredFailure 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 "SUBUTXO" era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
1 -> (NonEmpty (VKey Witness) -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open (NonEmpty (VKey Witness) -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (VKey Witness) -> DijkstraSubUtxowPredFailure era
forall era.
NonEmpty (VKey Witness) -> DijkstraSubUtxowPredFailure era
SubInvalidWitnessesUTXOW Decode
  Open (NonEmpty (VKey Witness) -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 1)) (NonEmpty (VKey Witness))
-> Decode Open (DijkstraSubUtxowPredFailure 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)) (NonEmpty (VKey Witness))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
2 -> (NonEmptySet (KeyHash Witness) -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open
     (NonEmptySet (KeyHash Witness) -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet (KeyHash Witness) -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet (KeyHash Witness) -> DijkstraSubUtxowPredFailure era
SubMissingVKeyWitnessesUTXOW Decode
  Open
  (NonEmptySet (KeyHash Witness) -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 2)) (NonEmptySet (KeyHash Witness))
-> Decode Open (DijkstraSubUtxowPredFailure 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)) (NonEmptySet (KeyHash Witness))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
3 -> (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
SubMissingScriptWitnessesUTXOW Decode
  Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 3)) (NonEmptySet ScriptHash)
-> Decode Open (DijkstraSubUtxowPredFailure 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)) (NonEmptySet ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
4 -> (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
SubScriptWitnessNotValidatingUTXOW Decode
  Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 4)) (NonEmptySet ScriptHash)
-> Decode Open (DijkstraSubUtxowPredFailure 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)) (NonEmptySet ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
5 -> (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
-> Decode Open (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD TxAuxDataHash -> DijkstraSubUtxowPredFailure era
forall era. TxAuxDataHash -> DijkstraSubUtxowPredFailure era
SubMissingTxBodyMetadataHash Decode Open (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 5)) TxAuxDataHash
-> Decode Open (DijkstraSubUtxowPredFailure 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 -> DijkstraSubUtxowPredFailure era)
-> Decode Open (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD TxAuxDataHash -> DijkstraSubUtxowPredFailure era
forall era. TxAuxDataHash -> DijkstraSubUtxowPredFailure era
SubMissingTxMetadata Decode Open (TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 6)) TxAuxDataHash
-> Decode Open (DijkstraSubUtxowPredFailure 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 -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open
     (Mismatch RelEQ TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ TxAuxDataHash -> DijkstraSubUtxowPredFailure era
forall era.
Mismatch RelEQ TxAuxDataHash -> DijkstraSubUtxowPredFailure era
SubConflictingMetadataHash Decode
  Open
  (Mismatch RelEQ TxAuxDataHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 7)) (Mismatch RelEQ TxAuxDataHash)
-> Decode Open (DijkstraSubUtxowPredFailure 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 -> DijkstraSubUtxowPredFailure era
-> Decode Open (DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD DijkstraSubUtxowPredFailure era
forall era. DijkstraSubUtxowPredFailure era
SubInvalidMetadata
    Word
9 -> (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
SubExtraneousScriptWitnessesUTXOW Decode
  Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 8)) (NonEmptySet ScriptHash)
-> Decode Open (DijkstraSubUtxowPredFailure 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)) (NonEmptySet ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
10 -> (NonEmpty (PlutusPurpose AsItem era, ScriptHash)
 -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open
     (NonEmpty (PlutusPurpose AsItem era, ScriptHash)
      -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (PlutusPurpose AsItem era, ScriptHash)
-> DijkstraSubUtxowPredFailure era
forall era.
NonEmpty (PlutusPurpose AsItem era, ScriptHash)
-> DijkstraSubUtxowPredFailure era
SubMissingRedeemers Decode
  Open
  (NonEmpty (PlutusPurpose AsItem era, ScriptHash)
   -> DijkstraSubUtxowPredFailure era)
-> Decode
     (Closed (ZonkAny 9))
     (NonEmpty (PlutusPurpose AsItem era, ScriptHash))
-> Decode Open (DijkstraSubUtxowPredFailure 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))
  (NonEmpty (PlutusPurpose AsItem era, ScriptHash))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
11 -> (NonEmptySet DataHash
 -> Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open
     (NonEmptySet DataHash
      -> Set DataHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet DataHash
-> Set DataHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet DataHash
-> Set DataHash -> DijkstraSubUtxowPredFailure era
SubMissingRequiredDatums Decode
  Open
  (NonEmptySet DataHash
   -> Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 11)) (NonEmptySet DataHash)
-> Decode Open (Set DataHash -> DijkstraSubUtxowPredFailure 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)) (NonEmptySet DataHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 10)) (Set DataHash)
-> Decode Open (DijkstraSubUtxowPredFailure 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 -> (NonEmptySet DataHash
 -> Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open
     (NonEmptySet DataHash
      -> Set DataHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet DataHash
-> Set DataHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet DataHash
-> Set DataHash -> DijkstraSubUtxowPredFailure era
SubNotAllowedSupplementalDatums Decode
  Open
  (NonEmptySet DataHash
   -> Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 13)) (NonEmptySet DataHash)
-> Decode Open (Set DataHash -> DijkstraSubUtxowPredFailure 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)) (NonEmptySet DataHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (Set DataHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 12)) (Set DataHash)
-> Decode Open (DijkstraSubUtxowPredFailure 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)
 -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
      -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> DijkstraSubUtxowPredFailure era
forall era.
Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> DijkstraSubUtxowPredFailure era
SubPPViewHashesDontMatch Decode
  Open
  (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
   -> DijkstraSubUtxowPredFailure era)
-> Decode
     (Closed (ZonkAny 14))
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
-> Decode Open (DijkstraSubUtxowPredFailure 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 -> (NonEmptySet TxIn -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open (NonEmptySet TxIn -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet TxIn -> DijkstraSubUtxowPredFailure era
forall era. NonEmptySet TxIn -> DijkstraSubUtxowPredFailure era
SubUnspendableUTxONoDatumHash Decode Open (NonEmptySet TxIn -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 15)) (NonEmptySet TxIn)
-> Decode Open (DijkstraSubUtxowPredFailure 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)) (NonEmptySet TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
15 -> (NonEmpty (PlutusPurpose AsIx era)
 -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open
     (NonEmpty (PlutusPurpose AsIx era)
      -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (PlutusPurpose AsIx era)
-> DijkstraSubUtxowPredFailure era
forall era.
NonEmpty (PlutusPurpose AsIx era)
-> DijkstraSubUtxowPredFailure era
SubExtraRedeemers Decode
  Open
  (NonEmpty (PlutusPurpose AsIx era)
   -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 16)) (NonEmpty (PlutusPurpose AsIx era))
-> Decode Open (DijkstraSubUtxowPredFailure 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)) (NonEmpty (PlutusPurpose AsIx era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
16 -> (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
SubMalformedScriptWitnesses Decode
  Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 17)) (NonEmptySet ScriptHash)
-> Decode Open (DijkstraSubUtxowPredFailure 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)) (NonEmptySet ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
17 -> (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
forall era.
NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era
SubMalformedReferenceScripts Decode
  Open (NonEmptySet ScriptHash -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 18)) (NonEmptySet ScriptHash)
-> Decode Open (DijkstraSubUtxowPredFailure 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)) (NonEmptySet ScriptHash)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
    Word
18 -> (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
 -> StrictMaybe ByteString -> DijkstraSubUtxowPredFailure era)
-> Decode
     Open
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
      -> StrictMaybe ByteString -> DijkstraSubUtxowPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ByteString -> DijkstraSubUtxowPredFailure era
forall era.
Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
-> StrictMaybe ByteString -> DijkstraSubUtxowPredFailure era
SubScriptIntegrityHashMismatch Decode
  Open
  (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash)
   -> StrictMaybe ByteString -> DijkstraSubUtxowPredFailure era)
-> Decode
     (Closed (ZonkAny 20))
     (Mismatch RelEQ (StrictMaybe ScriptIntegrityHash))
-> Decode
     Open (StrictMaybe ByteString -> DijkstraSubUtxowPredFailure 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 -> DijkstraSubUtxowPredFailure era)
-> Decode (Closed (ZonkAny 19)) (StrictMaybe ByteString)
-> Decode Open (DijkstraSubUtxowPredFailure 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 (DijkstraSubUtxowPredFailure era)
forall (w :: Wrapped) t. Word -> Decode w t
Invalid Word
n