{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Cardano.Ledger.Dijkstra.Scripts (PlutusScript (..)) where

import Cardano.Ledger.Allegra.Scripts (
  AllegraEraScript (..),
  Timelock,
  getRequireAllOfTimelock,
  getRequireAnyOfTimelock,
  getRequireMOfTimelock,
  getRequireSignatureTimelock,
  getTimeExpireTimelock,
  getTimeStartTimelock,
  mkRequireAllOfTimelock,
  mkRequireAnyOfTimelock,
  mkRequireMOfTimelock,
  mkRequireSignatureTimelock,
  mkTimeExpireTimelock,
  mkTimeStartTimelock,
  translateTimelock,
 )
import Cardano.Ledger.Alonzo (AlonzoScript)
import Cardano.Ledger.Alonzo.Scripts (
  AlonzoEraScript (..),
  AlonzoScript (..),
  AsIx (..),
  alonzoScriptPrefixTag,
 )
import Cardano.Ledger.Conway (ConwayEra)
import Cardano.Ledger.Conway.Scripts (
  ConwayEraScript (..),
  ConwayPlutusPurpose (..),
  PlutusScript (..),
 )
import Cardano.Ledger.Core (EraScript (..), SafeToHash)
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
import Cardano.Ledger.Dijkstra.PParams ()
import Cardano.Ledger.Dijkstra.TxCert ()
import Cardano.Ledger.Plutus (Language (..))
import Cardano.Ledger.Shelley.Scripts (ShelleyEraScript (..))
import Control.DeepSeq (NFData)
import Data.MemPack (MemPack (..))
import GHC.Generics (Generic)
import NoThunks.Class (NoThunks)

instance EraScript DijkstraEra where
  type Script DijkstraEra = AlonzoScript DijkstraEra
  type NativeScript DijkstraEra = Timelock DijkstraEra

  upgradeScript :: EraScript (PreviousEra DijkstraEra) =>
Script (PreviousEra DijkstraEra) -> Script DijkstraEra
upgradeScript = \case
    TimelockScript Timelock ConwayEra
ts -> Timelock DijkstraEra -> AlonzoScript DijkstraEra
forall era. Timelock era -> AlonzoScript era
TimelockScript (Timelock DijkstraEra -> AlonzoScript DijkstraEra)
-> Timelock DijkstraEra -> AlonzoScript DijkstraEra
forall a b. (a -> b) -> a -> b
$ Timelock ConwayEra -> Timelock DijkstraEra
forall era1 era2.
(Era era1, Era era2) =>
Timelock era1 -> Timelock era2
translateTimelock Timelock ConwayEra
ts
    PlutusScript PlutusScript ConwayEra
ps -> 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
$ PlutusScript ConwayEra -> PlutusScript DijkstraEra
MkDijkstraPlutusScript PlutusScript ConwayEra
ps

  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 (TimelockScript Timelock DijkstraEra
ts) = Timelock DijkstraEra -> Maybe (Timelock DijkstraEra)
forall a. a -> Maybe a
Just Timelock DijkstraEra
ts
  getNativeScript Script DijkstraEra
_ = Maybe (Timelock DijkstraEra)
Maybe (NativeScript DijkstraEra)
forall a. Maybe a
Nothing

  fromNativeScript :: NativeScript DijkstraEra -> Script DijkstraEra
fromNativeScript = Timelock DijkstraEra -> AlonzoScript DijkstraEra
NativeScript DijkstraEra -> Script DijkstraEra
forall era. Timelock era -> AlonzoScript era
TimelockScript

instance MemPack (PlutusScript DijkstraEra) where
  packedByteCount :: PlutusScript DijkstraEra -> Int
packedByteCount = PlutusScript ConwayEra -> Int
forall a. MemPack a => a -> Int
packedByteCount (PlutusScript ConwayEra -> Int)
-> (PlutusScript DijkstraEra -> PlutusScript ConwayEra)
-> PlutusScript DijkstraEra
-> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PlutusScript DijkstraEra -> PlutusScript ConwayEra
unDijkstraPlutusScript
  packM :: forall s. PlutusScript DijkstraEra -> Pack s ()
packM = PlutusScript ConwayEra -> Pack s ()
forall s. PlutusScript ConwayEra -> Pack s ()
forall a s. MemPack a => a -> Pack s ()
packM (PlutusScript ConwayEra -> Pack s ())
-> (PlutusScript DijkstraEra -> PlutusScript ConwayEra)
-> PlutusScript DijkstraEra
-> Pack s ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PlutusScript DijkstraEra -> PlutusScript ConwayEra
unDijkstraPlutusScript
  unpackM :: forall b. Buffer b => Unpack b (PlutusScript DijkstraEra)
unpackM = PlutusScript ConwayEra -> PlutusScript DijkstraEra
MkDijkstraPlutusScript (PlutusScript ConwayEra -> PlutusScript DijkstraEra)
-> Unpack b (PlutusScript ConwayEra)
-> Unpack b (PlutusScript DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Unpack b (PlutusScript ConwayEra)
forall a b. (MemPack a, Buffer b) => Unpack b a
forall b. Buffer b => Unpack b (PlutusScript ConwayEra)
unpackM

instance AlonzoEraScript DijkstraEra where
  newtype PlutusScript DijkstraEra = MkDijkstraPlutusScript
    {PlutusScript DijkstraEra -> PlutusScript ConwayEra
unDijkstraPlutusScript :: PlutusScript ConwayEra}
    deriving newtype (PlutusScript DijkstraEra -> Int
PlutusScript DijkstraEra -> ByteString
(PlutusScript DijkstraEra -> ByteString)
-> (PlutusScript DijkstraEra -> Int)
-> (forall i. Proxy i -> PlutusScript DijkstraEra -> SafeHash i)
-> SafeToHash (PlutusScript DijkstraEra)
forall i. Proxy i -> PlutusScript DijkstraEra -> SafeHash i
forall t.
(t -> ByteString)
-> (t -> Int)
-> (forall i. Proxy i -> t -> SafeHash i)
-> SafeToHash t
$coriginalBytes :: PlutusScript DijkstraEra -> ByteString
originalBytes :: PlutusScript DijkstraEra -> ByteString
$coriginalBytesSize :: PlutusScript DijkstraEra -> Int
originalBytesSize :: PlutusScript DijkstraEra -> Int
$cmakeHashWithExplicitProxys :: forall i. Proxy i -> PlutusScript DijkstraEra -> SafeHash i
makeHashWithExplicitProxys :: forall i. Proxy i -> PlutusScript DijkstraEra -> SafeHash i
SafeToHash, Int -> PlutusScript DijkstraEra -> ShowS
[PlutusScript DijkstraEra] -> ShowS
PlutusScript DijkstraEra -> String
(Int -> PlutusScript DijkstraEra -> ShowS)
-> (PlutusScript DijkstraEra -> String)
-> ([PlutusScript DijkstraEra] -> ShowS)
-> Show (PlutusScript DijkstraEra)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PlutusScript DijkstraEra -> ShowS
showsPrec :: Int -> PlutusScript DijkstraEra -> ShowS
$cshow :: PlutusScript DijkstraEra -> String
show :: PlutusScript DijkstraEra -> String
$cshowList :: [PlutusScript DijkstraEra] -> ShowS
showList :: [PlutusScript DijkstraEra] -> ShowS
Show, PlutusScript DijkstraEra -> ()
(PlutusScript DijkstraEra -> ())
-> NFData (PlutusScript DijkstraEra)
forall a. (a -> ()) -> NFData a
$crnf :: PlutusScript DijkstraEra -> ()
rnf :: PlutusScript DijkstraEra -> ()
NFData, Context -> PlutusScript DijkstraEra -> IO (Maybe ThunkInfo)
Proxy (PlutusScript DijkstraEra) -> String
(Context -> PlutusScript DijkstraEra -> IO (Maybe ThunkInfo))
-> (Context -> PlutusScript DijkstraEra -> IO (Maybe ThunkInfo))
-> (Proxy (PlutusScript DijkstraEra) -> String)
-> NoThunks (PlutusScript DijkstraEra)
forall a.
(Context -> a -> IO (Maybe ThunkInfo))
-> (Context -> a -> IO (Maybe ThunkInfo))
-> (Proxy a -> String)
-> NoThunks a
$cnoThunks :: Context -> PlutusScript DijkstraEra -> IO (Maybe ThunkInfo)
noThunks :: Context -> PlutusScript DijkstraEra -> IO (Maybe ThunkInfo)
$cwNoThunks :: Context -> PlutusScript DijkstraEra -> IO (Maybe ThunkInfo)
wNoThunks :: Context -> PlutusScript DijkstraEra -> IO (Maybe ThunkInfo)
$cshowTypeOf :: Proxy (PlutusScript DijkstraEra) -> String
showTypeOf :: Proxy (PlutusScript DijkstraEra) -> String
NoThunks, 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, (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 = ConwayPlutusPurpose f DijkstraEra

  eraMaxLanguage :: Language
eraMaxLanguage = Language
PlutusV3

  mkPlutusScript :: forall (l :: Language).
PlutusLanguage l =>
Plutus l -> Maybe (PlutusScript DijkstraEra)
mkPlutusScript = (PlutusScript ConwayEra -> PlutusScript DijkstraEra)
-> Maybe (PlutusScript ConwayEra)
-> Maybe (PlutusScript DijkstraEra)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap PlutusScript ConwayEra -> PlutusScript DijkstraEra
MkDijkstraPlutusScript (Maybe (PlutusScript ConwayEra)
 -> Maybe (PlutusScript DijkstraEra))
-> (Plutus l -> Maybe (PlutusScript ConwayEra))
-> Plutus l
-> Maybe (PlutusScript DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Plutus l -> Maybe (PlutusScript ConwayEra)
forall era (l :: Language).
(AlonzoEraScript era, PlutusLanguage l) =>
Plutus l -> Maybe (PlutusScript era)
forall (l :: Language).
PlutusLanguage l =>
Plutus l -> Maybe (PlutusScript ConwayEra)
mkPlutusScript

  withPlutusScript :: forall a.
PlutusScript DijkstraEra
-> (forall (l :: Language). PlutusLanguage l => Plutus l -> a) -> a
withPlutusScript (MkDijkstraPlutusScript PlutusScript ConwayEra
s) = PlutusScript ConwayEra
-> (forall (l :: Language). PlutusLanguage l => Plutus l -> a) -> a
forall era a.
AlonzoEraScript era =>
PlutusScript era
-> (forall (l :: Language). PlutusLanguage l => Plutus l -> a) -> a
forall a.
PlutusScript ConwayEra
-> (forall (l :: Language). PlutusLanguage l => Plutus l -> a) -> a
withPlutusScript PlutusScript ConwayEra
s

  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
    ConwaySpending g Word32 TxIn
x -> f Word32 TxIn -> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 TxIn -> ConwayPlutusPurpose f era
ConwaySpending (f Word32 TxIn -> ConwayPlutusPurpose f DijkstraEra)
-> f Word32 TxIn -> ConwayPlutusPurpose 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
    ConwayMinting g Word32 PolicyID
x -> f Word32 PolicyID -> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> ConwayPlutusPurpose f era
ConwayMinting (f Word32 PolicyID -> ConwayPlutusPurpose f DijkstraEra)
-> f Word32 PolicyID -> ConwayPlutusPurpose 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
    ConwayCertifying g Word32 (TxCert DijkstraEra)
x -> f Word32 (TxCert DijkstraEra) -> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> ConwayPlutusPurpose f era
ConwayCertifying (f Word32 (TxCert DijkstraEra)
 -> ConwayPlutusPurpose f DijkstraEra)
-> f Word32 (TxCert DijkstraEra)
-> ConwayPlutusPurpose f DijkstraEra
forall a b. (a -> b) -> a -> b
$ g Word32 (ConwayTxCert DijkstraEra)
-> f Word32 (ConwayTxCert DijkstraEra)
forall ix it. g ix it -> f ix it
f g Word32 (TxCert DijkstraEra)
g Word32 (ConwayTxCert DijkstraEra)
x
    ConwayRewarding g Word32 RewardAccount
x -> f Word32 RewardAccount -> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> ConwayPlutusPurpose f era
ConwayRewarding (f Word32 RewardAccount -> ConwayPlutusPurpose f DijkstraEra)
-> f Word32 RewardAccount -> ConwayPlutusPurpose 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
    ConwayVoting g Word32 Voter
x -> f Word32 Voter -> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 Voter -> ConwayPlutusPurpose f era
ConwayVoting (f Word32 Voter -> ConwayPlutusPurpose f DijkstraEra)
-> f Word32 Voter -> ConwayPlutusPurpose 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
    ConwayProposing g Word32 (ProposalProcedure DijkstraEra)
x -> f Word32 (ProposalProcedure DijkstraEra)
-> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> ConwayPlutusPurpose f era
ConwayProposing (f Word32 (ProposalProcedure DijkstraEra)
 -> ConwayPlutusPurpose f DijkstraEra)
-> f Word32 (ProposalProcedure DijkstraEra)
-> ConwayPlutusPurpose 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

  mkSpendingPurpose :: forall (f :: * -> * -> *).
f Word32 TxIn -> PlutusPurpose f DijkstraEra
mkSpendingPurpose = f Word32 TxIn -> PlutusPurpose f DijkstraEra
f Word32 TxIn -> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 TxIn -> ConwayPlutusPurpose f era
ConwaySpending

  toSpendingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra -> Maybe (f Word32 TxIn)
toSpendingPurpose (ConwaySpending 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 -> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> ConwayPlutusPurpose f era
ConwayMinting

  toMintingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra -> Maybe (f Word32 PolicyID)
toMintingPurpose (ConwayMinting 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) -> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> ConwayPlutusPurpose f era
ConwayCertifying

  toCertifyingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra
-> Maybe (f Word32 (TxCert DijkstraEra))
toCertifyingPurpose (ConwayCertifying f Word32 (TxCert DijkstraEra)
i) = f Word32 (ConwayTxCert DijkstraEra)
-> Maybe (f Word32 (ConwayTxCert DijkstraEra))
forall a. a -> Maybe a
Just f Word32 (TxCert DijkstraEra)
f Word32 (ConwayTxCert DijkstraEra)
i
  toCertifyingPurpose PlutusPurpose f DijkstraEra
_ = Maybe (f Word32 (TxCert DijkstraEra))
Maybe (f Word32 (ConwayTxCert 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 -> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> ConwayPlutusPurpose f era
ConwayRewarding

  toRewardingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra -> Maybe (f Word32 RewardAccount)
toRewardingPurpose (ConwayRewarding 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 -> ConwayPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 TxIn -> ConwayPlutusPurpose f era
ConwaySpending (Word32 -> AsIx Word32 TxIn
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
    ConwayMinting (AsIx Word32
ix) -> AsIx Word32 PolicyID -> ConwayPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 PolicyID -> ConwayPlutusPurpose f era
ConwayMinting (Word32 -> AsIx Word32 PolicyID
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
    ConwayCertifying (AsIx Word32
ix) -> AsIx Word32 (TxCert DijkstraEra)
-> ConwayPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (TxCert era) -> ConwayPlutusPurpose f era
ConwayCertifying (Word32 -> AsIx Word32 (ConwayTxCert DijkstraEra)
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
    ConwayRewarding (AsIx Word32
ix) -> AsIx Word32 RewardAccount -> ConwayPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 RewardAccount -> ConwayPlutusPurpose f era
ConwayRewarding (Word32 -> AsIx Word32 RewardAccount
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
    ConwayVoting (AsIx Word32
ix) -> AsIx Word32 Voter -> ConwayPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 Voter -> ConwayPlutusPurpose f era
ConwayVoting (Word32 -> AsIx Word32 Voter
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)
    ConwayProposing (AsIx Word32
ix) -> AsIx Word32 (ProposalProcedure DijkstraEra)
-> ConwayPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> ConwayPlutusPurpose f era
ConwayProposing (Word32 -> AsIx Word32 (ProposalProcedure DijkstraEra)
forall ix it. ix -> AsIx ix it
AsIx Word32
ix)

instance ConwayEraScript DijkstraEra where
  mkVotingPurpose :: forall (f :: * -> * -> *).
f Word32 Voter -> PlutusPurpose f DijkstraEra
mkVotingPurpose = f Word32 Voter -> PlutusPurpose f DijkstraEra
f Word32 Voter -> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 Voter -> ConwayPlutusPurpose f era
ConwayVoting

  toVotingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra -> Maybe (f Word32 Voter)
toVotingPurpose (ConwayVoting 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)
-> ConwayPlutusPurpose f DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 (ProposalProcedure era) -> ConwayPlutusPurpose f era
ConwayProposing

  toProposingPurpose :: forall (f :: * -> * -> *).
PlutusPurpose f DijkstraEra
-> Maybe (f Word32 (ProposalProcedure DijkstraEra))
toProposingPurpose (ConwayProposing 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

instance ShelleyEraScript DijkstraEra where
  mkRequireSignature :: KeyHash 'Witness -> NativeScript DijkstraEra
mkRequireSignature = KeyHash 'Witness -> Timelock DijkstraEra
KeyHash 'Witness -> NativeScript DijkstraEra
forall era. Era era => KeyHash 'Witness -> Timelock era
mkRequireSignatureTimelock
  getRequireSignature :: NativeScript DijkstraEra -> Maybe (KeyHash 'Witness)
getRequireSignature = Timelock DijkstraEra -> Maybe (KeyHash 'Witness)
NativeScript DijkstraEra -> Maybe (KeyHash 'Witness)
forall {k} (era :: k). Timelock era -> Maybe (KeyHash 'Witness)
getRequireSignatureTimelock

  mkRequireAllOf :: StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
mkRequireAllOf = StrictSeq (Timelock DijkstraEra) -> Timelock DijkstraEra
StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
forall era. Era era => StrictSeq (Timelock era) -> Timelock era
mkRequireAllOfTimelock
  getRequireAllOf :: NativeScript DijkstraEra
-> Maybe (StrictSeq (NativeScript DijkstraEra))
getRequireAllOf = Timelock DijkstraEra -> Maybe (StrictSeq (Timelock DijkstraEra))
NativeScript DijkstraEra
-> Maybe (StrictSeq (NativeScript DijkstraEra))
forall {k} (era :: k).
Timelock era -> Maybe (StrictSeq (Timelock era))
getRequireAllOfTimelock

  mkRequireAnyOf :: StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
mkRequireAnyOf = StrictSeq (Timelock DijkstraEra) -> Timelock DijkstraEra
StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
forall era. Era era => StrictSeq (Timelock era) -> Timelock era
mkRequireAnyOfTimelock
  getRequireAnyOf :: NativeScript DijkstraEra
-> Maybe (StrictSeq (NativeScript DijkstraEra))
getRequireAnyOf = Timelock DijkstraEra -> Maybe (StrictSeq (Timelock DijkstraEra))
NativeScript DijkstraEra
-> Maybe (StrictSeq (NativeScript DijkstraEra))
forall {k} (era :: k).
Timelock era -> Maybe (StrictSeq (Timelock era))
getRequireAnyOfTimelock

  mkRequireMOf :: Int
-> StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
mkRequireMOf = Int -> StrictSeq (Timelock DijkstraEra) -> Timelock DijkstraEra
Int
-> StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
forall era.
Era era =>
Int -> StrictSeq (Timelock era) -> Timelock era
mkRequireMOfTimelock
  getRequireMOf :: NativeScript DijkstraEra
-> Maybe (Int, StrictSeq (NativeScript DijkstraEra))
getRequireMOf = Timelock DijkstraEra
-> Maybe (Int, StrictSeq (Timelock DijkstraEra))
NativeScript DijkstraEra
-> Maybe (Int, StrictSeq (NativeScript DijkstraEra))
forall {k} (era :: k).
Timelock era -> Maybe (Int, StrictSeq (Timelock era))
getRequireMOfTimelock

instance AllegraEraScript DijkstraEra where
  mkTimeStart :: SlotNo -> NativeScript DijkstraEra
mkTimeStart = SlotNo -> Timelock DijkstraEra
SlotNo -> NativeScript DijkstraEra
forall era. Era era => SlotNo -> Timelock era
mkTimeStartTimelock
  getTimeStart :: NativeScript DijkstraEra -> Maybe SlotNo
getTimeStart = Timelock DijkstraEra -> Maybe SlotNo
NativeScript DijkstraEra -> Maybe SlotNo
forall {k} (era :: k). Timelock era -> Maybe SlotNo
getTimeStartTimelock

  mkTimeExpire :: SlotNo -> NativeScript DijkstraEra
mkTimeExpire = SlotNo -> Timelock DijkstraEra
SlotNo -> NativeScript DijkstraEra
forall era. Era era => SlotNo -> Timelock era
mkTimeExpireTimelock
  getTimeExpire :: NativeScript DijkstraEra -> Maybe SlotNo
getTimeExpire = Timelock DijkstraEra -> Maybe SlotNo
NativeScript DijkstraEra -> Maybe SlotNo
forall {k} (era :: k). Timelock era -> Maybe SlotNo
getTimeExpireTimelock