{-# 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.SubUtxo (
DijkstraSUBUTXO,
DijkstraSubUtxoPredFailure (..),
DijkstraSubUtxoEvent (..),
) where
import Cardano.Ledger.Address (
Addr (..),
RewardAccount,
)
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.Coin (Coin)
import Cardano.Ledger.Conway.Core
import Cardano.Ledger.Conway.Governance
import Cardano.Ledger.Dijkstra.Era (
DijkstraEra,
DijkstraSUBUTXO,
DijkstraSUBUTXOS,
)
import Cardano.Ledger.Dijkstra.Rules.SubUtxos (DijkstraSubUtxosPredFailure)
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.NonEmpty (NonEmptySet)
import Data.Word (Word32)
import GHC.Generics (Generic)
import NoThunks.Class (InspectHeapNamed (..), NoThunks (..))
data DijkstraSubUtxoPredFailure era
= SubUtxosFailure (PredicateFailure (EraRule "SUBUTXOS" era))
|
SubBadInputsUTxO (NonEmptySet TxIn)
| SubOutsideValidityIntervalUTxO
ValidityInterval
SlotNo
| SubMaxTxSizeUTxO (Mismatch RelLTEQ Word32)
| SubInputSetEmptyUTxO
|
SubWrongNetwork
Network
(NonEmptySet Addr)
| SubWrongNetworkWithdrawal
Network
(NonEmptySet RewardAccount)
|
SubOutputTooSmallUTxO (NonEmpty (TxOut era))
|
SubOutputBootAddrAttrsTooBig (NonEmpty (TxOut era))
|
SubOutputTooBigUTxO (NonEmpty (Int, Int, TxOut era))
|
SubWrongNetworkInTxBody
(Mismatch RelEQ Network)
|
SubOutsideForecast SlotNo
|
SubBabbageOutputTooSmallUTxO (NonEmpty (TxOut era, Coin))
deriving ((forall x.
DijkstraSubUtxoPredFailure era
-> Rep (DijkstraSubUtxoPredFailure era) x)
-> (forall x.
Rep (DijkstraSubUtxoPredFailure era) x
-> DijkstraSubUtxoPredFailure era)
-> Generic (DijkstraSubUtxoPredFailure era)
forall x.
Rep (DijkstraSubUtxoPredFailure era) x
-> DijkstraSubUtxoPredFailure era
forall x.
DijkstraSubUtxoPredFailure era
-> Rep (DijkstraSubUtxoPredFailure era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraSubUtxoPredFailure era) x
-> DijkstraSubUtxoPredFailure era
forall era x.
DijkstraSubUtxoPredFailure era
-> Rep (DijkstraSubUtxoPredFailure era) x
$cfrom :: forall era x.
DijkstraSubUtxoPredFailure era
-> Rep (DijkstraSubUtxoPredFailure era) x
from :: forall x.
DijkstraSubUtxoPredFailure era
-> Rep (DijkstraSubUtxoPredFailure era) x
$cto :: forall era x.
Rep (DijkstraSubUtxoPredFailure era) x
-> DijkstraSubUtxoPredFailure era
to :: forall x.
Rep (DijkstraSubUtxoPredFailure era) x
-> DijkstraSubUtxoPredFailure era
Generic)
deriving stock instance
( Era era
, Eq (Value era)
, Eq (PredicateFailure (EraRule "SUBUTXOS" era))
, Eq (TxOut era)
, Eq (Script era)
, Eq TxIn
) =>
Eq (DijkstraSubUtxoPredFailure era)
deriving stock instance
( Era era
, Show (Value era)
, Show (PredicateFailure (EraRule "SUBUTXOS" era))
, Show (TxOut era)
, Show (Script era)
, Show TxIn
) =>
Show (DijkstraSubUtxoPredFailure era)
deriving via
InspectHeapNamed "DijkstraUtxosPred" (DijkstraSubUtxoPredFailure era)
instance
NoThunks (DijkstraSubUtxoPredFailure era)
instance
( Era era
, NFData (Value era)
, NFData (TxOut era)
, NFData (PredicateFailure (EraRule "SUBUTXOS" era))
) =>
NFData (DijkstraSubUtxoPredFailure era)
type instance EraRuleFailure "SUBUTXO" DijkstraEra = DijkstraSubUtxoPredFailure DijkstraEra
type instance EraRuleEvent "SUBUTXO" DijkstraEra = DijkstraSubUtxoEvent DijkstraEra
instance InjectRuleFailure "SUBUTXO" DijkstraSubUtxoPredFailure DijkstraEra
instance InjectRuleFailure "SUBUTXO" DijkstraSubUtxosPredFailure DijkstraEra where
injectFailure :: DijkstraSubUtxosPredFailure DijkstraEra
-> EraRuleFailure "SUBUTXO" DijkstraEra
injectFailure = PredicateFailure (EraRule "SUBUTXOS" DijkstraEra)
-> DijkstraSubUtxoPredFailure DijkstraEra
DijkstraSubUtxosPredFailure DijkstraEra
-> EraRuleFailure "SUBUTXO" DijkstraEra
forall era.
PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era
SubUtxosFailure
instance InjectRuleEvent "SUBUTXO" DijkstraSubUtxoEvent DijkstraEra
newtype DijkstraSubUtxoEvent era = SubUtxosEvent (Event (EraRule "SUBUTXOS" era))
deriving ((forall x.
DijkstraSubUtxoEvent era -> Rep (DijkstraSubUtxoEvent era) x)
-> (forall x.
Rep (DijkstraSubUtxoEvent era) x -> DijkstraSubUtxoEvent era)
-> Generic (DijkstraSubUtxoEvent era)
forall x.
Rep (DijkstraSubUtxoEvent era) x -> DijkstraSubUtxoEvent era
forall x.
DijkstraSubUtxoEvent era -> Rep (DijkstraSubUtxoEvent era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraSubUtxoEvent era) x -> DijkstraSubUtxoEvent era
forall era x.
DijkstraSubUtxoEvent era -> Rep (DijkstraSubUtxoEvent era) x
$cfrom :: forall era x.
DijkstraSubUtxoEvent era -> Rep (DijkstraSubUtxoEvent era) x
from :: forall x.
DijkstraSubUtxoEvent era -> Rep (DijkstraSubUtxoEvent era) x
$cto :: forall era x.
Rep (DijkstraSubUtxoEvent era) x -> DijkstraSubUtxoEvent era
to :: forall x.
Rep (DijkstraSubUtxoEvent era) x -> DijkstraSubUtxoEvent era
Generic)
deriving instance Eq (Event (EraRule "SUBUTXOS" era)) => Eq (DijkstraSubUtxoEvent era)
instance NFData (Event (EraRule "SUBUTXOS" era)) => NFData (DijkstraSubUtxoEvent era)
instance
( ConwayEraGov era
, EraRule "SUBUTXO" era ~ DijkstraSUBUTXO era
, EraRule "SUBUTXOS" era ~ DijkstraSUBUTXOS era
, Embed (EraRule "SUBUTXOS" era) (DijkstraSUBUTXO era)
, BabbageEraTxBody era
) =>
STS (DijkstraSUBUTXO era)
where
type State (DijkstraSUBUTXO era) = UTxOState era
type Signal (DijkstraSUBUTXO era) = Tx SubTx era
type Environment (DijkstraSUBUTXO era) = UtxoEnv era
type BaseM (DijkstraSUBUTXO era) = ShelleyBase
type PredicateFailure (DijkstraSUBUTXO era) = DijkstraSubUtxoPredFailure era
type Event (DijkstraSUBUTXO era) = DijkstraSubUtxoEvent era
transitionRules :: [TransitionRule (DijkstraSUBUTXO era)]
transitionRules = [forall era.
(EraRule "SUBUTXO" era ~ DijkstraSUBUTXO era,
EraRule "SUBUTXOS" era ~ DijkstraSUBUTXOS era,
Embed (EraRule "SUBUTXOS" era) (DijkstraSUBUTXO era)) =>
TransitionRule (EraRule "SUBUTXO" era)
dijkstraSubUtxoTransition @era]
dijkstraSubUtxoTransition ::
forall era.
( EraRule "SUBUTXO" era ~ DijkstraSUBUTXO era
, EraRule "SUBUTXOS" era ~ DijkstraSUBUTXOS era
, Embed (EraRule "SUBUTXOS" era) (DijkstraSUBUTXO era)
) =>
TransitionRule (EraRule "SUBUTXO" era)
dijkstraSubUtxoTransition :: forall era.
(EraRule "SUBUTXO" era ~ DijkstraSUBUTXO era,
EraRule "SUBUTXOS" era ~ DijkstraSUBUTXOS era,
Embed (EraRule "SUBUTXOS" era) (DijkstraSUBUTXO era)) =>
TransitionRule (EraRule "SUBUTXO" era)
dijkstraSubUtxoTransition = do
TRC (env, state, signal) <- Rule
(DijkstraSUBUTXO era)
'Transition
(RuleContext 'Transition (DijkstraSUBUTXO era))
F (Clause (DijkstraSUBUTXO era) 'Transition)
(TRC (DijkstraSUBUTXO era))
forall sts (rtype :: RuleType).
Rule sts rtype (RuleContext rtype sts)
judgmentContext
trans @(EraRule "SUBUTXOS" era) $
TRC (env, state, signal)
instance
( ConwayEraGov era
, ConwayEraTxBody era
, EraPlutusContext era
, EraRule "SUBUTXOS" era ~ DijkstraSUBUTXOS era
) =>
Embed (DijkstraSUBUTXOS era) (DijkstraSUBUTXO era)
where
wrapFailed :: PredicateFailure (DijkstraSUBUTXOS era)
-> PredicateFailure (DijkstraSUBUTXO era)
wrapFailed = PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era
PredicateFailure (DijkstraSUBUTXOS era)
-> PredicateFailure (DijkstraSUBUTXO era)
forall era.
PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era
SubUtxosFailure
wrapEvent :: Event (DijkstraSUBUTXOS era) -> Event (DijkstraSUBUTXO era)
wrapEvent = Event (EraRule "SUBUTXOS" era) -> DijkstraSubUtxoEvent era
Event (DijkstraSUBUTXOS era) -> Event (DijkstraSUBUTXO era)
forall era.
Event (EraRule "SUBUTXOS" era) -> DijkstraSubUtxoEvent era
SubUtxosEvent
instance
( Era era
, EncCBOR (TxOut era)
, EncCBOR (PredicateFailure (EraRule "SUBUTXOS" era))
) =>
EncCBOR (DijkstraSubUtxoPredFailure era)
where
encCBOR :: DijkstraSubUtxoPredFailure era -> Encoding
encCBOR =
Encode Open (DijkstraSubUtxoPredFailure era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode Open (DijkstraSubUtxoPredFailure era) -> Encoding)
-> (DijkstraSubUtxoPredFailure era
-> Encode Open (DijkstraSubUtxoPredFailure era))
-> DijkstraSubUtxoPredFailure era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
SubUtxosFailure PredicateFailure (EraRule "SUBUTXOS" era)
a -> (PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode
Open
(PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era
SubUtxosFailure @era) Word
0 Encode
Open
(PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era)
-> Encode
(Closed Dense) (PredicateFailure (EraRule "SUBUTXOS" era))
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> PredicateFailure (EraRule "SUBUTXOS" era)
-> Encode
(Closed Dense) (PredicateFailure (EraRule "SUBUTXOS" era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To PredicateFailure (EraRule "SUBUTXOS" era)
a
SubBadInputsUTxO NonEmptySet TxIn
ins -> (NonEmptySet TxIn -> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode Open (NonEmptySet TxIn -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era. NonEmptySet TxIn -> DijkstraSubUtxoPredFailure era
SubBadInputsUTxO @era) Word
1 Encode Open (NonEmptySet TxIn -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmptySet TxIn)
-> Encode Open (DijkstraSubUtxoPredFailure 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
ins
SubOutsideValidityIntervalUTxO ValidityInterval
a SlotNo
b -> (ValidityInterval -> SlotNo -> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode
Open (ValidityInterval -> SlotNo -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum ValidityInterval -> SlotNo -> DijkstraSubUtxoPredFailure era
forall era.
ValidityInterval -> SlotNo -> DijkstraSubUtxoPredFailure era
SubOutsideValidityIntervalUTxO Word
2 Encode
Open (ValidityInterval -> SlotNo -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) ValidityInterval
-> Encode Open (SlotNo -> DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> ValidityInterval -> Encode (Closed Dense) ValidityInterval
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To ValidityInterval
a Encode Open (SlotNo -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) SlotNo
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> SlotNo -> Encode (Closed Dense) SlotNo
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To SlotNo
b
SubMaxTxSizeUTxO Mismatch RelLTEQ Word32
mm -> (Mismatch RelLTEQ Word32 -> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode
Open (Mismatch RelLTEQ Word32 -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelLTEQ Word32 -> DijkstraSubUtxoPredFailure era
forall era.
Mismatch RelLTEQ Word32 -> DijkstraSubUtxoPredFailure era
SubMaxTxSizeUTxO Word
3 Encode
Open (Mismatch RelLTEQ Word32 -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) (Mismatch RelLTEQ Word32)
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelLTEQ Word32
-> Encode (Closed Dense) (Mismatch RelLTEQ Word32)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelLTEQ Word32
mm
DijkstraSubUtxoPredFailure era
SubInputSetEmptyUTxO -> DijkstraSubUtxoPredFailure era
-> Word -> Encode Open (DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum DijkstraSubUtxoPredFailure era
forall era. DijkstraSubUtxoPredFailure era
SubInputSetEmptyUTxO Word
4
SubWrongNetwork Network
right NonEmptySet Addr
wrongs -> (Network -> NonEmptySet Addr -> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode
Open
(Network -> NonEmptySet Addr -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
Network -> NonEmptySet Addr -> DijkstraSubUtxoPredFailure era
SubWrongNetwork @era) Word
5 Encode
Open
(Network -> NonEmptySet Addr -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) Network
-> Encode Open (NonEmptySet Addr -> DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Network -> Encode (Closed Dense) Network
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Network
right Encode Open (NonEmptySet Addr -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmptySet Addr)
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet Addr -> Encode (Closed Dense) (NonEmptySet Addr)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet Addr
wrongs
SubWrongNetworkWithdrawal Network
right NonEmptySet RewardAccount
wrongs -> (Network
-> NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode
Open
(Network
-> NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
Network
-> NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era
SubWrongNetworkWithdrawal @era) Word
6 Encode
Open
(Network
-> NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) Network
-> Encode
Open (NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Network -> Encode (Closed Dense) Network
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Network
right Encode
Open (NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmptySet RewardAccount)
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmptySet RewardAccount
-> Encode (Closed Dense) (NonEmptySet RewardAccount)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmptySet RewardAccount
wrongs
SubOutputTooSmallUTxO NonEmpty (TxOut era)
outs -> (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode
Open (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era. NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era
SubOutputTooSmallUTxO @era) Word
7 Encode
Open (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmpty (TxOut era))
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (TxOut era)
-> Encode (Closed Dense) (NonEmpty (TxOut era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (TxOut era)
outs
SubOutputBootAddrAttrsTooBig NonEmpty (TxOut era)
outs -> (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode
Open (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era. NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era
SubOutputBootAddrAttrsTooBig @era) Word
8 Encode
Open (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmpty (TxOut era))
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (TxOut era)
-> Encode (Closed Dense) (NonEmpty (TxOut era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (TxOut era)
outs
SubOutputTooBigUTxO NonEmpty (Int, Int, TxOut era)
outs -> (NonEmpty (Int, Int, TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode
Open
(NonEmpty (Int, Int, TxOut era) -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum (forall era.
NonEmpty (Int, Int, TxOut era) -> DijkstraSubUtxoPredFailure era
SubOutputTooBigUTxO @era) Word
9 Encode
Open
(NonEmpty (Int, Int, TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmpty (Int, Int, TxOut era))
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (Int, Int, TxOut era)
-> Encode (Closed Dense) (NonEmpty (Int, Int, TxOut era))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (Int, Int, TxOut era)
outs
SubWrongNetworkInTxBody Mismatch RelEQ Network
mm -> (Mismatch RelEQ Network -> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode
Open (Mismatch RelEQ Network -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum Mismatch RelEQ Network -> DijkstraSubUtxoPredFailure era
forall era.
Mismatch RelEQ Network -> DijkstraSubUtxoPredFailure era
SubWrongNetworkInTxBody Word
10 Encode
Open (Mismatch RelEQ Network -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) (Mismatch RelEQ Network)
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> Mismatch RelEQ Network
-> Encode (Closed Dense) (Mismatch RelEQ Network)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To Mismatch RelEQ Network
mm
SubOutsideForecast SlotNo
a -> (SlotNo -> DijkstraSubUtxoPredFailure era)
-> Word -> Encode Open (SlotNo -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum SlotNo -> DijkstraSubUtxoPredFailure era
forall era. SlotNo -> DijkstraSubUtxoPredFailure era
SubOutsideForecast Word
11 Encode Open (SlotNo -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) SlotNo
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> SlotNo -> Encode (Closed Dense) SlotNo
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To SlotNo
a
SubBabbageOutputTooSmallUTxO NonEmpty (TxOut era, Coin)
x -> (NonEmpty (TxOut era, Coin) -> DijkstraSubUtxoPredFailure era)
-> Word
-> Encode
Open (NonEmpty (TxOut era, Coin) -> DijkstraSubUtxoPredFailure era)
forall t. t -> Word -> Encode Open t
Sum NonEmpty (TxOut era, Coin) -> DijkstraSubUtxoPredFailure era
forall era.
NonEmpty (TxOut era, Coin) -> DijkstraSubUtxoPredFailure era
SubBabbageOutputTooSmallUTxO Word
12 Encode
Open (NonEmpty (TxOut era, Coin) -> DijkstraSubUtxoPredFailure era)
-> Encode (Closed Dense) (NonEmpty (TxOut era, Coin))
-> Encode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> NonEmpty (TxOut era, Coin)
-> Encode (Closed Dense) (NonEmpty (TxOut era, Coin))
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To NonEmpty (TxOut era, Coin)
x
instance
( Era era
, DecCBOR (TxOut era)
, EncCBOR (Value era)
, DecCBOR (Value era)
, DecCBOR (PredicateFailure (EraRule "SUBUTXOS" era))
) =>
DecCBOR (DijkstraSubUtxoPredFailure era)
where
decCBOR :: forall s. Decoder s (DijkstraSubUtxoPredFailure era)
decCBOR = Decode (Closed Dense) (DijkstraSubUtxoPredFailure era)
-> Decoder s (DijkstraSubUtxoPredFailure era)
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (DijkstraSubUtxoPredFailure era)
-> Decoder s (DijkstraSubUtxoPredFailure era))
-> ((Word -> Decode Open (DijkstraSubUtxoPredFailure era))
-> Decode (Closed Dense) (DijkstraSubUtxoPredFailure era))
-> (Word -> Decode Open (DijkstraSubUtxoPredFailure era))
-> Decoder s (DijkstraSubUtxoPredFailure era)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text
-> (Word -> Decode Open (DijkstraSubUtxoPredFailure era))
-> Decode (Closed Dense) (DijkstraSubUtxoPredFailure era)
forall t.
Text -> (Word -> Decode Open t) -> Decode (Closed Dense) t
Summands Text
"DijkstraSubUtxoPredFailure" ((Word -> Decode Open (DijkstraSubUtxoPredFailure era))
-> Decoder s (DijkstraSubUtxoPredFailure era))
-> (Word -> Decode Open (DijkstraSubUtxoPredFailure era))
-> Decoder s (DijkstraSubUtxoPredFailure era)
forall a b. (a -> b) -> a -> b
$ \case
Word
0 -> (PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era)
-> Decode
Open
(PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era
forall era.
PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era
SubUtxosFailure Decode
Open
(PredicateFailure (EraRule "SUBUTXOS" era)
-> DijkstraSubUtxoPredFailure era)
-> Decode
(Closed (ZonkAny 0)) (PredicateFailure (EraRule "SUBUTXOS" era))
-> Decode Open (DijkstraSubUtxoPredFailure 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 "SUBUTXOS" era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
1 -> (NonEmptySet TxIn -> DijkstraSubUtxoPredFailure era)
-> Decode Open (NonEmptySet TxIn -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmptySet TxIn -> DijkstraSubUtxoPredFailure era
forall era. NonEmptySet TxIn -> DijkstraSubUtxoPredFailure era
SubBadInputsUTxO Decode Open (NonEmptySet TxIn -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 1)) (NonEmptySet TxIn)
-> Decode Open (DijkstraSubUtxoPredFailure 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)) (NonEmptySet TxIn)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
2 -> (ValidityInterval -> SlotNo -> DijkstraSubUtxoPredFailure era)
-> Decode
Open (ValidityInterval -> SlotNo -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD ValidityInterval -> SlotNo -> DijkstraSubUtxoPredFailure era
forall era.
ValidityInterval -> SlotNo -> DijkstraSubUtxoPredFailure era
SubOutsideValidityIntervalUTxO Decode
Open (ValidityInterval -> SlotNo -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 3)) ValidityInterval
-> Decode Open (SlotNo -> DijkstraSubUtxoPredFailure 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)) ValidityInterval
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (SlotNo -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 2)) SlotNo
-> Decode Open (DijkstraSubUtxoPredFailure 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)) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
3 -> (Mismatch RelLTEQ Word32 -> DijkstraSubUtxoPredFailure era)
-> Decode
Open (Mismatch RelLTEQ Word32 -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelLTEQ Word32 -> DijkstraSubUtxoPredFailure era
forall era.
Mismatch RelLTEQ Word32 -> DijkstraSubUtxoPredFailure era
SubMaxTxSizeUTxO Decode
Open (Mismatch RelLTEQ Word32 -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 4)) (Mismatch RelLTEQ Word32)
-> Decode Open (DijkstraSubUtxoPredFailure era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode (Closed w) a -> Decode w1 t
<! Decode (Closed (ZonkAny 4)) (Mismatch RelLTEQ Word32)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
4 -> DijkstraSubUtxoPredFailure era
-> Decode Open (DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD DijkstraSubUtxoPredFailure era
forall era. DijkstraSubUtxoPredFailure era
SubInputSetEmptyUTxO
Word
5 -> (Network -> NonEmptySet Addr -> DijkstraSubUtxoPredFailure era)
-> Decode
Open
(Network -> NonEmptySet Addr -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Network -> NonEmptySet Addr -> DijkstraSubUtxoPredFailure era
forall era.
Network -> NonEmptySet Addr -> DijkstraSubUtxoPredFailure era
SubWrongNetwork Decode
Open
(Network -> NonEmptySet Addr -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 6)) Network
-> Decode Open (NonEmptySet Addr -> DijkstraSubUtxoPredFailure 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)) Network
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode Open (NonEmptySet Addr -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 5)) (NonEmptySet Addr)
-> Decode Open (DijkstraSubUtxoPredFailure 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)) (NonEmptySet Addr)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
6 -> (Network
-> NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era)
-> Decode
Open
(Network
-> NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Network
-> NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era
forall era.
Network
-> NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era
SubWrongNetworkWithdrawal Decode
Open
(Network
-> NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 8)) Network
-> Decode
Open (NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure 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)) Network
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode
Open (NonEmptySet RewardAccount -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 7)) (NonEmptySet RewardAccount)
-> Decode Open (DijkstraSubUtxoPredFailure 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)) (NonEmptySet RewardAccount)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
7 -> (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Decode
Open (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era
forall era. NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era
SubOutputTooSmallUTxO Decode
Open (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 9)) (NonEmpty (TxOut era))
-> Decode Open (DijkstraSubUtxoPredFailure 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 (TxOut era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
8 -> (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Decode
Open (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era
forall era. NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era
SubOutputBootAddrAttrsTooBig Decode
Open (NonEmpty (TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 10)) (NonEmpty (TxOut era))
-> Decode Open (DijkstraSubUtxoPredFailure 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)) (NonEmpty (TxOut era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
9 -> (NonEmpty (Int, Int, TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Decode
Open
(NonEmpty (Int, Int, TxOut era) -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (Int, Int, TxOut era) -> DijkstraSubUtxoPredFailure era
forall era.
NonEmpty (Int, Int, TxOut era) -> DijkstraSubUtxoPredFailure era
SubOutputTooBigUTxO Decode
Open
(NonEmpty (Int, Int, TxOut era) -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 11)) (NonEmpty (Int, Int, TxOut era))
-> Decode Open (DijkstraSubUtxoPredFailure 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)) (NonEmpty (Int, Int, TxOut era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
10 -> (Mismatch RelEQ Network -> DijkstraSubUtxoPredFailure era)
-> Decode
Open (Mismatch RelEQ Network -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD Mismatch RelEQ Network -> DijkstraSubUtxoPredFailure era
forall era.
Mismatch RelEQ Network -> DijkstraSubUtxoPredFailure era
SubWrongNetworkInTxBody Decode
Open (Mismatch RelEQ Network -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 12)) (Mismatch RelEQ Network)
-> Decode Open (DijkstraSubUtxoPredFailure 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)) (Mismatch RelEQ Network)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
11 -> (SlotNo -> DijkstraSubUtxoPredFailure era)
-> Decode Open (SlotNo -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD SlotNo -> DijkstraSubUtxoPredFailure era
forall era. SlotNo -> DijkstraSubUtxoPredFailure era
SubOutsideForecast Decode Open (SlotNo -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 13)) SlotNo
-> Decode Open (DijkstraSubUtxoPredFailure 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)) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
12 -> (NonEmpty (TxOut era, Coin) -> DijkstraSubUtxoPredFailure era)
-> Decode
Open (NonEmpty (TxOut era, Coin) -> DijkstraSubUtxoPredFailure era)
forall t. t -> Decode Open t
SumD NonEmpty (TxOut era, Coin) -> DijkstraSubUtxoPredFailure era
forall era.
NonEmpty (TxOut era, Coin) -> DijkstraSubUtxoPredFailure era
SubBabbageOutputTooSmallUTxO Decode
Open (NonEmpty (TxOut era, Coin) -> DijkstraSubUtxoPredFailure era)
-> Decode (Closed (ZonkAny 14)) (NonEmpty (TxOut era, Coin))
-> Decode Open (DijkstraSubUtxoPredFailure 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)) (NonEmpty (TxOut era, Coin))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Word
n -> Word -> Decode Open (DijkstraSubUtxoPredFailure era)
forall (w :: Wrapped) t. Word -> Decode w t
Invalid Word
n