{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE QuantifiedConstraints #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Dijkstra.Scripts (
PlutusScript (..),
DijkstraPlutusPurpose (..),
DijkstraEraScript (..),
DijkstraNativeScript (MkDijkstraNativeScript),
DijkstraNativeScriptRaw (..),
pattern GuardingPurpose,
pattern RequireGuard,
evalDijkstraNativeScript,
upgradeTimelock,
) where
import Cardano.Ledger.Address (RewardAccount)
import Cardano.Ledger.Allegra.Scripts
import Cardano.Ledger.Alonzo.Scripts (
AlonzoEraScript (..),
AsItem,
AsIx (..),
AsIxItem,
alonzoScriptPrefixTag,
)
import Cardano.Ledger.BaseTypes
import Cardano.Ledger.Binary (
Annotator,
CBORGroup (..),
DecCBOR (decCBOR),
DecCBORGroup (..),
EncCBOR (encCBOR),
EncCBORGroup (..),
ToCBOR (..),
decodeWord8,
encodeWord8,
encodedSizeExpr,
)
import Cardano.Ledger.Binary.Coders (
Decode (..),
Encode (..),
Wrapped (..),
decode,
encode,
(!>),
(<!),
(<*!),
)
import Cardano.Ledger.Conway (ConwayEra)
import Cardano.Ledger.Conway.Governance (ProposalProcedure, Voter)
import Cardano.Ledger.Conway.Scripts
import Cardano.Ledger.Core
import Cardano.Ledger.Credential (Credential)
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
import Cardano.Ledger.Dijkstra.PParams ()
import Cardano.Ledger.Dijkstra.TxCert ()
import Cardano.Ledger.Mary.Value (PolicyID)
import Cardano.Ledger.MemoBytes
import Cardano.Ledger.Plutus (Language (..), Plutus, SLanguage (..), plutusSLanguage)
import Cardano.Ledger.Shelley.Scripts
import Cardano.Ledger.TxIn (TxIn)
import Control.DeepSeq (NFData (..), rwhnf)
import Data.Aeson (KeyValue (..), ToJSON (..))
import Data.MemPack (MemPack (..), packTagM, packedTagByteCount, unknownTagM, unpackTagM)
import Data.OSet.Strict (OSet)
import qualified Data.OSet.Strict as OSet
import Data.Sequence.Strict (StrictSeq)
import Data.Sequence.Strict as Seq (StrictSeq (Empty, (:<|)))
import qualified Data.Sequence.Strict as SSeq
import Data.Set as Set (Set, member)
import Data.Typeable (Proxy (..), Typeable)
import Data.Word (Word16, Word32, Word8)
import GHC.Generics (Generic)
import NoThunks.Class (NoThunks)
data DijkstraPlutusPurpose f era
= DijkstraSpending !(f Word32 TxIn)
| DijkstraMinting !(f Word32 PolicyID)
| DijkstraCertifying !(f Word32 (TxCert era))
| DijkstraRewarding !(f Word32 RewardAccount)
| DijkstraVoting !(f Word32 Voter)
| DijkstraProposing !(f Word32 (ProposalProcedure era))
| DijkstraGuarding !(f Word32 ScriptHash)
deriving ((forall x.
DijkstraPlutusPurpose f era -> Rep (DijkstraPlutusPurpose f era) x)
-> (forall x.
Rep (DijkstraPlutusPurpose f era) x -> DijkstraPlutusPurpose f era)
-> Generic (DijkstraPlutusPurpose f era)
forall x.
Rep (DijkstraPlutusPurpose f era) x -> DijkstraPlutusPurpose f era
forall x.
DijkstraPlutusPurpose f era -> Rep (DijkstraPlutusPurpose f era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (f :: * -> * -> *) era x.
Rep (DijkstraPlutusPurpose f era) x -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era x.
DijkstraPlutusPurpose f era -> Rep (DijkstraPlutusPurpose f era) x
$cfrom :: forall (f :: * -> * -> *) era x.
DijkstraPlutusPurpose f era -> Rep (DijkstraPlutusPurpose f era) x
from :: forall x.
DijkstraPlutusPurpose f era -> Rep (DijkstraPlutusPurpose f era) x
$cto :: forall (f :: * -> * -> *) era x.
Rep (DijkstraPlutusPurpose f era) x -> DijkstraPlutusPurpose f era
to :: forall x.
Rep (DijkstraPlutusPurpose f era) x -> DijkstraPlutusPurpose f era
Generic)
instance Inject (ConwayPlutusPurpose f era) (DijkstraPlutusPurpose f era) where
inject :: ConwayPlutusPurpose f era -> DijkstraPlutusPurpose f era
inject = \case
ConwaySpending f Word32 TxIn
p -> f Word32 TxIn -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 TxIn -> DijkstraPlutusPurpose f era
DijkstraSpending f Word32 TxIn
p
ConwayMinting f Word32 PolicyID
p -> f Word32 PolicyID -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> DijkstraPlutusPurpose f era
DijkstraMinting f Word32 PolicyID
p
ConwayCertifying f Word32 (TxCert era)
p -> f Word32 (TxCert era) -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> DijkstraPlutusPurpose f era
DijkstraCertifying f Word32 (TxCert era)
p
ConwayRewarding f Word32 RewardAccount
p -> f Word32 RewardAccount -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> DijkstraPlutusPurpose f era
DijkstraRewarding f Word32 RewardAccount
p
ConwayVoting f Word32 Voter
p -> f Word32 Voter -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 Voter -> DijkstraPlutusPurpose f era
DijkstraVoting f Word32 Voter
p
ConwayProposing f Word32 (ProposalProcedure era)
p -> f Word32 (ProposalProcedure era) -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> DijkstraPlutusPurpose f era
DijkstraProposing f Word32 (ProposalProcedure era)
p
deriving via
CBORGroup (DijkstraPlutusPurpose f era)
instance
( Typeable f
, EraPParams era
, forall a b. (DecCBOR a, DecCBOR b) => DecCBOR (f a b)
, forall a b. (EncCBOR a, EncCBOR b) => EncCBOR (f a b)
, EraTxCert era
) =>
DecCBOR (DijkstraPlutusPurpose f era)
deriving via
CBORGroup (DijkstraPlutusPurpose f era)
instance
( Typeable f
, EraPParams era
, forall a b. (EncCBOR a, EncCBOR b) => EncCBOR (f a b)
, EraTxCert era
) =>
EncCBOR (DijkstraPlutusPurpose f era)
instance
( Typeable f
, EraPParams era
, forall a b. (DecCBOR a, DecCBOR b) => DecCBOR (f a b)
, DecCBOR (TxCert era)
) =>
DecCBORGroup (DijkstraPlutusPurpose f era)
where
decCBORGroup :: forall s. Decoder s (DijkstraPlutusPurpose f era)
decCBORGroup =
Decoder s Word8
forall s. Decoder s Word8
decodeWord8 Decoder s Word8
-> (Word8 -> Decoder s (DijkstraPlutusPurpose f era))
-> Decoder s (DijkstraPlutusPurpose f era)
forall a b. Decoder s a -> (a -> Decoder s b) -> Decoder s b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Word8
0 -> f Word32 TxIn -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 TxIn -> DijkstraPlutusPurpose f era
DijkstraSpending (f Word32 TxIn -> DijkstraPlutusPurpose f era)
-> Decoder s (f Word32 TxIn)
-> Decoder s (DijkstraPlutusPurpose f era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (f Word32 TxIn)
forall s. Decoder s (f Word32 TxIn)
forall a s. DecCBOR a => Decoder s a
decCBOR
Word8
1 -> f Word32 PolicyID -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> DijkstraPlutusPurpose f era
DijkstraMinting (f Word32 PolicyID -> DijkstraPlutusPurpose f era)
-> Decoder s (f Word32 PolicyID)
-> Decoder s (DijkstraPlutusPurpose f era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (f Word32 PolicyID)
forall s. Decoder s (f Word32 PolicyID)
forall a s. DecCBOR a => Decoder s a
decCBOR
Word8
2 -> f Word32 (TxCert era) -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> DijkstraPlutusPurpose f era
DijkstraCertifying (f Word32 (TxCert era) -> DijkstraPlutusPurpose f era)
-> Decoder s (f Word32 (TxCert era))
-> Decoder s (DijkstraPlutusPurpose f era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (f Word32 (TxCert era))
forall s. Decoder s (f Word32 (TxCert era))
forall a s. DecCBOR a => Decoder s a
decCBOR
Word8
3 -> f Word32 RewardAccount -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> DijkstraPlutusPurpose f era
DijkstraRewarding (f Word32 RewardAccount -> DijkstraPlutusPurpose f era)
-> Decoder s (f Word32 RewardAccount)
-> Decoder s (DijkstraPlutusPurpose f era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (f Word32 RewardAccount)
forall s. Decoder s (f Word32 RewardAccount)
forall a s. DecCBOR a => Decoder s a
decCBOR
Word8
4 -> f Word32 Voter -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 Voter -> DijkstraPlutusPurpose f era
DijkstraVoting (f Word32 Voter -> DijkstraPlutusPurpose f era)
-> Decoder s (f Word32 Voter)
-> Decoder s (DijkstraPlutusPurpose f era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (f Word32 Voter)
forall s. Decoder s (f Word32 Voter)
forall a s. DecCBOR a => Decoder s a
decCBOR
Word8
5 -> f Word32 (ProposalProcedure era) -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> DijkstraPlutusPurpose f era
DijkstraProposing (f Word32 (ProposalProcedure era) -> DijkstraPlutusPurpose f era)
-> Decoder s (f Word32 (ProposalProcedure era))
-> Decoder s (DijkstraPlutusPurpose f era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (f Word32 (ProposalProcedure era))
forall s. Decoder s (f Word32 (ProposalProcedure era))
forall a s. DecCBOR a => Decoder s a
decCBOR
Word8
6 -> f Word32 ScriptHash -> DijkstraPlutusPurpose f era
forall (f :: * -> * -> *) era.
f Word32 ScriptHash -> DijkstraPlutusPurpose f era
DijkstraGuarding (f Word32 ScriptHash -> DijkstraPlutusPurpose f era)
-> Decoder s (f Word32 ScriptHash)
-> Decoder s (DijkstraPlutusPurpose f era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (f Word32 ScriptHash)
forall s. Decoder s (f Word32 ScriptHash)
forall a s. DecCBOR a => Decoder s a
decCBOR
Word8
n -> String -> Decoder s (DijkstraPlutusPurpose f era)
forall a. String -> Decoder s a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Decoder s (DijkstraPlutusPurpose f era))
-> String -> Decoder s (DijkstraPlutusPurpose f era)
forall a b. (a -> b) -> a -> b
$ String
"Unexpected tag for DijkstraPlutusPurpose: " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Word8 -> String
forall a. Show a => a -> String
show Word8
n
instance
( Typeable f
, EraPParams era
, forall a b. (EncCBOR a, EncCBOR b) => EncCBOR (f a b)
, EncCBOR (TxCert era)
) =>
EncCBORGroup (DijkstraPlutusPurpose f era)
where
listLen :: DijkstraPlutusPurpose f era -> Word
listLen DijkstraPlutusPurpose f era
_ = Word
2
listLenBound :: Proxy (DijkstraPlutusPurpose f era) -> Word
listLenBound Proxy (DijkstraPlutusPurpose f era)
_ = Word
2
encCBORGroup :: DijkstraPlutusPurpose f era -> Encoding
encCBORGroup = \case
DijkstraSpending f Word32 TxIn
p -> Word8 -> Encoding
encodeWord8 Word8
0 Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> f Word32 TxIn -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR f Word32 TxIn
p
DijkstraMinting f Word32 PolicyID
p -> Word8 -> Encoding
encodeWord8 Word8
1 Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> f Word32 PolicyID -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR f Word32 PolicyID
p
DijkstraCertifying f Word32 (TxCert era)
p -> Word8 -> Encoding
encodeWord8 Word8
2 Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> f Word32 (TxCert era) -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR f Word32 (TxCert era)
p
DijkstraRewarding f Word32 RewardAccount
p -> Word8 -> Encoding
encodeWord8 Word8
3 Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> f Word32 RewardAccount -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR f Word32 RewardAccount
p
DijkstraVoting f Word32 Voter
p -> Word8 -> Encoding
encodeWord8 Word8
4 Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> f Word32 Voter -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR f Word32 Voter
p
DijkstraProposing f Word32 (ProposalProcedure era)
p -> Word8 -> Encoding
encodeWord8 Word8
5 Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> f Word32 (ProposalProcedure era) -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR f Word32 (ProposalProcedure era)
p
DijkstraGuarding f Word32 ScriptHash
p -> Word8 -> Encoding
encodeWord8 Word8
6 Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> f Word32 ScriptHash -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR f Word32 ScriptHash
p
encodedGroupSizeExpr :: (forall t. EncCBOR t => Proxy t -> Size)
-> Proxy (DijkstraPlutusPurpose f era) -> Size
encodedGroupSizeExpr forall t. EncCBOR t => Proxy t -> Size
size_ Proxy (DijkstraPlutusPurpose f era)
_proxy =
(forall t. EncCBOR t => Proxy t -> Size) -> Proxy Word8 -> Size
forall a.
EncCBOR a =>
(forall t. EncCBOR t => Proxy t -> Size) -> Proxy a -> Size
encodedSizeExpr Proxy t -> Size
forall t. EncCBOR t => Proxy t -> Size
size_ (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @Word8) Size -> Size -> Size
forall a. Num a => a -> a -> a
+ (forall t. EncCBOR t => Proxy t -> Size) -> Proxy Word16 -> Size
forall a.
EncCBOR a =>
(forall t. EncCBOR t => Proxy t -> Size) -> Proxy a -> Size
encodedSizeExpr Proxy t -> Size
forall t. EncCBOR t => Proxy t -> Size
size_ (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @Word16)
instance
( forall a b. (ToJSON a, ToJSON b) => ToJSON (f a b)
, ToJSON (TxCert era)
, EraPParams era
) =>
ToJSON (DijkstraPlutusPurpose f era)
where
toJSON :: DijkstraPlutusPurpose f era -> Value
toJSON = \case
DijkstraSpending f Word32 TxIn
n -> Text -> f Word32 TxIn -> Value
forall {v}. ToJSON v => Text -> v -> Value
kindObjectWithValue Text
"DijkstraSpending" f Word32 TxIn
n
DijkstraMinting f Word32 PolicyID
n -> Text -> f Word32 PolicyID -> Value
forall {v}. ToJSON v => Text -> v -> Value
kindObjectWithValue Text
"DijkstraMinting" f Word32 PolicyID
n
DijkstraCertifying f Word32 (TxCert era)
n -> Text -> f Word32 (TxCert era) -> Value
forall {v}. ToJSON v => Text -> v -> Value
kindObjectWithValue Text
"DijkstraCertifying" f Word32 (TxCert era)
n
DijkstraRewarding f Word32 RewardAccount
n -> Text -> f Word32 RewardAccount -> Value
forall {v}. ToJSON v => Text -> v -> Value
kindObjectWithValue Text
"DijkstraRewarding" f Word32 RewardAccount
n
DijkstraVoting f Word32 Voter
n -> Text -> f Word32 Voter -> Value
forall {v}. ToJSON v => Text -> v -> Value
kindObjectWithValue Text
"DijkstraVoting" f Word32 Voter
n
DijkstraProposing f Word32 (ProposalProcedure era)
n -> Text -> f Word32 (ProposalProcedure era) -> Value
forall {v}. ToJSON v => Text -> v -> Value
kindObjectWithValue Text
"DijkstraProposing" f Word32 (ProposalProcedure era)
n
DijkstraGuarding f Word32 ScriptHash
n -> Text -> f Word32 ScriptHash -> Value
forall {v}. ToJSON v => Text -> v -> Value
kindObjectWithValue Text
"DijkstraGuarding" f Word32 ScriptHash
n
where
kindObjectWithValue :: Text -> v -> Value
kindObjectWithValue Text
name v
n = Text -> [Pair] -> Value
kindObject Text
name [Key
"value" Key -> v -> Pair
forall v. ToJSON v => Key -> v -> Pair
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
.= v
n]
deriving instance (EraTxCert era, EraPParams era) => Eq (DijkstraPlutusPurpose AsItem era)
deriving instance (EraTxCert era, EraPParams era) => Eq (DijkstraPlutusPurpose AsIx era)
deriving instance (EraTxCert era, EraPParams era) => Eq (DijkstraPlutusPurpose AsIxItem era)
instance (EraPParams era, NFData (TxCert era)) => NFData (DijkstraPlutusPurpose AsItem era)
instance (EraPParams era, NFData (TxCert era)) => NFData (DijkstraPlutusPurpose AsIx era)
instance (EraPParams era, NFData (TxCert era)) => NFData (DijkstraPlutusPurpose AsIxItem era)
instance (EraPParams era, NoThunks (TxCert era)) => NoThunks (DijkstraPlutusPurpose AsItem era)
instance (EraPParams era, NoThunks (TxCert era)) => NoThunks (DijkstraPlutusPurpose AsIx era)
instance (EraPParams era, NoThunks (TxCert era)) => NoThunks (DijkstraPlutusPurpose AsIxItem era)
deriving instance (EraPParams era, EraTxCert era) => Ord (DijkstraPlutusPurpose AsItem era)
deriving instance (EraPParams era, EraTxCert era) => Ord (DijkstraPlutusPurpose AsIx era)
deriving instance (EraPParams era, EraTxCert era) => Ord (DijkstraPlutusPurpose AsIxItem era)
deriving instance (EraPParams era, EraTxCert era) => Show (DijkstraPlutusPurpose AsItem era)
deriving instance (EraPParams era, EraTxCert era) => Show (DijkstraPlutusPurpose AsIx era)
deriving instance (EraPParams era, EraTxCert era) => Show (DijkstraPlutusPurpose AsIxItem era)
data DijkstraNativeScriptRaw era
= DijkstraRequireSignature !(KeyHash 'Witness)
| DijkstraRequireAllOf !(StrictSeq (DijkstraNativeScript era))
| DijkstraRequireAnyOf !(StrictSeq (DijkstraNativeScript era))
| DijkstraRequireMOf !Int !(StrictSeq (DijkstraNativeScript era))
| DijkstraTimeStart !SlotNo
| DijkstraTimeExpire !SlotNo
| DijkstraRequireGuard (Credential 'Guard)
deriving (DijkstraNativeScriptRaw era -> DijkstraNativeScriptRaw era -> Bool
(DijkstraNativeScriptRaw era
-> DijkstraNativeScriptRaw era -> Bool)
-> (DijkstraNativeScriptRaw era
-> DijkstraNativeScriptRaw era -> Bool)
-> Eq (DijkstraNativeScriptRaw era)
forall era.
DijkstraNativeScriptRaw era -> DijkstraNativeScriptRaw era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era.
DijkstraNativeScriptRaw era -> DijkstraNativeScriptRaw era -> Bool
== :: DijkstraNativeScriptRaw era -> DijkstraNativeScriptRaw era -> Bool
$c/= :: forall era.
DijkstraNativeScriptRaw era -> DijkstraNativeScriptRaw era -> Bool
/= :: DijkstraNativeScriptRaw era -> DijkstraNativeScriptRaw era -> Bool
Eq, (forall x.
DijkstraNativeScriptRaw era -> Rep (DijkstraNativeScriptRaw era) x)
-> (forall x.
Rep (DijkstraNativeScriptRaw era) x -> DijkstraNativeScriptRaw era)
-> Generic (DijkstraNativeScriptRaw era)
forall x.
Rep (DijkstraNativeScriptRaw era) x -> DijkstraNativeScriptRaw era
forall x.
DijkstraNativeScriptRaw era -> Rep (DijkstraNativeScriptRaw era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraNativeScriptRaw era) x -> DijkstraNativeScriptRaw era
forall era x.
DijkstraNativeScriptRaw era -> Rep (DijkstraNativeScriptRaw era) x
$cfrom :: forall era x.
DijkstraNativeScriptRaw era -> Rep (DijkstraNativeScriptRaw era) x
from :: forall x.
DijkstraNativeScriptRaw era -> Rep (DijkstraNativeScriptRaw era) x
$cto :: forall era x.
Rep (DijkstraNativeScriptRaw era) x -> DijkstraNativeScriptRaw era
to :: forall x.
Rep (DijkstraNativeScriptRaw era) x -> DijkstraNativeScriptRaw era
Generic, DijkstraNativeScriptRaw era -> ()
(DijkstraNativeScriptRaw era -> ())
-> NFData (DijkstraNativeScriptRaw era)
forall era. DijkstraNativeScriptRaw era -> ()
forall a. (a -> ()) -> NFData a
$crnf :: forall era. DijkstraNativeScriptRaw era -> ()
rnf :: DijkstraNativeScriptRaw era -> ()
NFData)
deriving instance Show (DijkstraNativeScriptRaw era)
deriving instance Era era => NoThunks (DijkstraNativeScriptRaw era)
instance Era era => EncCBOR (DijkstraNativeScriptRaw era) where
encCBOR :: DijkstraNativeScriptRaw era -> Encoding
encCBOR =
Encode 'Open (DijkstraNativeScriptRaw era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode 'Open (DijkstraNativeScriptRaw era) -> Encoding)
-> (DijkstraNativeScriptRaw era
-> Encode 'Open (DijkstraNativeScriptRaw era))
-> DijkstraNativeScriptRaw era
-> Encoding
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
DijkstraRequireSignature KeyHash 'Witness
hash -> (KeyHash 'Witness -> DijkstraNativeScriptRaw era)
-> Word
-> Encode 'Open (KeyHash 'Witness -> DijkstraNativeScriptRaw era)
forall t. t -> Word -> Encode 'Open t
Sum KeyHash 'Witness -> DijkstraNativeScriptRaw era
forall era. KeyHash 'Witness -> DijkstraNativeScriptRaw era
DijkstraRequireSignature Word
0 Encode 'Open (KeyHash 'Witness -> DijkstraNativeScriptRaw era)
-> Encode ('Closed 'Dense) (KeyHash 'Witness)
-> Encode 'Open (DijkstraNativeScriptRaw era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode ('Closed r) a -> Encode w t
!> KeyHash 'Witness -> Encode ('Closed 'Dense) (KeyHash 'Witness)
forall t. EncCBOR t => t -> Encode ('Closed 'Dense) t
To KeyHash 'Witness
hash
DijkstraRequireAllOf StrictSeq (DijkstraNativeScript era)
xs -> (StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Word
-> Encode
'Open
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
forall t. t -> Word -> Encode 'Open t
Sum StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
forall era.
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
DijkstraRequireAllOf Word
1 Encode
'Open
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Encode ('Closed 'Dense) (StrictSeq (DijkstraNativeScript era))
-> Encode 'Open (DijkstraNativeScriptRaw era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode ('Closed r) a -> Encode w t
!> StrictSeq (DijkstraNativeScript era)
-> Encode ('Closed 'Dense) (StrictSeq (DijkstraNativeScript era))
forall t. EncCBOR t => t -> Encode ('Closed 'Dense) t
To StrictSeq (DijkstraNativeScript era)
xs
DijkstraRequireAnyOf StrictSeq (DijkstraNativeScript era)
xs -> (StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Word
-> Encode
'Open
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
forall t. t -> Word -> Encode 'Open t
Sum StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
forall era.
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
DijkstraRequireAnyOf Word
2 Encode
'Open
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Encode ('Closed 'Dense) (StrictSeq (DijkstraNativeScript era))
-> Encode 'Open (DijkstraNativeScriptRaw era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode ('Closed r) a -> Encode w t
!> StrictSeq (DijkstraNativeScript era)
-> Encode ('Closed 'Dense) (StrictSeq (DijkstraNativeScript era))
forall t. EncCBOR t => t -> Encode ('Closed 'Dense) t
To StrictSeq (DijkstraNativeScript era)
xs
DijkstraRequireMOf Int
m StrictSeq (DijkstraNativeScript era)
xs -> (Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Word
-> Encode
'Open
(Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
forall t. t -> Word -> Encode 'Open t
Sum Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era
forall era.
Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era
DijkstraRequireMOf Word
3 Encode
'Open
(Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Encode ('Closed 'Dense) Int
-> Encode
'Open
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode ('Closed r) a -> Encode w t
!> Int -> Encode ('Closed 'Dense) Int
forall t. EncCBOR t => t -> Encode ('Closed 'Dense) t
To Int
m Encode
'Open
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Encode ('Closed 'Dense) (StrictSeq (DijkstraNativeScript era))
-> Encode 'Open (DijkstraNativeScriptRaw era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode ('Closed r) a -> Encode w t
!> StrictSeq (DijkstraNativeScript era)
-> Encode ('Closed 'Dense) (StrictSeq (DijkstraNativeScript era))
forall t. EncCBOR t => t -> Encode ('Closed 'Dense) t
To StrictSeq (DijkstraNativeScript era)
xs
DijkstraTimeStart SlotNo
m -> (SlotNo -> DijkstraNativeScriptRaw era)
-> Word -> Encode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
forall t. t -> Word -> Encode 'Open t
Sum SlotNo -> DijkstraNativeScriptRaw era
forall era. SlotNo -> DijkstraNativeScriptRaw era
DijkstraTimeStart Word
4 Encode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
-> Encode ('Closed 'Dense) SlotNo
-> Encode 'Open (DijkstraNativeScriptRaw 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
m
DijkstraTimeExpire SlotNo
m -> (SlotNo -> DijkstraNativeScriptRaw era)
-> Word -> Encode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
forall t. t -> Word -> Encode 'Open t
Sum SlotNo -> DijkstraNativeScriptRaw era
forall era. SlotNo -> DijkstraNativeScriptRaw era
DijkstraTimeExpire Word
5 Encode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
-> Encode ('Closed 'Dense) SlotNo
-> Encode 'Open (DijkstraNativeScriptRaw 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
m
DijkstraRequireGuard Credential 'Guard
cred -> (Credential 'Guard -> DijkstraNativeScriptRaw era)
-> Word
-> Encode 'Open (Credential 'Guard -> DijkstraNativeScriptRaw era)
forall t. t -> Word -> Encode 'Open t
Sum Credential 'Guard -> DijkstraNativeScriptRaw era
forall era. Credential 'Guard -> DijkstraNativeScriptRaw era
DijkstraRequireGuard Word
6 Encode 'Open (Credential 'Guard -> DijkstraNativeScriptRaw era)
-> Encode ('Closed 'Dense) (Credential 'Guard)
-> Encode 'Open (DijkstraNativeScriptRaw era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode ('Closed r) a -> Encode w t
!> Credential 'Guard -> Encode ('Closed 'Dense) (Credential 'Guard)
forall t. EncCBOR t => t -> Encode ('Closed 'Dense) t
To Credential 'Guard
cred
instance Era era => DecCBOR (Annotator (DijkstraNativeScriptRaw era)) where
decCBOR :: forall s. Decoder s (Annotator (DijkstraNativeScriptRaw era))
decCBOR = Decode ('Closed 'Dense) (Annotator (DijkstraNativeScriptRaw era))
-> Decoder s (Annotator (DijkstraNativeScriptRaw era))
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Text
-> (Word -> Decode 'Open (Annotator (DijkstraNativeScriptRaw era)))
-> Decode
('Closed 'Dense) (Annotator (DijkstraNativeScriptRaw era))
forall t.
Text -> (Word -> Decode 'Open t) -> Decode ('Closed 'Dense) t
Summands Text
"DijkstraNativeScriptRaw" Word -> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
decRaw)
where
decRaw :: Word -> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
decRaw :: Word -> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
decRaw Word
0 = Decode 'Open (DijkstraNativeScriptRaw era)
-> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((KeyHash 'Witness -> DijkstraNativeScriptRaw era)
-> Decode 'Open (KeyHash 'Witness -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD KeyHash 'Witness -> DijkstraNativeScriptRaw era
forall era. KeyHash 'Witness -> DijkstraNativeScriptRaw era
DijkstraRequireSignature Decode 'Open (KeyHash 'Witness -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) (KeyHash 'Witness)
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) (KeyHash 'Witness)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From)
decRaw Word
1 = Decode
'Open
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Decode
'Open
(Annotator
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Decode
'Open
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
forall era.
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
DijkstraRequireAllOf) Decode
'Open
(Annotator
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era))
-> Decode
('Closed 'Dense) (Annotator (StrictSeq (DijkstraNativeScript era)))
-> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode ('Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! (forall s.
Decoder s (Annotator (StrictSeq (DijkstraNativeScript era))))
-> Decode
('Closed 'Dense) (Annotator (StrictSeq (DijkstraNativeScript era)))
forall t. (forall s. Decoder s t) -> Decode ('Closed 'Dense) t
D (StrictSeq (Annotator (DijkstraNativeScript era))
-> Annotator (StrictSeq (DijkstraNativeScript era))
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a.
Monad m =>
StrictSeq (m a) -> m (StrictSeq a)
sequence (StrictSeq (Annotator (DijkstraNativeScript era))
-> Annotator (StrictSeq (DijkstraNativeScript era)))
-> Decoder s (StrictSeq (Annotator (DijkstraNativeScript era)))
-> Decoder s (Annotator (StrictSeq (DijkstraNativeScript era)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (StrictSeq (Annotator (DijkstraNativeScript era)))
forall s.
Decoder s (StrictSeq (Annotator (DijkstraNativeScript era)))
forall a s. DecCBOR a => Decoder s a
decCBOR)
decRaw Word
2 = Decode
'Open
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Decode
'Open
(Annotator
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Decode
'Open
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
forall era.
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
DijkstraRequireAnyOf) Decode
'Open
(Annotator
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era))
-> Decode
('Closed 'Dense) (Annotator (StrictSeq (DijkstraNativeScript era)))
-> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode ('Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! (forall s.
Decoder s (Annotator (StrictSeq (DijkstraNativeScript era))))
-> Decode
('Closed 'Dense) (Annotator (StrictSeq (DijkstraNativeScript era)))
forall t. (forall s. Decoder s t) -> Decode ('Closed 'Dense) t
D (StrictSeq (Annotator (DijkstraNativeScript era))
-> Annotator (StrictSeq (DijkstraNativeScript era))
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a.
Monad m =>
StrictSeq (m a) -> m (StrictSeq a)
sequence (StrictSeq (Annotator (DijkstraNativeScript era))
-> Annotator (StrictSeq (DijkstraNativeScript era)))
-> Decoder s (StrictSeq (Annotator (DijkstraNativeScript era)))
-> Decoder s (Annotator (StrictSeq (DijkstraNativeScript era)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (StrictSeq (Annotator (DijkstraNativeScript era)))
forall s.
Decoder s (StrictSeq (Annotator (DijkstraNativeScript era)))
forall a s. DecCBOR a => Decoder s a
decCBOR)
decRaw Word
3 = Decode
'Open
(Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Decode
'Open
(Annotator
(Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> Decode
'Open
(Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era
forall era.
Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era
DijkstraRequireMOf) Decode
'Open
(Annotator
(Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era))
-> Decode ('Closed Any) (Annotator Int)
-> Decode
'Open
(Annotator
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode ('Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode ('Closed Any) Int -> Decode ('Closed Any) (Annotator Int)
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann Decode ('Closed Any) Int
forall t (w :: Wrapped). DecCBOR t => Decode w t
From Decode
'Open
(Annotator
(StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era))
-> Decode
('Closed 'Dense) (Annotator (StrictSeq (DijkstraNativeScript era)))
-> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode ('Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! (forall s.
Decoder s (Annotator (StrictSeq (DijkstraNativeScript era))))
-> Decode
('Closed 'Dense) (Annotator (StrictSeq (DijkstraNativeScript era)))
forall t. (forall s. Decoder s t) -> Decode ('Closed 'Dense) t
D (StrictSeq (Annotator (DijkstraNativeScript era))
-> Annotator (StrictSeq (DijkstraNativeScript era))
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a.
Monad m =>
StrictSeq (m a) -> m (StrictSeq a)
sequence (StrictSeq (Annotator (DijkstraNativeScript era))
-> Annotator (StrictSeq (DijkstraNativeScript era)))
-> Decoder s (StrictSeq (Annotator (DijkstraNativeScript era)))
-> Decoder s (Annotator (StrictSeq (DijkstraNativeScript era)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (StrictSeq (Annotator (DijkstraNativeScript era)))
forall s.
Decoder s (StrictSeq (Annotator (DijkstraNativeScript era)))
forall a s. DecCBOR a => Decoder s a
decCBOR)
decRaw Word
4 = Decode 'Open (DijkstraNativeScriptRaw era)
-> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((SlotNo -> DijkstraNativeScriptRaw era)
-> Decode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD SlotNo -> DijkstraNativeScriptRaw era
forall era. SlotNo -> DijkstraNativeScriptRaw era
DijkstraTimeStart Decode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) SlotNo
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From)
decRaw Word
5 = Decode 'Open (DijkstraNativeScriptRaw era)
-> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((SlotNo -> DijkstraNativeScriptRaw era)
-> Decode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD SlotNo -> DijkstraNativeScriptRaw era
forall era. SlotNo -> DijkstraNativeScriptRaw era
DijkstraTimeExpire Decode 'Open (SlotNo -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) SlotNo
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) SlotNo
forall t (w :: Wrapped). DecCBOR t => Decode w t
From)
decRaw Word
6 = Decode 'Open (DijkstraNativeScriptRaw era)
-> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((Credential 'Guard -> DijkstraNativeScriptRaw era)
-> Decode 'Open (Credential 'Guard -> DijkstraNativeScriptRaw era)
forall t. t -> Decode 'Open t
SumD Credential 'Guard -> DijkstraNativeScriptRaw era
forall era. Credential 'Guard -> DijkstraNativeScriptRaw era
DijkstraRequireGuard Decode 'Open (Credential 'Guard -> DijkstraNativeScriptRaw era)
-> Decode ('Closed Any) (Credential 'Guard)
-> Decode 'Open (DijkstraNativeScriptRaw era)
forall a (w1 :: Wrapped) t (w :: Density).
Typeable a =>
Decode w1 (a -> t) -> Decode ('Closed w) a -> Decode w1 t
<! Decode ('Closed Any) (Credential 'Guard)
forall t (w :: Wrapped). DecCBOR t => Decode w t
From)
decRaw Word
n = Word -> Decode 'Open (Annotator (DijkstraNativeScriptRaw era))
forall (w :: Wrapped) t. Word -> Decode w t
Invalid Word
n
newtype DijkstraNativeScript era = MkDijkstraNativeScript (MemoBytes (DijkstraNativeScriptRaw era))
deriving (DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
(DijkstraNativeScript era -> DijkstraNativeScript era -> Bool)
-> (DijkstraNativeScript era -> DijkstraNativeScript era -> Bool)
-> Eq (DijkstraNativeScript era)
forall era.
DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall era.
DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
== :: DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
$c/= :: forall era.
DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
/= :: DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
Eq, (forall x.
DijkstraNativeScript era -> Rep (DijkstraNativeScript era) x)
-> (forall x.
Rep (DijkstraNativeScript era) x -> DijkstraNativeScript era)
-> Generic (DijkstraNativeScript era)
forall x.
Rep (DijkstraNativeScript era) x -> DijkstraNativeScript era
forall x.
DijkstraNativeScript era -> Rep (DijkstraNativeScript era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (DijkstraNativeScript era) x -> DijkstraNativeScript era
forall era x.
DijkstraNativeScript era -> Rep (DijkstraNativeScript era) x
$cfrom :: forall era x.
DijkstraNativeScript era -> Rep (DijkstraNativeScript era) x
from :: forall x.
DijkstraNativeScript era -> Rep (DijkstraNativeScript era) x
$cto :: forall era x.
Rep (DijkstraNativeScript era) x -> DijkstraNativeScript era
to :: forall x.
Rep (DijkstraNativeScript era) x -> DijkstraNativeScript era
Generic)
deriving newtype (Typeable (DijkstraNativeScript era)
Typeable (DijkstraNativeScript era) =>
(DijkstraNativeScript era -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (DijkstraNativeScript era) -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [DijkstraNativeScript era] -> Size)
-> ToCBOR (DijkstraNativeScript era)
DijkstraNativeScript era -> Encoding
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [DijkstraNativeScript era] -> Size
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (DijkstraNativeScript era) -> Size
forall era. Typeable era => Typeable (DijkstraNativeScript era)
forall era. Typeable era => DijkstraNativeScript era -> Encoding
forall a.
Typeable a =>
(a -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy a -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy [a] -> Size)
-> ToCBOR a
forall era.
Typeable era =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [DijkstraNativeScript era] -> Size
forall era.
Typeable era =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (DijkstraNativeScript era) -> Size
$ctoCBOR :: forall era. Typeable era => DijkstraNativeScript era -> Encoding
toCBOR :: DijkstraNativeScript era -> Encoding
$cencodedSizeExpr :: forall era.
Typeable era =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (DijkstraNativeScript era) -> Size
encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (DijkstraNativeScript era) -> Size
$cencodedListSizeExpr :: forall era.
Typeable era =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [DijkstraNativeScript era] -> Size
encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [DijkstraNativeScript era] -> Size
ToCBOR, DijkstraNativeScript era -> ()
(DijkstraNativeScript era -> ())
-> NFData (DijkstraNativeScript era)
forall era. DijkstraNativeScript era -> ()
forall a. (a -> ()) -> NFData a
$crnf :: forall era. DijkstraNativeScript era -> ()
rnf :: DijkstraNativeScript era -> ()
NFData, DijkstraNativeScript era -> Int
DijkstraNativeScript era -> ByteString
(DijkstraNativeScript era -> ByteString)
-> (DijkstraNativeScript era -> Int)
-> (forall i. Proxy i -> DijkstraNativeScript era -> SafeHash i)
-> SafeToHash (DijkstraNativeScript era)
forall i. Proxy i -> DijkstraNativeScript era -> SafeHash i
forall era. DijkstraNativeScript era -> Int
forall era. DijkstraNativeScript era -> ByteString
forall t.
(t -> ByteString)
-> (t -> Int)
-> (forall i. Proxy i -> t -> SafeHash i)
-> SafeToHash t
forall era i. Proxy i -> DijkstraNativeScript era -> SafeHash i
$coriginalBytes :: forall era. DijkstraNativeScript era -> ByteString
originalBytes :: DijkstraNativeScript era -> ByteString
$coriginalBytesSize :: forall era. DijkstraNativeScript era -> Int
originalBytesSize :: DijkstraNativeScript era -> Int
$cmakeHashWithExplicitProxys :: forall era i. Proxy i -> DijkstraNativeScript era -> SafeHash i
makeHashWithExplicitProxys :: forall i. Proxy i -> DijkstraNativeScript era -> SafeHash i
SafeToHash)
deriving instance Show (DijkstraNativeScript era)
instance Era era => NoThunks (DijkstraNativeScript era)
instance Era era => EncCBOR (DijkstraNativeScript era)
instance Era era => DecCBOR (Annotator (DijkstraNativeScript era)) where
decCBOR :: forall s. Decoder s (Annotator (DijkstraNativeScript era))
decCBOR = (MemoBytes (DijkstraNativeScriptRaw era)
-> DijkstraNativeScript era)
-> Annotator (MemoBytes (DijkstraNativeScriptRaw era))
-> Annotator (DijkstraNativeScript era)
forall a b. (a -> b) -> Annotator a -> Annotator b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap MemoBytes (DijkstraNativeScriptRaw era) -> DijkstraNativeScript era
forall era.
MemoBytes (DijkstraNativeScriptRaw era) -> DijkstraNativeScript era
MkDijkstraNativeScript (Annotator (MemoBytes (DijkstraNativeScriptRaw era))
-> Annotator (DijkstraNativeScript era))
-> Decoder s (Annotator (MemoBytes (DijkstraNativeScriptRaw era)))
-> Decoder s (Annotator (DijkstraNativeScript era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (Annotator (MemoBytes (DijkstraNativeScriptRaw era)))
forall s.
Decoder s (Annotator (MemoBytes (DijkstraNativeScriptRaw era)))
forall a s. DecCBOR a => Decoder s a
decCBOR
instance Memoized (DijkstraNativeScript era) where
type RawType (DijkstraNativeScript era) = DijkstraNativeScriptRaw era
instance EqRaw (DijkstraNativeScript era) where
eqRaw :: DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
eqRaw = DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
forall {era} {era}.
DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
eqRawDijkstraNativeScript
where
eqRawDijkstraNativeScript :: DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
eqRawDijkstraNativeScript DijkstraNativeScript era
dns1 DijkstraNativeScript era
dns2 = DijkstraNativeScriptRaw era -> DijkstraNativeScriptRaw era -> Bool
go (DijkstraNativeScript era -> RawType (DijkstraNativeScript era)
forall t. Memoized t => t -> RawType t
getMemoRawType DijkstraNativeScript era
dns1) (DijkstraNativeScript era -> RawType (DijkstraNativeScript era)
forall t. Memoized t => t -> RawType t
getMemoRawType DijkstraNativeScript era
dns2)
seqEq :: StrictSeq (DijkstraNativeScript era)
-> StrictSeq (DijkstraNativeScript era) -> Bool
seqEq StrictSeq (DijkstraNativeScript era)
Empty StrictSeq (DijkstraNativeScript era)
Empty = Bool
True
seqEq (DijkstraNativeScript era
x :<| StrictSeq (DijkstraNativeScript era)
xs) (DijkstraNativeScript era
y :<| StrictSeq (DijkstraNativeScript era)
ys) = DijkstraNativeScript era -> DijkstraNativeScript era -> Bool
eqRawDijkstraNativeScript DijkstraNativeScript era
x DijkstraNativeScript era
y Bool -> Bool -> Bool
&& StrictSeq (DijkstraNativeScript era)
-> StrictSeq (DijkstraNativeScript era) -> Bool
seqEq StrictSeq (DijkstraNativeScript era)
xs StrictSeq (DijkstraNativeScript era)
ys
seqEq StrictSeq (DijkstraNativeScript era)
_ StrictSeq (DijkstraNativeScript era)
_ = Bool
False
go :: DijkstraNativeScriptRaw era -> DijkstraNativeScriptRaw era -> Bool
go (DijkstraRequireSignature KeyHash 'Witness
kh1) (DijkstraRequireSignature KeyHash 'Witness
kh2) = KeyHash 'Witness
kh1 KeyHash 'Witness -> KeyHash 'Witness -> Bool
forall a. Eq a => a -> a -> Bool
== KeyHash 'Witness
kh2
go (DijkstraRequireAllOf StrictSeq (DijkstraNativeScript era)
ts1) (DijkstraRequireAllOf StrictSeq (DijkstraNativeScript era)
ts2) = StrictSeq (DijkstraNativeScript era)
-> StrictSeq (DijkstraNativeScript era) -> Bool
seqEq StrictSeq (DijkstraNativeScript era)
ts1 StrictSeq (DijkstraNativeScript era)
ts2
go (DijkstraRequireAnyOf StrictSeq (DijkstraNativeScript era)
ts1) (DijkstraRequireAnyOf StrictSeq (DijkstraNativeScript era)
ts2) = StrictSeq (DijkstraNativeScript era)
-> StrictSeq (DijkstraNativeScript era) -> Bool
seqEq StrictSeq (DijkstraNativeScript era)
ts1 StrictSeq (DijkstraNativeScript era)
ts2
go (DijkstraRequireMOf Int
n1 StrictSeq (DijkstraNativeScript era)
ts1) (DijkstraRequireMOf Int
n2 StrictSeq (DijkstraNativeScript era)
ts2) = Int
n1 Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
n2 Bool -> Bool -> Bool
&& StrictSeq (DijkstraNativeScript era)
-> StrictSeq (DijkstraNativeScript era) -> Bool
seqEq StrictSeq (DijkstraNativeScript era)
ts1 StrictSeq (DijkstraNativeScript era)
ts2
go (DijkstraTimeStart SlotNo
sn1) (DijkstraTimeStart SlotNo
sn2) = SlotNo
sn1 SlotNo -> SlotNo -> Bool
forall a. Eq a => a -> a -> Bool
== SlotNo
sn2
go (DijkstraTimeExpire SlotNo
sn1) (DijkstraTimeExpire SlotNo
sn2) = SlotNo
sn1 SlotNo -> SlotNo -> Bool
forall a. Eq a => a -> a -> Bool
== SlotNo
sn2
go (DijkstraRequireGuard Credential 'Guard
cred1) (DijkstraRequireGuard Credential 'Guard
cred2) = Credential 'Guard
cred1 Credential 'Guard -> Credential 'Guard -> Bool
forall a. Eq a => a -> a -> Bool
== Credential 'Guard
cred2
go DijkstraNativeScriptRaw era
_ DijkstraNativeScriptRaw era
_ = Bool
False
instance Era era => MemPack (DijkstraNativeScript era) where
packedByteCount :: DijkstraNativeScript era -> Int
packedByteCount (MkDijkstraNativeScript MemoBytes (DijkstraNativeScriptRaw era)
mb) = MemoBytes (DijkstraNativeScriptRaw era) -> Int
forall t. MemoBytes t -> Int
byteCountMemoBytes MemoBytes (DijkstraNativeScriptRaw era)
mb
packM :: forall s. DijkstraNativeScript era -> Pack s ()
packM (MkDijkstraNativeScript MemoBytes (DijkstraNativeScriptRaw era)
mb) = MemoBytes (DijkstraNativeScriptRaw era) -> Pack s ()
forall t s. MemoBytes t -> Pack s ()
packMemoBytesM MemoBytes (DijkstraNativeScriptRaw era)
mb
unpackM :: forall b s. Buffer b => Unpack s b (DijkstraNativeScript era)
unpackM = MemoBytes (DijkstraNativeScriptRaw era) -> DijkstraNativeScript era
forall era.
MemoBytes (DijkstraNativeScriptRaw era) -> DijkstraNativeScript era
MkDijkstraNativeScript (MemoBytes (DijkstraNativeScriptRaw era)
-> DijkstraNativeScript era)
-> Unpack s b (MemoBytes (DijkstraNativeScriptRaw era))
-> Unpack s b (DijkstraNativeScript era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Version -> Unpack s b (MemoBytes (DijkstraNativeScriptRaw era))
forall t b s.
(DecCBOR (Annotator t), Typeable t, Buffer b) =>
Version -> Unpack s b (MemoBytes t)
unpackMemoBytesM (forall era. Era era => Version
eraProtVerLow @era)
instance EraScript DijkstraEra where
type Script DijkstraEra = AlonzoScript DijkstraEra
type NativeScript DijkstraEra = DijkstraNativeScript DijkstraEra
upgradeScript :: EraScript (PreviousEra DijkstraEra) =>
Script (PreviousEra DijkstraEra) -> Script DijkstraEra
upgradeScript = \case
NativeScript NativeScript ConwayEra
ts -> NativeScript DijkstraEra -> AlonzoScript DijkstraEra
forall era. NativeScript era -> AlonzoScript era
NativeScript (NativeScript DijkstraEra -> AlonzoScript DijkstraEra)
-> NativeScript DijkstraEra -> AlonzoScript DijkstraEra
forall a b. (a -> b) -> a -> b
$ NativeScript ConwayEra -> NativeScript DijkstraEra
upgradeTimelock NativeScript ConwayEra
ts
PlutusScript (ConwayPlutusV1 Plutus 'PlutusV1
s) -> PlutusScript DijkstraEra -> AlonzoScript DijkstraEra
forall era. PlutusScript era -> AlonzoScript era
PlutusScript (PlutusScript DijkstraEra -> AlonzoScript DijkstraEra)
-> PlutusScript DijkstraEra -> AlonzoScript DijkstraEra
forall a b. (a -> b) -> a -> b
$ Plutus 'PlutusV1 -> PlutusScript DijkstraEra
DijkstraPlutusV1 Plutus 'PlutusV1
s
PlutusScript (ConwayPlutusV2 Plutus 'PlutusV2
s) -> PlutusScript DijkstraEra -> AlonzoScript DijkstraEra
forall era. PlutusScript era -> AlonzoScript era
PlutusScript (PlutusScript DijkstraEra -> AlonzoScript DijkstraEra)
-> PlutusScript DijkstraEra -> AlonzoScript DijkstraEra
forall a b. (a -> b) -> a -> b
$ Plutus 'PlutusV2 -> PlutusScript DijkstraEra
DijkstraPlutusV2 Plutus 'PlutusV2
s
PlutusScript (ConwayPlutusV3 Plutus 'PlutusV3
s) -> PlutusScript DijkstraEra -> AlonzoScript DijkstraEra
forall era. PlutusScript era -> AlonzoScript era
PlutusScript (PlutusScript DijkstraEra -> AlonzoScript DijkstraEra)
-> PlutusScript DijkstraEra -> AlonzoScript DijkstraEra
forall a b. (a -> b) -> a -> b
$ Plutus 'PlutusV3 -> PlutusScript DijkstraEra
DijkstraPlutusV3 Plutus 'PlutusV3
s
scriptPrefixTag :: Script DijkstraEra -> ByteString
scriptPrefixTag = Script DijkstraEra -> ByteString
forall era.
(AlonzoEraScript era, AlonzoScript era ~ Script era) =>
Script era -> ByteString
alonzoScriptPrefixTag
getNativeScript :: Script DijkstraEra -> Maybe (NativeScript DijkstraEra)
getNativeScript (NativeScript NativeScript DijkstraEra
ts) = DijkstraNativeScript DijkstraEra
-> Maybe (DijkstraNativeScript DijkstraEra)
forall a. a -> Maybe a
Just NativeScript DijkstraEra
DijkstraNativeScript DijkstraEra
ts
getNativeScript Script DijkstraEra
_ = Maybe (NativeScript DijkstraEra)
Maybe (DijkstraNativeScript DijkstraEra)
forall a. Maybe a
Nothing
fromNativeScript :: NativeScript DijkstraEra -> Script DijkstraEra
fromNativeScript = NativeScript DijkstraEra -> Script DijkstraEra
NativeScript DijkstraEra -> AlonzoScript DijkstraEra
forall era. NativeScript era -> AlonzoScript era
NativeScript
upgradeTimelock :: NativeScript ConwayEra -> NativeScript DijkstraEra
upgradeTimelock :: NativeScript ConwayEra -> NativeScript DijkstraEra
upgradeTimelock = \case
RequireSignature KeyHash 'Witness
keyHash -> KeyHash 'Witness -> NativeScript DijkstraEra
forall era.
ShelleyEraScript era =>
KeyHash 'Witness -> NativeScript era
RequireSignature KeyHash 'Witness
keyHash
RequireAllOf StrictSeq (NativeScript ConwayEra)
sigs -> StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAllOf (StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra)
-> StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
forall a b. (a -> b) -> a -> b
$ Timelock ConwayEra -> DijkstraNativeScript DijkstraEra
NativeScript ConwayEra -> NativeScript DijkstraEra
upgradeTimelock (Timelock ConwayEra -> DijkstraNativeScript DijkstraEra)
-> StrictSeq (Timelock ConwayEra)
-> StrictSeq (DijkstraNativeScript DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StrictSeq (Timelock ConwayEra)
StrictSeq (NativeScript ConwayEra)
sigs
RequireAnyOf StrictSeq (NativeScript ConwayEra)
sigs -> StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAnyOf (StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra)
-> StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
forall a b. (a -> b) -> a -> b
$ Timelock ConwayEra -> DijkstraNativeScript DijkstraEra
NativeScript ConwayEra -> NativeScript DijkstraEra
upgradeTimelock (Timelock ConwayEra -> DijkstraNativeScript DijkstraEra)
-> StrictSeq (Timelock ConwayEra)
-> StrictSeq (DijkstraNativeScript DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StrictSeq (Timelock ConwayEra)
StrictSeq (NativeScript ConwayEra)
sigs
RequireMOf Int
n StrictSeq (NativeScript ConwayEra)
sigs -> Int
-> StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
forall era.
ShelleyEraScript era =>
Int -> StrictSeq (NativeScript era) -> NativeScript era
RequireMOf Int
n (StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra)
-> StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
forall a b. (a -> b) -> a -> b
$ Timelock ConwayEra -> DijkstraNativeScript DijkstraEra
NativeScript ConwayEra -> NativeScript DijkstraEra
upgradeTimelock (Timelock ConwayEra -> DijkstraNativeScript DijkstraEra)
-> StrictSeq (Timelock ConwayEra)
-> StrictSeq (DijkstraNativeScript DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StrictSeq (Timelock ConwayEra)
StrictSeq (NativeScript ConwayEra)
sigs
RequireTimeStart SlotNo
mslot -> SlotNo -> NativeScript DijkstraEra
forall era. AllegraEraScript era => SlotNo -> NativeScript era
RequireTimeStart SlotNo
mslot
RequireTimeExpire SlotNo
mslot -> SlotNo -> NativeScript DijkstraEra
forall era. AllegraEraScript era => SlotNo -> NativeScript era
RequireTimeExpire SlotNo
mslot
NativeScript ConwayEra
_ -> String -> DijkstraNativeScript DijkstraEra
forall a. HasCallStack => String -> a
error String
"Impossible: All NativeScripts should have been accounted for"
instance MemPack (PlutusScript DijkstraEra) where
packedByteCount :: PlutusScript DijkstraEra -> Int
packedByteCount = \case
DijkstraPlutusV1 Plutus 'PlutusV1
script -> Int
packedTagByteCount Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Plutus 'PlutusV1 -> Int
forall a. MemPack a => a -> Int
packedByteCount Plutus 'PlutusV1
script
DijkstraPlutusV2 Plutus 'PlutusV2
script -> Int
packedTagByteCount Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Plutus 'PlutusV2 -> Int
forall a. MemPack a => a -> Int
packedByteCount Plutus 'PlutusV2
script
DijkstraPlutusV3 Plutus 'PlutusV3
script -> Int
packedTagByteCount Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Plutus 'PlutusV3 -> Int
forall a. MemPack a => a -> Int
packedByteCount Plutus 'PlutusV3
script
DijkstraPlutusV4 Plutus 'PlutusV4
script -> Int
packedTagByteCount Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Plutus 'PlutusV4 -> Int
forall a. MemPack a => a -> Int
packedByteCount Plutus 'PlutusV4
script
packM :: forall s. PlutusScript DijkstraEra -> Pack s ()
packM = \case
DijkstraPlutusV1 Plutus 'PlutusV1
script -> Tag -> Pack s ()
forall s. Tag -> Pack s ()
packTagM Tag
0 Pack s () -> Pack s () -> Pack s ()
forall a b. Pack s a -> Pack s b -> Pack s b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Plutus 'PlutusV1 -> Pack s ()
forall s. Plutus 'PlutusV1 -> Pack s ()
forall a s. MemPack a => a -> Pack s ()
packM Plutus 'PlutusV1
script
DijkstraPlutusV2 Plutus 'PlutusV2
script -> Tag -> Pack s ()
forall s. Tag -> Pack s ()
packTagM Tag
1 Pack s () -> Pack s () -> Pack s ()
forall a b. Pack s a -> Pack s b -> Pack s b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Plutus 'PlutusV2 -> Pack s ()
forall s. Plutus 'PlutusV2 -> Pack s ()
forall a s. MemPack a => a -> Pack s ()
packM Plutus 'PlutusV2
script
DijkstraPlutusV3 Plutus 'PlutusV3
script -> Tag -> Pack s ()
forall s. Tag -> Pack s ()
packTagM Tag
2 Pack s () -> Pack s () -> Pack s ()
forall a b. Pack s a -> Pack s b -> Pack s b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Plutus 'PlutusV3 -> Pack s ()
forall s. Plutus 'PlutusV3 -> Pack s ()
forall a s. MemPack a => a -> Pack s ()
packM Plutus 'PlutusV3
script
DijkstraPlutusV4 Plutus 'PlutusV4
script -> Tag -> Pack s ()
forall s. Tag -> Pack s ()
packTagM Tag
3 Pack s () -> Pack s () -> Pack s ()
forall a b. Pack s a -> Pack s b -> Pack s b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Plutus 'PlutusV4 -> Pack s ()
forall s. Plutus 'PlutusV4 -> Pack s ()
forall a s. MemPack a => a -> Pack s ()
packM Plutus 'PlutusV4
script
{-# INLINE packM #-}
unpackM :: forall b s. Buffer b => Unpack s b (PlutusScript DijkstraEra)
unpackM =
Unpack s b Tag
forall b s. Buffer b => Unpack s b Tag
unpackTagM Unpack s b Tag
-> (Tag -> Unpack s b (PlutusScript DijkstraEra))
-> Unpack s b (PlutusScript DijkstraEra)
forall a b. Unpack s b a -> (a -> Unpack s b b) -> Unpack s b b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Tag
0 -> Plutus 'PlutusV1 -> PlutusScript DijkstraEra
DijkstraPlutusV1 (Plutus 'PlutusV1 -> PlutusScript DijkstraEra)
-> Unpack s b (Plutus 'PlutusV1)
-> Unpack s b (PlutusScript DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Unpack s b (Plutus 'PlutusV1)
forall a b s. (MemPack a, Buffer b) => Unpack s b a
forall b s. Buffer b => Unpack s b (Plutus 'PlutusV1)
unpackM
Tag
1 -> Plutus 'PlutusV2 -> PlutusScript DijkstraEra
DijkstraPlutusV2 (Plutus 'PlutusV2 -> PlutusScript DijkstraEra)
-> Unpack s b (Plutus 'PlutusV2)
-> Unpack s b (PlutusScript DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Unpack s b (Plutus 'PlutusV2)
forall a b s. (MemPack a, Buffer b) => Unpack s b a
forall b s. Buffer b => Unpack s b (Plutus 'PlutusV2)
unpackM
Tag
2 -> Plutus 'PlutusV3 -> PlutusScript DijkstraEra
DijkstraPlutusV3 (Plutus 'PlutusV3 -> PlutusScript DijkstraEra)
-> Unpack s b (Plutus 'PlutusV3)
-> Unpack s b (PlutusScript DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Unpack s b (Plutus 'PlutusV3)
forall a b s. (MemPack a, Buffer b) => Unpack s b a
forall b s. Buffer b => Unpack s b (Plutus 'PlutusV3)
unpackM
Tag
3 -> Plutus 'PlutusV4 -> PlutusScript DijkstraEra
DijkstraPlutusV4 (Plutus 'PlutusV4 -> PlutusScript DijkstraEra)
-> Unpack s b (Plutus 'PlutusV4)
-> Unpack s b (PlutusScript DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Unpack s b (Plutus 'PlutusV4)
forall a b s. (MemPack a, Buffer b) => Unpack s b a
forall b s. Buffer b => Unpack s b (Plutus 'PlutusV4)
unpackM
Tag
n -> forall a (m :: * -> *) b. (MemPack a, MonadFail m) => Tag -> m b
unknownTagM @(PlutusScript DijkstraEra) Tag
n
{-# INLINE unpackM #-}
instance NFData (PlutusScript DijkstraEra) where
rnf :: PlutusScript DijkstraEra -> ()
rnf = PlutusScript DijkstraEra -> ()
forall a. a -> ()
rwhnf
instance NoThunks (PlutusScript DijkstraEra)
instance SafeToHash (PlutusScript DijkstraEra) where
originalBytes :: PlutusScript DijkstraEra -> ByteString
originalBytes PlutusScript DijkstraEra
ps = PlutusScript DijkstraEra
-> (forall (l :: Language).
PlutusLanguage l =>
Plutus l -> ByteString)
-> ByteString
forall era a.
AlonzoEraScript era =>
PlutusScript era
-> (forall (l :: Language). PlutusLanguage l => Plutus l -> a) -> a
forall a.
PlutusScript DijkstraEra
-> (forall (l :: Language). PlutusLanguage l => Plutus l -> a) -> a
withPlutusScript PlutusScript DijkstraEra
ps Plutus l -> ByteString
forall t. SafeToHash t => t -> ByteString
forall (l :: Language). PlutusLanguage l => Plutus l -> ByteString
originalBytes
instance AlonzoEraScript DijkstraEra where
data PlutusScript DijkstraEra
= DijkstraPlutusV1 !(Plutus 'PlutusV1)
| DijkstraPlutusV2 !(Plutus 'PlutusV2)
| DijkstraPlutusV3 !(Plutus 'PlutusV3)
| DijkstraPlutusV4 !(Plutus 'PlutusV4)
deriving (PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
(PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool)
-> (PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool)
-> Eq (PlutusScript DijkstraEra)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
== :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
$c/= :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
/= :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
Eq, Eq (PlutusScript DijkstraEra)
Eq (PlutusScript DijkstraEra) =>
(PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Ordering)
-> (PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool)
-> (PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool)
-> (PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool)
-> (PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool)
-> (PlutusScript DijkstraEra
-> PlutusScript DijkstraEra -> PlutusScript DijkstraEra)
-> (PlutusScript DijkstraEra
-> PlutusScript DijkstraEra -> PlutusScript DijkstraEra)
-> Ord (PlutusScript DijkstraEra)
PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Ordering
PlutusScript DijkstraEra
-> PlutusScript DijkstraEra -> PlutusScript DijkstraEra
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Ordering
compare :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Ordering
$c< :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
< :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
$c<= :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
<= :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
$c> :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
> :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
$c>= :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
>= :: PlutusScript DijkstraEra -> PlutusScript DijkstraEra -> Bool
$cmax :: PlutusScript DijkstraEra
-> PlutusScript DijkstraEra -> PlutusScript DijkstraEra
max :: PlutusScript DijkstraEra
-> PlutusScript DijkstraEra -> PlutusScript DijkstraEra
$cmin :: PlutusScript DijkstraEra
-> PlutusScript DijkstraEra -> PlutusScript DijkstraEra
min :: PlutusScript DijkstraEra
-> PlutusScript DijkstraEra -> PlutusScript DijkstraEra
Ord, Int -> PlutusScript DijkstraEra -> String -> String
[PlutusScript DijkstraEra] -> String -> String
PlutusScript DijkstraEra -> String
(Int -> PlutusScript DijkstraEra -> String -> String)
-> (PlutusScript DijkstraEra -> String)
-> ([PlutusScript DijkstraEra] -> String -> String)
-> Show (PlutusScript DijkstraEra)
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
$cshowsPrec :: Int -> PlutusScript DijkstraEra -> String -> String
showsPrec :: Int -> PlutusScript DijkstraEra -> String -> String
$cshow :: PlutusScript DijkstraEra -> String
show :: PlutusScript DijkstraEra -> String
$cshowList :: [PlutusScript DijkstraEra] -> String -> String
showList :: [PlutusScript DijkstraEra] -> String -> String
Show, (forall x.
PlutusScript DijkstraEra -> Rep (PlutusScript DijkstraEra) x)
-> (forall x.
Rep (PlutusScript DijkstraEra) x -> PlutusScript DijkstraEra)
-> Generic (PlutusScript DijkstraEra)
forall x.
Rep (PlutusScript DijkstraEra) x -> PlutusScript DijkstraEra
forall x.
PlutusScript DijkstraEra -> Rep (PlutusScript DijkstraEra) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
PlutusScript DijkstraEra -> Rep (PlutusScript DijkstraEra) x
from :: forall x.
PlutusScript DijkstraEra -> Rep (PlutusScript DijkstraEra) x
$cto :: forall x.
Rep (PlutusScript DijkstraEra) x -> PlutusScript DijkstraEra
to :: forall x.
Rep (PlutusScript DijkstraEra) x -> PlutusScript DijkstraEra
Generic)
type PlutusPurpose f DijkstraEra = DijkstraPlutusPurpose f DijkstraEra
eraMaxLanguage :: Language
eraMaxLanguage = Language
PlutusV3
mkPlutusScript :: forall (l :: Language) (m :: * -> *).
(PlutusLanguage l, MonadFail m) =>
Plutus l -> m (PlutusScript DijkstraEra)
mkPlutusScript Plutus l
plutus =
case Plutus l -> SLanguage l
forall (l :: Language) (proxy :: Language -> *).
PlutusLanguage l =>
proxy l -> SLanguage l
plutusSLanguage Plutus l
plutus of
SLanguage l
SPlutusV1 -> PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra)
forall a. a -> m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra))
-> PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra)
forall a b. (a -> b) -> a -> b
$ Plutus 'PlutusV1 -> PlutusScript DijkstraEra
DijkstraPlutusV1 Plutus l
Plutus 'PlutusV1
plutus
SLanguage l
SPlutusV2 -> PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra)
forall a. a -> m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra))
-> PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra)
forall a b. (a -> b) -> a -> b
$ Plutus 'PlutusV2 -> PlutusScript DijkstraEra
DijkstraPlutusV2 Plutus l
Plutus 'PlutusV2
plutus
SLanguage l
SPlutusV3 -> PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra)
forall a. a -> m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra))
-> PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra)
forall a b. (a -> b) -> a -> b
$ Plutus 'PlutusV3 -> PlutusScript DijkstraEra
DijkstraPlutusV3 Plutus l
Plutus 'PlutusV3
plutus
SLanguage l
SPlutusV4 -> PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra)
forall a. a -> m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra))
-> PlutusScript DijkstraEra -> m (PlutusScript DijkstraEra)
forall a b. (a -> b) -> a -> b
$ Plutus 'PlutusV4 -> PlutusScript DijkstraEra
DijkstraPlutusV4 Plutus l
Plutus 'PlutusV4
plutus
withPlutusScript :: forall a.
PlutusScript DijkstraEra
-> (forall (l :: Language). PlutusLanguage l => Plutus l -> a) -> a
withPlutusScript (DijkstraPlutusV1 Plutus 'PlutusV1
plutus) forall (l :: Language). PlutusLanguage l => Plutus l -> a
f = Plutus 'PlutusV1 -> a
forall (l :: Language). PlutusLanguage l => Plutus l -> a
f Plutus 'PlutusV1
plutus
withPlutusScript (DijkstraPlutusV2 Plutus 'PlutusV2
plutus) forall (l :: Language). PlutusLanguage l => Plutus l -> a
f = Plutus 'PlutusV2 -> a
forall (l :: Language). PlutusLanguage l => Plutus l -> a
f Plutus 'PlutusV2
plutus
withPlutusScript (DijkstraPlutusV3 Plutus 'PlutusV3
plutus) forall (l :: Language). PlutusLanguage l => Plutus l -> a
f = Plutus 'PlutusV3 -> a
forall (l :: Language). PlutusLanguage l => Plutus l -> a
f Plutus 'PlutusV3
plutus
withPlutusScript (DijkstraPlutusV4 Plutus 'PlutusV4
plutus) forall (l :: Language). PlutusLanguage l => Plutus l -> a
f = Plutus 'PlutusV4 -> a
forall (l :: Language). PlutusLanguage l => Plutus l -> a
f Plutus 'PlutusV4
plutus
hoistPlutusPurpose :: forall (g :: * -> * -> *) (f :: * -> * -> *).
(forall ix it. g ix it -> f ix it)
-> PlutusPurpose g DijkstraEra -> PlutusPurpose f DijkstraEra
hoistPlutusPurpose forall ix it. g ix it -> f ix it
f = \case
DijkstraSpending g Word32 TxIn
x -> f Word32 TxIn -> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 TxIn -> DijkstraPlutusPurpose f era
DijkstraSpending (f Word32 TxIn -> DijkstraPlutusPurpose f DijkstraEra)
-> f Word32 TxIn -> DijkstraPlutusPurpose f DijkstraEra
forall a b. (a -> b) -> a -> b
$ g Word32 TxIn -> f Word32 TxIn
forall ix it. g ix it -> f ix it
f g Word32 TxIn
x
DijkstraMinting g Word32 PolicyID
x -> f Word32 PolicyID -> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> DijkstraPlutusPurpose f era
DijkstraMinting (f Word32 PolicyID -> DijkstraPlutusPurpose f DijkstraEra)
-> f Word32 PolicyID -> DijkstraPlutusPurpose f DijkstraEra
forall a b. (a -> b) -> a -> b
$ g Word32 PolicyID -> f Word32 PolicyID
forall ix it. g ix it -> f ix it
f g Word32 PolicyID
x
DijkstraCertifying g Word32 (TxCert DijkstraEra)
x -> f Word32 (TxCert DijkstraEra)
-> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> DijkstraPlutusPurpose f era
DijkstraCertifying (f Word32 (TxCert DijkstraEra)
-> DijkstraPlutusPurpose f DijkstraEra)
-> f Word32 (TxCert DijkstraEra)
-> DijkstraPlutusPurpose f DijkstraEra
forall a b. (a -> b) -> a -> b
$ g Word32 (DijkstraTxCert DijkstraEra)
-> f Word32 (DijkstraTxCert DijkstraEra)
forall ix it. g ix it -> f ix it
f g Word32 (TxCert DijkstraEra)
g Word32 (DijkstraTxCert DijkstraEra)
x
DijkstraRewarding g Word32 RewardAccount
x -> f Word32 RewardAccount -> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> DijkstraPlutusPurpose f era
DijkstraRewarding (f Word32 RewardAccount -> DijkstraPlutusPurpose f DijkstraEra)
-> f Word32 RewardAccount -> DijkstraPlutusPurpose f DijkstraEra
forall a b. (a -> b) -> a -> b
$ g Word32 RewardAccount -> f Word32 RewardAccount
forall ix it. g ix it -> f ix it
f g Word32 RewardAccount
x
DijkstraVoting g Word32 Voter
x -> f Word32 Voter -> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 Voter -> DijkstraPlutusPurpose f era
DijkstraVoting (f Word32 Voter -> DijkstraPlutusPurpose f DijkstraEra)
-> f Word32 Voter -> DijkstraPlutusPurpose f DijkstraEra
forall a b. (a -> b) -> a -> b
$ g Word32 Voter -> f Word32 Voter
forall ix it. g ix it -> f ix it
f g Word32 Voter
x
DijkstraProposing g Word32 (ProposalProcedure DijkstraEra)
x -> f Word32 (ProposalProcedure DijkstraEra)
-> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> DijkstraPlutusPurpose f era
DijkstraProposing (f Word32 (ProposalProcedure DijkstraEra)
-> DijkstraPlutusPurpose f DijkstraEra)
-> f Word32 (ProposalProcedure DijkstraEra)
-> DijkstraPlutusPurpose f DijkstraEra
forall a b. (a -> b) -> a -> b
$ g Word32 (ProposalProcedure DijkstraEra)
-> f Word32 (ProposalProcedure DijkstraEra)
forall ix it. g ix it -> f ix it
f g Word32 (ProposalProcedure DijkstraEra)
x
DijkstraGuarding g Word32 ScriptHash
x -> f Word32 ScriptHash -> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 ScriptHash -> DijkstraPlutusPurpose f era
DijkstraGuarding (f Word32 ScriptHash -> DijkstraPlutusPurpose f DijkstraEra)
-> f Word32 ScriptHash -> DijkstraPlutusPurpose f DijkstraEra
forall a b. (a -> b) -> a -> b
$ g Word32 ScriptHash -> f Word32 ScriptHash
forall ix it. g ix it -> f ix it
f g Word32 ScriptHash
x
mkSpendingPurpose :: forall (f :: * -> * -> *).
f Word32 TxIn -> PlutusPurpose f DijkstraEra
mkSpendingPurpose = f Word32 TxIn -> PlutusPurpose f DijkstraEra
f Word32 TxIn -> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 TxIn -> DijkstraPlutusPurpose f era
DijkstraSpending
toSpendingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra -> Maybe (f Word32 TxIn)
toSpendingPurpose (DijkstraSpending f Word32 TxIn
i) = f Word32 TxIn -> Maybe (f Word32 TxIn)
forall a. a -> Maybe a
Just f Word32 TxIn
i
toSpendingPurpose PlutusPurpose f DijkstraEra
_ = Maybe (f Word32 TxIn)
forall a. Maybe a
Nothing
mkMintingPurpose :: forall (f :: * -> * -> *).
f Word32 PolicyID -> PlutusPurpose f DijkstraEra
mkMintingPurpose = f Word32 PolicyID -> PlutusPurpose f DijkstraEra
f Word32 PolicyID -> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> DijkstraPlutusPurpose f era
DijkstraMinting
toMintingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra -> Maybe (f Word32 PolicyID)
toMintingPurpose (DijkstraMinting f Word32 PolicyID
i) = f Word32 PolicyID -> Maybe (f Word32 PolicyID)
forall a. a -> Maybe a
Just f Word32 PolicyID
i
toMintingPurpose PlutusPurpose f DijkstraEra
_ = Maybe (f Word32 PolicyID)
forall a. Maybe a
Nothing
mkCertifyingPurpose :: forall (f :: * -> * -> *).
f Word32 (TxCert DijkstraEra) -> PlutusPurpose f DijkstraEra
mkCertifyingPurpose = f Word32 (TxCert DijkstraEra) -> PlutusPurpose f DijkstraEra
f Word32 (TxCert DijkstraEra)
-> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> DijkstraPlutusPurpose f era
DijkstraCertifying
toCertifyingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra
-> Maybe (f Word32 (TxCert DijkstraEra))
toCertifyingPurpose (DijkstraCertifying f Word32 (TxCert DijkstraEra)
i) = f Word32 (DijkstraTxCert DijkstraEra)
-> Maybe (f Word32 (DijkstraTxCert DijkstraEra))
forall a. a -> Maybe a
Just f Word32 (TxCert DijkstraEra)
f Word32 (DijkstraTxCert DijkstraEra)
i
toCertifyingPurpose PlutusPurpose f DijkstraEra
_ = Maybe (f Word32 (TxCert DijkstraEra))
Maybe (f Word32 (DijkstraTxCert DijkstraEra))
forall a. Maybe a
Nothing
mkRewardingPurpose :: forall (f :: * -> * -> *).
f Word32 RewardAccount -> PlutusPurpose f DijkstraEra
mkRewardingPurpose = f Word32 RewardAccount -> PlutusPurpose f DijkstraEra
f Word32 RewardAccount -> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> DijkstraPlutusPurpose f era
DijkstraRewarding
toRewardingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra -> Maybe (f Word32 RewardAccount)
toRewardingPurpose (DijkstraRewarding f Word32 RewardAccount
i) = f Word32 RewardAccount -> Maybe (f Word32 RewardAccount)
forall a. a -> Maybe a
Just f Word32 RewardAccount
i
toRewardingPurpose PlutusPurpose f DijkstraEra
_ = Maybe (f Word32 RewardAccount)
forall a. Maybe a
Nothing
upgradePlutusPurposeAsIx :: AlonzoEraScript (PreviousEra DijkstraEra) =>
PlutusPurpose AsIx (PreviousEra DijkstraEra)
-> PlutusPurpose AsIx DijkstraEra
upgradePlutusPurposeAsIx = \case
ConwaySpending (AsIx Word32
ix) -> AsIx Word32 TxIn -> DijkstraPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 TxIn -> DijkstraPlutusPurpose f era
DijkstraSpending (Word32 -> AsIx Word32 TxIn
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
ConwayMinting (AsIx Word32
ix) -> AsIx Word32 PolicyID -> DijkstraPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> DijkstraPlutusPurpose f era
DijkstraMinting (Word32 -> AsIx Word32 PolicyID
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
ConwayCertifying (AsIx Word32
ix) -> AsIx Word32 (TxCert DijkstraEra)
-> DijkstraPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> DijkstraPlutusPurpose f era
DijkstraCertifying (Word32 -> AsIx Word32 (DijkstraTxCert DijkstraEra)
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
ConwayRewarding (AsIx Word32
ix) -> AsIx Word32 RewardAccount -> DijkstraPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> DijkstraPlutusPurpose f era
DijkstraRewarding (Word32 -> AsIx Word32 RewardAccount
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
ConwayVoting (AsIx Word32
ix) -> AsIx Word32 Voter -> DijkstraPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 Voter -> DijkstraPlutusPurpose f era
DijkstraVoting (Word32 -> AsIx Word32 Voter
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
ConwayProposing (AsIx Word32
ix) -> AsIx Word32 (ProposalProcedure DijkstraEra)
-> DijkstraPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> DijkstraPlutusPurpose f era
DijkstraProposing (Word32 -> AsIx Word32 (ProposalProcedure DijkstraEra)
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
instance ShelleyEraScript DijkstraEra where
mkRequireSignature :: KeyHash 'Witness -> NativeScript DijkstraEra
mkRequireSignature = KeyHash 'Witness -> NativeScript DijkstraEra
KeyHash 'Witness -> DijkstraNativeScript DijkstraEra
forall era. Era era => KeyHash 'Witness -> DijkstraNativeScript era
mkDijkstraRequireSignature
getRequireSignature :: NativeScript DijkstraEra -> Maybe (KeyHash 'Witness)
getRequireSignature = NativeScript DijkstraEra -> Maybe (KeyHash 'Witness)
DijkstraNativeScript DijkstraEra -> Maybe (KeyHash 'Witness)
forall era. DijkstraNativeScript era -> Maybe (KeyHash 'Witness)
getDijkstraRequireSignature
mkRequireAllOf :: StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
mkRequireAllOf = StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
StrictSeq (DijkstraNativeScript DijkstraEra)
-> DijkstraNativeScript DijkstraEra
forall era.
Era era =>
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScript era
mkDijkstraRequireAllOf
getRequireAllOf :: NativeScript DijkstraEra
-> Maybe (StrictSeq (NativeScript DijkstraEra))
getRequireAllOf = NativeScript DijkstraEra
-> Maybe (StrictSeq (NativeScript DijkstraEra))
DijkstraNativeScript DijkstraEra
-> Maybe (StrictSeq (DijkstraNativeScript DijkstraEra))
forall era.
DijkstraNativeScript era
-> Maybe (StrictSeq (DijkstraNativeScript era))
getDijkstraRequireAllOf
mkRequireAnyOf :: StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
mkRequireAnyOf = StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
StrictSeq (DijkstraNativeScript DijkstraEra)
-> DijkstraNativeScript DijkstraEra
forall era.
Era era =>
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScript era
mkDijkstraRequireAnyOf
getRequireAnyOf :: NativeScript DijkstraEra
-> Maybe (StrictSeq (NativeScript DijkstraEra))
getRequireAnyOf = NativeScript DijkstraEra
-> Maybe (StrictSeq (NativeScript DijkstraEra))
DijkstraNativeScript DijkstraEra
-> Maybe (StrictSeq (DijkstraNativeScript DijkstraEra))
forall era.
DijkstraNativeScript era
-> Maybe (StrictSeq (DijkstraNativeScript era))
getDijkstraRequireAnyOf
mkRequireMOf :: Int
-> StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
mkRequireMOf = Int
-> StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
Int
-> StrictSeq (DijkstraNativeScript DijkstraEra)
-> DijkstraNativeScript DijkstraEra
forall era.
Era era =>
Int
-> StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScript era
mkDijkstraRequireMOf
getRequireMOf :: NativeScript DijkstraEra
-> Maybe (Int, StrictSeq (NativeScript DijkstraEra))
getRequireMOf = NativeScript DijkstraEra
-> Maybe (Int, StrictSeq (NativeScript DijkstraEra))
DijkstraNativeScript DijkstraEra
-> Maybe (Int, StrictSeq (DijkstraNativeScript DijkstraEra))
forall era.
DijkstraNativeScript era
-> Maybe (Int, StrictSeq (DijkstraNativeScript era))
getDijkstraRequireMOf
instance AllegraEraScript DijkstraEra where
mkTimeStart :: SlotNo -> NativeScript DijkstraEra
mkTimeStart = SlotNo -> NativeScript DijkstraEra
SlotNo -> DijkstraNativeScript DijkstraEra
forall era. Era era => SlotNo -> DijkstraNativeScript era
mkDijkstraTimeStart
getTimeStart :: NativeScript DijkstraEra -> Maybe SlotNo
getTimeStart = NativeScript DijkstraEra -> Maybe SlotNo
DijkstraNativeScript DijkstraEra -> Maybe SlotNo
forall era. DijkstraNativeScript era -> Maybe SlotNo
getDijkstraTimeStart
mkTimeExpire :: SlotNo -> NativeScript DijkstraEra
mkTimeExpire = SlotNo -> NativeScript DijkstraEra
SlotNo -> DijkstraNativeScript DijkstraEra
forall era. Era era => SlotNo -> DijkstraNativeScript era
mkDijkstraTimeExpire
getTimeExpire :: NativeScript DijkstraEra -> Maybe SlotNo
getTimeExpire = NativeScript DijkstraEra -> Maybe SlotNo
DijkstraNativeScript DijkstraEra -> Maybe SlotNo
forall era. DijkstraNativeScript era -> Maybe SlotNo
getDijkstraTimeExpire
instance ConwayEraScript DijkstraEra where
mkVotingPurpose :: forall (f :: * -> * -> *).
f Word32 Voter -> PlutusPurpose f DijkstraEra
mkVotingPurpose = f Word32 Voter -> PlutusPurpose f DijkstraEra
f Word32 Voter -> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 Voter -> DijkstraPlutusPurpose f era
DijkstraVoting
toVotingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra -> Maybe (f Word32 Voter)
toVotingPurpose (DijkstraVoting f Word32 Voter
i) = f Word32 Voter -> Maybe (f Word32 Voter)
forall a. a -> Maybe a
Just f Word32 Voter
i
toVotingPurpose PlutusPurpose f DijkstraEra
_ = Maybe (f Word32 Voter)
forall a. Maybe a
Nothing
mkProposingPurpose :: forall (f :: * -> * -> *).
f Word32 (ProposalProcedure DijkstraEra)
-> PlutusPurpose f DijkstraEra
mkProposingPurpose = f Word32 (ProposalProcedure DijkstraEra)
-> PlutusPurpose f DijkstraEra
f Word32 (ProposalProcedure DijkstraEra)
-> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> DijkstraPlutusPurpose f era
DijkstraProposing
toProposingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra
-> Maybe (f Word32 (ProposalProcedure DijkstraEra))
toProposingPurpose (DijkstraProposing f Word32 (ProposalProcedure DijkstraEra)
i) = f Word32 (ProposalProcedure DijkstraEra)
-> Maybe (f Word32 (ProposalProcedure DijkstraEra))
forall a. a -> Maybe a
Just f Word32 (ProposalProcedure DijkstraEra)
i
toProposingPurpose PlutusPurpose f DijkstraEra
_ = Maybe (f Word32 (ProposalProcedure DijkstraEra))
forall a. Maybe a
Nothing
class ConwayEraScript era => DijkstraEraScript era where
mkGuardingPurpose :: f Word32 ScriptHash -> PlutusPurpose f era
toGuardingPurpose :: PlutusPurpose f era -> Maybe (f Word32 ScriptHash)
mkRequireGuard :: Credential 'Guard -> NativeScript era
getRequireGuard :: NativeScript era -> Maybe (Credential 'Guard)
instance DijkstraEraScript DijkstraEra where
mkGuardingPurpose :: forall (f :: * -> * -> *).
f Word32 ScriptHash -> PlutusPurpose f DijkstraEra
mkGuardingPurpose = f Word32 ScriptHash -> PlutusPurpose f DijkstraEra
f Word32 ScriptHash -> DijkstraPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 ScriptHash -> DijkstraPlutusPurpose f era
DijkstraGuarding
toGuardingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra -> Maybe (f Word32 ScriptHash)
toGuardingPurpose (DijkstraGuarding f Word32 ScriptHash
i) = f Word32 ScriptHash -> Maybe (f Word32 ScriptHash)
forall a. a -> Maybe a
Just f Word32 ScriptHash
i
toGuardingPurpose PlutusPurpose f DijkstraEra
_ = Maybe (f Word32 ScriptHash)
forall a. Maybe a
Nothing
mkRequireGuard :: Credential 'Guard -> NativeScript DijkstraEra
mkRequireGuard = Credential 'Guard -> NativeScript DijkstraEra
Credential 'Guard -> DijkstraNativeScript DijkstraEra
forall era.
Era era =>
Credential 'Guard -> DijkstraNativeScript era
mkDijkstraRequireGuard
getRequireGuard :: NativeScript DijkstraEra -> Maybe (Credential 'Guard)
getRequireGuard = NativeScript DijkstraEra -> Maybe (Credential 'Guard)
DijkstraNativeScript DijkstraEra -> Maybe (Credential 'Guard)
forall era. DijkstraNativeScript era -> Maybe (Credential 'Guard)
getDijkstraRequireGuard
pattern GuardingPurpose ::
DijkstraEraScript era => f Word32 ScriptHash -> PlutusPurpose f era
pattern $mGuardingPurpose :: forall {r} {era} {f :: * -> * -> *}.
DijkstraEraScript era =>
PlutusPurpose f era
-> (f Word32 ScriptHash -> r) -> ((# #) -> r) -> r
$bGuardingPurpose :: forall era (f :: * -> * -> *).
DijkstraEraScript era =>
f Word32 ScriptHash -> PlutusPurpose f era
GuardingPurpose c <- (toGuardingPurpose -> Just c)
where
GuardingPurpose f Word32 ScriptHash
c = f Word32 ScriptHash -> PlutusPurpose f era
forall era (f :: * -> * -> *).
DijkstraEraScript era =>
f Word32 ScriptHash -> PlutusPurpose f era
forall (f :: * -> * -> *).
f Word32 ScriptHash -> PlutusPurpose f era
mkGuardingPurpose f Word32 ScriptHash
c
pattern RequireGuard :: DijkstraEraScript era => Credential 'Guard -> NativeScript era
pattern $mRequireGuard :: forall {r} {era}.
DijkstraEraScript era =>
NativeScript era -> (Credential 'Guard -> r) -> ((# #) -> r) -> r
$bRequireGuard :: forall era.
DijkstraEraScript era =>
Credential 'Guard -> NativeScript era
RequireGuard cred <- (getRequireGuard -> Just cred)
where
RequireGuard Credential 'Guard
cred = Credential 'Guard -> NativeScript era
forall era.
DijkstraEraScript era =>
Credential 'Guard -> NativeScript era
mkRequireGuard Credential 'Guard
cred
evalDijkstraNativeScript ::
(DijkstraEraScript era, NativeScript era ~ DijkstraNativeScript era) =>
Set.Set (KeyHash 'Witness) ->
ValidityInterval ->
OSet (Credential 'Guard) ->
NativeScript era ->
Bool
evalDijkstraNativeScript :: forall era.
(DijkstraEraScript era,
NativeScript era ~ DijkstraNativeScript era) =>
Set (KeyHash 'Witness)
-> ValidityInterval
-> OSet (Credential 'Guard)
-> NativeScript era
-> Bool
evalDijkstraNativeScript Set (KeyHash 'Witness)
keyHashes (ValidityInterval StrictMaybe SlotNo
txStart StrictMaybe SlotNo
txExp) OSet (Credential 'Guard)
guards = NativeScript era -> Bool
go
where
isValidMOf :: Int -> StrictSeq (NativeScript era) -> Bool
isValidMOf Int
n StrictSeq (NativeScript era)
SSeq.Empty = Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
0
isValidMOf Int
n (NativeScript era
ts SSeq.:<| StrictSeq (NativeScript era)
tss) =
Int
n Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
0 Bool -> Bool -> Bool
|| if NativeScript era -> Bool
go NativeScript era
ts then Int -> StrictSeq (NativeScript era) -> Bool
isValidMOf (Int
n Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1) StrictSeq (NativeScript era)
tss else Int -> StrictSeq (NativeScript era) -> Bool
isValidMOf Int
n StrictSeq (NativeScript era)
tss
go :: NativeScript era -> Bool
go = \case
RequireTimeStart SlotNo
lockStart -> SlotNo
lockStart SlotNo -> StrictMaybe SlotNo -> Bool
`lteNegInfty` StrictMaybe SlotNo
txStart
RequireTimeExpire SlotNo
lockExp -> StrictMaybe SlotNo
txExp StrictMaybe SlotNo -> SlotNo -> Bool
`ltePosInfty` SlotNo
lockExp
RequireSignature KeyHash 'Witness
hash -> KeyHash 'Witness
hash KeyHash 'Witness -> Set (KeyHash 'Witness) -> Bool
forall a. Ord a => a -> Set a -> Bool
`Set.member` Set (KeyHash 'Witness)
keyHashes
RequireAllOf StrictSeq (NativeScript era)
xs -> (NativeScript era -> Bool) -> StrictSeq (NativeScript era) -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all NativeScript era -> Bool
go StrictSeq (NativeScript era)
xs
RequireAnyOf StrictSeq (NativeScript era)
xs -> (NativeScript era -> Bool) -> StrictSeq (NativeScript era) -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any NativeScript era -> Bool
go StrictSeq (NativeScript era)
xs
RequireMOf Int
m StrictSeq (NativeScript era)
xs -> Int -> StrictSeq (NativeScript era) -> Bool
isValidMOf Int
m StrictSeq (NativeScript era)
xs
RequireGuard Credential 'Guard
cred -> Credential 'Guard
cred Credential 'Guard -> OSet (Credential 'Guard) -> Bool
forall a. Ord a => a -> OSet a -> Bool
`OSet.member` OSet (Credential 'Guard)
guards
NativeScript era
_ -> String -> Bool
forall a. HasCallStack => String -> a
error String
"Impossible: All NativeScripts should have been accounted for"
mkDijkstraRequireSignature :: forall era. Era era => KeyHash 'Witness -> DijkstraNativeScript era
mkDijkstraRequireSignature :: forall era. Era era => KeyHash 'Witness -> DijkstraNativeScript era
mkDijkstraRequireSignature = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @era (DijkstraNativeScriptRaw era -> DijkstraNativeScript era)
-> (KeyHash 'Witness -> DijkstraNativeScriptRaw era)
-> KeyHash 'Witness
-> DijkstraNativeScript era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. KeyHash 'Witness -> DijkstraNativeScriptRaw era
forall era. KeyHash 'Witness -> DijkstraNativeScriptRaw era
DijkstraRequireSignature
getDijkstraRequireSignature :: DijkstraNativeScript era -> Maybe (KeyHash 'Witness)
getDijkstraRequireSignature :: forall era. DijkstraNativeScript era -> Maybe (KeyHash 'Witness)
getDijkstraRequireSignature (MkDijkstraNativeScript (Memo (DijkstraRequireSignature KeyHash 'Witness
kh) ShortByteString
_)) = KeyHash 'Witness -> Maybe (KeyHash 'Witness)
forall a. a -> Maybe a
Just KeyHash 'Witness
kh
getDijkstraRequireSignature DijkstraNativeScript era
_ = Maybe (KeyHash 'Witness)
forall a. Maybe a
Nothing
mkDijkstraRequireAllOf ::
forall era. Era era => StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScript era
mkDijkstraRequireAllOf :: forall era.
Era era =>
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScript era
mkDijkstraRequireAllOf = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @era (DijkstraNativeScriptRaw era -> DijkstraNativeScript era)
-> (StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScript era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
forall era.
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
DijkstraRequireAllOf
getDijkstraRequireAllOf :: DijkstraNativeScript era -> Maybe (StrictSeq (DijkstraNativeScript era))
getDijkstraRequireAllOf :: forall era.
DijkstraNativeScript era
-> Maybe (StrictSeq (DijkstraNativeScript era))
getDijkstraRequireAllOf (MkDijkstraNativeScript (Memo (DijkstraRequireAllOf StrictSeq (DijkstraNativeScript era)
ms) ShortByteString
_)) = StrictSeq (DijkstraNativeScript era)
-> Maybe (StrictSeq (DijkstraNativeScript era))
forall a. a -> Maybe a
Just StrictSeq (DijkstraNativeScript era)
ms
getDijkstraRequireAllOf DijkstraNativeScript era
_ = Maybe (StrictSeq (DijkstraNativeScript era))
forall a. Maybe a
Nothing
mkDijkstraRequireAnyOf ::
forall era. Era era => StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScript era
mkDijkstraRequireAnyOf :: forall era.
Era era =>
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScript era
mkDijkstraRequireAnyOf = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @era (DijkstraNativeScriptRaw era -> DijkstraNativeScript era)
-> (StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScript era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
forall era.
StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScriptRaw era
DijkstraRequireAnyOf
getDijkstraRequireAnyOf :: DijkstraNativeScript era -> Maybe (StrictSeq (DijkstraNativeScript era))
getDijkstraRequireAnyOf :: forall era.
DijkstraNativeScript era
-> Maybe (StrictSeq (DijkstraNativeScript era))
getDijkstraRequireAnyOf (MkDijkstraNativeScript (Memo (DijkstraRequireAnyOf StrictSeq (DijkstraNativeScript era)
ms) ShortByteString
_)) = StrictSeq (DijkstraNativeScript era)
-> Maybe (StrictSeq (DijkstraNativeScript era))
forall a. a -> Maybe a
Just StrictSeq (DijkstraNativeScript era)
ms
getDijkstraRequireAnyOf DijkstraNativeScript era
_ = Maybe (StrictSeq (DijkstraNativeScript era))
forall a. Maybe a
Nothing
mkDijkstraRequireMOf ::
forall era. Era era => Int -> StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScript era
mkDijkstraRequireMOf :: forall era.
Era era =>
Int
-> StrictSeq (DijkstraNativeScript era) -> DijkstraNativeScript era
mkDijkstraRequireMOf Int
n = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @era (DijkstraNativeScriptRaw era -> DijkstraNativeScript era)
-> (StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era)
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScript era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era
forall era.
Int
-> StrictSeq (DijkstraNativeScript era)
-> DijkstraNativeScriptRaw era
DijkstraRequireMOf Int
n
getDijkstraRequireMOf ::
DijkstraNativeScript era -> Maybe (Int, StrictSeq (DijkstraNativeScript era))
getDijkstraRequireMOf :: forall era.
DijkstraNativeScript era
-> Maybe (Int, StrictSeq (DijkstraNativeScript era))
getDijkstraRequireMOf (MkDijkstraNativeScript (Memo (DijkstraRequireMOf Int
n StrictSeq (DijkstraNativeScript era)
ms) ShortByteString
_)) = (Int, StrictSeq (DijkstraNativeScript era))
-> Maybe (Int, StrictSeq (DijkstraNativeScript era))
forall a. a -> Maybe a
Just (Int
n, StrictSeq (DijkstraNativeScript era)
ms)
getDijkstraRequireMOf DijkstraNativeScript era
_ = Maybe (Int, StrictSeq (DijkstraNativeScript era))
forall a. Maybe a
Nothing
mkDijkstraTimeStart :: forall era. Era era => SlotNo -> DijkstraNativeScript era
mkDijkstraTimeStart :: forall era. Era era => SlotNo -> DijkstraNativeScript era
mkDijkstraTimeStart = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @era (DijkstraNativeScriptRaw era -> DijkstraNativeScript era)
-> (SlotNo -> DijkstraNativeScriptRaw era)
-> SlotNo
-> DijkstraNativeScript era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SlotNo -> DijkstraNativeScriptRaw era
forall era. SlotNo -> DijkstraNativeScriptRaw era
DijkstraTimeStart
getDijkstraTimeStart :: DijkstraNativeScript era -> Maybe SlotNo
getDijkstraTimeStart :: forall era. DijkstraNativeScript era -> Maybe SlotNo
getDijkstraTimeStart (MkDijkstraNativeScript (Memo (DijkstraTimeStart SlotNo
mslot) ShortByteString
_)) = SlotNo -> Maybe SlotNo
forall a. a -> Maybe a
Just SlotNo
mslot
getDijkstraTimeStart DijkstraNativeScript era
_ = Maybe SlotNo
forall a. Maybe a
Nothing
mkDijkstraTimeExpire :: forall era. Era era => SlotNo -> DijkstraNativeScript era
mkDijkstraTimeExpire :: forall era. Era era => SlotNo -> DijkstraNativeScript era
mkDijkstraTimeExpire = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @era (DijkstraNativeScriptRaw era -> DijkstraNativeScript era)
-> (SlotNo -> DijkstraNativeScriptRaw era)
-> SlotNo
-> DijkstraNativeScript era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SlotNo -> DijkstraNativeScriptRaw era
forall era. SlotNo -> DijkstraNativeScriptRaw era
DijkstraTimeExpire
getDijkstraTimeExpire :: DijkstraNativeScript era -> Maybe SlotNo
getDijkstraTimeExpire :: forall era. DijkstraNativeScript era -> Maybe SlotNo
getDijkstraTimeExpire (MkDijkstraNativeScript (Memo (DijkstraTimeExpire SlotNo
mslot) ShortByteString
_)) = SlotNo -> Maybe SlotNo
forall a. a -> Maybe a
Just SlotNo
mslot
getDijkstraTimeExpire DijkstraNativeScript era
_ = Maybe SlotNo
forall a. Maybe a
Nothing
mkDijkstraRequireGuard :: forall era. Era era => Credential 'Guard -> DijkstraNativeScript era
mkDijkstraRequireGuard :: forall era.
Era era =>
Credential 'Guard -> DijkstraNativeScript era
mkDijkstraRequireGuard = forall era t.
(Era era, EncCBOR (RawType t), Memoized t) =>
RawType t -> t
mkMemoizedEra @era (DijkstraNativeScriptRaw era -> DijkstraNativeScript era)
-> (Credential 'Guard -> DijkstraNativeScriptRaw era)
-> Credential 'Guard
-> DijkstraNativeScript era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Credential 'Guard -> DijkstraNativeScriptRaw era
forall era. Credential 'Guard -> DijkstraNativeScriptRaw era
DijkstraRequireGuard
getDijkstraRequireGuard :: DijkstraNativeScript era -> Maybe (Credential 'Guard)
getDijkstraRequireGuard :: forall era. DijkstraNativeScript era -> Maybe (Credential 'Guard)
getDijkstraRequireGuard (MkDijkstraNativeScript (Memo (DijkstraRequireGuard Credential 'Guard
cred) ShortByteString
_)) = Credential 'Guard -> Maybe (Credential 'Guard)
forall a. a -> Maybe a
Just Credential 'Guard
cred
getDijkstraRequireGuard DijkstraNativeScript era
_ = Maybe (Credential 'Guard)
forall a. Maybe a
Nothing