{-# LANGUAGE DataKinds #-}

module Test.Gen.Cardano.Api.Experimental
  ( genScriptWitnessedTxCertificates
  , genScriptWitnessedTxIn
  , genScriptWitnessedTxMintValue
  , genScriptWitnessedTxProposals
  , genScriptWitnesssedTxVotingProcedures
  , genScriptWitnessedTxWithdrawals
  )
where

import Cardano.Api (TxIn)
import Cardano.Api.Experimental
import Cardano.Api.Experimental.AnyScriptWitness
import Cardano.Api.Experimental.Tx
import Cardano.Api.Ledger qualified as L

import Data.Map.Ordered.Strict qualified as OMap
import Data.Typeable

import Test.Gen.Cardano.Api.Typed (genExecutionUnits, genHashableScriptData, genTxIn)

import Hedgehog (Gen)
import Hedgehog.Gen qualified as Gen

genAnyWitness :: Gen (AnyWitness era)
genAnyWitness :: forall era. Gen (AnyWitness era)
genAnyWitness =
  [GenT Identity (AnyWitness era)] -> GenT Identity (AnyWitness era)
forall (m :: * -> *) a. (HasCallStack, MonadGen m) => [m a] -> m a
Gen.choice
    [ AnyWitness era -> GenT Identity (AnyWitness era)
forall a. a -> GenT Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return AnyWitness era
forall era. AnyWitness era
AnyKeyWitnessPlaceholder
    , SimpleScriptOrReferenceInput era -> AnyWitness era
forall era. SimpleScriptOrReferenceInput era -> AnyWitness era
AnySimpleScriptWitness (SimpleScriptOrReferenceInput era -> AnyWitness era)
-> GenT Identity (SimpleScriptOrReferenceInput era)
-> GenT Identity (AnyWitness era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> GenT Identity (SimpleScriptOrReferenceInput era)
forall era. Gen (SimpleScriptOrReferenceInput era)
genAnySimpleScriptWitness
    , [GenT Identity (AnyWitness era)] -> GenT Identity (AnyWitness era)
forall (m :: * -> *) a. (HasCallStack, MonadGen m) => [m a] -> m a
Gen.choice
        [ GenT Identity (AnyWitness era)
forall era. Gen (AnyWitness era)
genAnyPlutusScriptWitnessV1
        , GenT Identity (AnyWitness era)
forall era. Gen (AnyWitness era)
genAnyPlutusScriptWitnessV2
        , GenT Identity (AnyWitness era)
forall era. Gen (AnyWitness era)
genAnyPlutusScriptWitnessV3
        , GenT Identity (AnyWitness era)
forall era. Gen (AnyWitness era)
genAnyPlutusScriptWitnessV4
        ]
    ]

genAnyPlutusMintingScriptWitness
  :: Typeable lang => L.SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusMintingScriptWitness :: forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusMintingScriptWitness SLanguage lang
l =
  AnyPlutusScriptWitness lang 'MintingScript era -> AnyWitness era
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
AnyPlutusScriptWitness lang purpose era -> AnyWitness era
AnyPlutusScriptWitness (AnyPlutusScriptWitness lang 'MintingScript era -> AnyWitness era)
-> (PlutusScriptWitness lang 'MintingScript era
    -> AnyPlutusScriptWitness lang 'MintingScript era)
-> PlutusScriptWitness lang 'MintingScript era
-> AnyWitness era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PlutusScriptWitness lang 'MintingScript era
-> AnyPlutusScriptWitness lang 'MintingScript era
forall (lang :: Language) era.
Typeable lang =>
PlutusScriptWitness lang 'MintingScript era
-> AnyPlutusScriptWitness lang 'MintingScript era
AnyPlutusMintingScriptWitness (PlutusScriptWitness lang 'MintingScript era -> AnyWitness era)
-> GenT Identity (PlutusScriptWitness lang 'MintingScript era)
-> GenT Identity (AnyWitness era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> SLanguage lang
-> GenT Identity (PlutusScriptWitness lang 'MintingScript era)
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
SLanguage lang -> Gen (PlutusScriptWitness lang purpose era)
genPlutusScriptWitness SLanguage lang
l

genAnyPlutusWithdrawingScriptWitness
  :: Typeable lang => L.SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusWithdrawingScriptWitness :: forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusWithdrawingScriptWitness SLanguage lang
l =
  AnyPlutusScriptWitness lang 'WithdrawingScript era
-> AnyWitness era
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
AnyPlutusScriptWitness lang purpose era -> AnyWitness era
AnyPlutusScriptWitness (AnyPlutusScriptWitness lang 'WithdrawingScript era
 -> AnyWitness era)
-> (PlutusScriptWitness lang 'WithdrawingScript era
    -> AnyPlutusScriptWitness lang 'WithdrawingScript era)
-> PlutusScriptWitness lang 'WithdrawingScript era
-> AnyWitness era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PlutusScriptWitness lang 'WithdrawingScript era
-> AnyPlutusScriptWitness lang 'WithdrawingScript era
forall (lang :: Language) era.
Typeable lang =>
PlutusScriptWitness lang 'WithdrawingScript era
-> AnyPlutusScriptWitness lang 'WithdrawingScript era
AnyPlutusWithdrawingScriptWitness (PlutusScriptWitness lang 'WithdrawingScript era -> AnyWitness era)
-> GenT Identity (PlutusScriptWitness lang 'WithdrawingScript era)
-> GenT Identity (AnyWitness era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> SLanguage lang
-> GenT Identity (PlutusScriptWitness lang 'WithdrawingScript era)
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
SLanguage lang -> Gen (PlutusScriptWitness lang purpose era)
genPlutusScriptWitness SLanguage lang
l

genAnyPlutusCertifyingScriptWitness
  :: Typeable lang => L.SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusCertifyingScriptWitness :: forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusCertifyingScriptWitness SLanguage lang
l =
  AnyPlutusScriptWitness lang 'CertifyingScript era -> AnyWitness era
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
AnyPlutusScriptWitness lang purpose era -> AnyWitness era
AnyPlutusScriptWitness (AnyPlutusScriptWitness lang 'CertifyingScript era
 -> AnyWitness era)
-> (PlutusScriptWitness lang 'CertifyingScript era
    -> AnyPlutusScriptWitness lang 'CertifyingScript era)
-> PlutusScriptWitness lang 'CertifyingScript era
-> AnyWitness era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PlutusScriptWitness lang 'CertifyingScript era
-> AnyPlutusScriptWitness lang 'CertifyingScript era
forall (lang :: Language) era.
Typeable lang =>
PlutusScriptWitness lang 'CertifyingScript era
-> AnyPlutusScriptWitness lang 'CertifyingScript era
AnyPlutusCertifyingScriptWitness (PlutusScriptWitness lang 'CertifyingScript era -> AnyWitness era)
-> GenT Identity (PlutusScriptWitness lang 'CertifyingScript era)
-> GenT Identity (AnyWitness era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> SLanguage lang
-> GenT Identity (PlutusScriptWitness lang 'CertifyingScript era)
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
SLanguage lang -> Gen (PlutusScriptWitness lang purpose era)
genPlutusScriptWitness SLanguage lang
l

genAnyPlutusProposingScriptWitness
  :: Typeable lang => L.SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusProposingScriptWitness :: forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusProposingScriptWitness SLanguage lang
l =
  AnyPlutusScriptWitness lang 'ProposingScript era -> AnyWitness era
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
AnyPlutusScriptWitness lang purpose era -> AnyWitness era
AnyPlutusScriptWitness (AnyPlutusScriptWitness lang 'ProposingScript era
 -> AnyWitness era)
-> (PlutusScriptWitness lang 'ProposingScript era
    -> AnyPlutusScriptWitness lang 'ProposingScript era)
-> PlutusScriptWitness lang 'ProposingScript era
-> AnyWitness era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PlutusScriptWitness lang 'ProposingScript era
-> AnyPlutusScriptWitness lang 'ProposingScript era
forall (lang :: Language) era.
Typeable lang =>
PlutusScriptWitness lang 'ProposingScript era
-> AnyPlutusScriptWitness lang 'ProposingScript era
AnyPlutusProposingScriptWitness (PlutusScriptWitness lang 'ProposingScript era -> AnyWitness era)
-> GenT Identity (PlutusScriptWitness lang 'ProposingScript era)
-> GenT Identity (AnyWitness era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> SLanguage lang
-> GenT Identity (PlutusScriptWitness lang 'ProposingScript era)
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
SLanguage lang -> Gen (PlutusScriptWitness lang purpose era)
genPlutusScriptWitness SLanguage lang
l

genAnyPlutusVotingScriptWitness
  :: Typeable lang => L.SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusVotingScriptWitness :: forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusVotingScriptWitness SLanguage lang
l =
  AnyPlutusScriptWitness lang 'VotingScript era -> AnyWitness era
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
AnyPlutusScriptWitness lang purpose era -> AnyWitness era
AnyPlutusScriptWitness (AnyPlutusScriptWitness lang 'VotingScript era -> AnyWitness era)
-> (PlutusScriptWitness lang 'VotingScript era
    -> AnyPlutusScriptWitness lang 'VotingScript era)
-> PlutusScriptWitness lang 'VotingScript era
-> AnyWitness era
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PlutusScriptWitness lang 'VotingScript era
-> AnyPlutusScriptWitness lang 'VotingScript era
forall (lang :: Language) era.
Typeable lang =>
PlutusScriptWitness lang 'VotingScript era
-> AnyPlutusScriptWitness lang 'VotingScript era
AnyPlutusVotingScriptWitness (PlutusScriptWitness lang 'VotingScript era -> AnyWitness era)
-> GenT Identity (PlutusScriptWitness lang 'VotingScript era)
-> GenT Identity (AnyWitness era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> SLanguage lang
-> GenT Identity (PlutusScriptWitness lang 'VotingScript era)
forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
SLanguage lang -> Gen (PlutusScriptWitness lang purpose era)
genPlutusScriptWitness SLanguage lang
l

genAnyPlutusScriptWitness :: Typeable lang => L.SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusScriptWitness :: forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusScriptWitness SLanguage lang
l =
  [GenT Identity (AnyWitness era)] -> GenT Identity (AnyWitness era)
forall (m :: * -> *) a. (HasCallStack, MonadGen m) => [m a] -> m a
Gen.choice
    [ SLanguage lang -> GenT Identity (AnyWitness era)
forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusMintingScriptWitness SLanguage lang
l
    , SLanguage lang -> GenT Identity (AnyWitness era)
forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusWithdrawingScriptWitness SLanguage lang
l
    , SLanguage lang -> GenT Identity (AnyWitness era)
forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusCertifyingScriptWitness SLanguage lang
l
    , SLanguage lang -> GenT Identity (AnyWitness era)
forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusProposingScriptWitness SLanguage lang
l
    , SLanguage lang -> GenT Identity (AnyWitness era)
forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusVotingScriptWitness SLanguage lang
l
    ]

genAnyPlutusScriptWitnessV1 :: Gen (AnyWitness era)
genAnyPlutusScriptWitnessV1 :: forall era. Gen (AnyWitness era)
genAnyPlutusScriptWitnessV1 =
  SLanguage 'PlutusV1 -> Gen (AnyWitness era)
forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusScriptWitness SLanguage 'PlutusV1
L.SPlutusV1

genAnyPlutusScriptWitnessV2 :: Gen (AnyWitness era)
genAnyPlutusScriptWitnessV2 :: forall era. Gen (AnyWitness era)
genAnyPlutusScriptWitnessV2 =
  SLanguage 'PlutusV2 -> Gen (AnyWitness era)
forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusScriptWitness SLanguage 'PlutusV2
L.SPlutusV2

genAnyPlutusScriptWitnessV3 :: Gen (AnyWitness era)
genAnyPlutusScriptWitnessV3 :: forall era. Gen (AnyWitness era)
genAnyPlutusScriptWitnessV3 =
  SLanguage 'PlutusV3 -> Gen (AnyWitness era)
forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusScriptWitness SLanguage 'PlutusV3
L.SPlutusV3

genAnyPlutusScriptWitnessV4 :: Gen (AnyWitness era)
genAnyPlutusScriptWitnessV4 :: forall era. Gen (AnyWitness era)
genAnyPlutusScriptWitnessV4 =
  SLanguage 'PlutusV4 -> Gen (AnyWitness era)
forall (lang :: Language) era.
Typeable lang =>
SLanguage lang -> Gen (AnyWitness era)
genAnyPlutusScriptWitness SLanguage 'PlutusV4
L.SPlutusV4

genAnySimpleScriptWitness :: Gen (SimpleScriptOrReferenceInput era)
genAnySimpleScriptWitness :: forall era. Gen (SimpleScriptOrReferenceInput era)
genAnySimpleScriptWitness = TxIn -> SimpleScriptOrReferenceInput era
forall era. TxIn -> SimpleScriptOrReferenceInput era
SReferenceScript (TxIn -> SimpleScriptOrReferenceInput era)
-> GenT Identity TxIn
-> GenT Identity (SimpleScriptOrReferenceInput era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> GenT Identity TxIn
genTxIn

-- TODO: <|> (SScript <$> genSimpleScriptWitness)

genPlutusScriptWitness :: L.SLanguage lang -> Gen (PlutusScriptWitness lang purpose era)
genPlutusScriptWitness :: forall (lang :: Language) (purpose :: PlutusScriptPurpose) era.
SLanguage lang -> Gen (PlutusScriptWitness lang purpose era)
genPlutusScriptWitness SLanguage lang
l =
  SLanguage lang
-> PlutusScriptOrReferenceInput lang era
-> PlutusScriptDatum lang purpose
-> ScriptRedeemer
-> ExecutionUnits
-> PlutusScriptWitness lang purpose era
forall (lang :: Language) era (purpose :: PlutusScriptPurpose).
SLanguage lang
-> PlutusScriptOrReferenceInput lang era
-> PlutusScriptDatum lang purpose
-> ScriptRedeemer
-> ExecutionUnits
-> PlutusScriptWitness lang purpose era
PlutusScriptWitness SLanguage lang
l
    (PlutusScriptOrReferenceInput lang era
 -> PlutusScriptDatum lang purpose
 -> ScriptRedeemer
 -> ExecutionUnits
 -> PlutusScriptWitness lang purpose era)
-> GenT Identity (PlutusScriptOrReferenceInput lang era)
-> GenT
     Identity
     (PlutusScriptDatum lang purpose
      -> ScriptRedeemer
      -> ExecutionUnits
      -> PlutusScriptWitness lang purpose era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> GenT Identity (PlutusScriptOrReferenceInput lang era)
forall (era :: Language) lang.
Gen (PlutusScriptOrReferenceInput era lang)
genPlutusScript
    GenT
  Identity
  (PlutusScriptDatum lang purpose
   -> ScriptRedeemer
   -> ExecutionUnits
   -> PlutusScriptWitness lang purpose era)
-> GenT Identity (PlutusScriptDatum lang purpose)
-> GenT
     Identity
     (ScriptRedeemer
      -> ExecutionUnits -> PlutusScriptWitness lang purpose era)
forall a b.
GenT Identity (a -> b) -> GenT Identity a -> GenT Identity b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> GenT Identity (PlutusScriptDatum lang purpose)
forall (lang :: Language) (purpose :: PlutusScriptPurpose).
Gen (PlutusScriptDatum lang purpose)
genMaybeDatum
    GenT
  Identity
  (ScriptRedeemer
   -> ExecutionUnits -> PlutusScriptWitness lang purpose era)
-> GenT Identity ScriptRedeemer
-> GenT
     Identity (ExecutionUnits -> PlutusScriptWitness lang purpose era)
forall a b.
GenT Identity (a -> b) -> GenT Identity a -> GenT Identity b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> GenT Identity ScriptRedeemer
HasCallStack => GenT Identity ScriptRedeemer
genHashableScriptData
    GenT
  Identity (ExecutionUnits -> PlutusScriptWitness lang purpose era)
-> GenT Identity ExecutionUnits
-> GenT Identity (PlutusScriptWitness lang purpose era)
forall a b.
GenT Identity (a -> b) -> GenT Identity a -> GenT Identity b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> GenT Identity ExecutionUnits
genExecutionUnits

genPlutusScript :: Gen (PlutusScriptOrReferenceInput era lang)
genPlutusScript :: forall (era :: Language) lang.
Gen (PlutusScriptOrReferenceInput era lang)
genPlutusScript = TxIn -> PlutusScriptOrReferenceInput era lang
forall (lang :: Language) era.
TxIn -> PlutusScriptOrReferenceInput lang era
PReferenceScript (TxIn -> PlutusScriptOrReferenceInput era lang)
-> GenT Identity TxIn
-> GenT Identity (PlutusScriptOrReferenceInput era lang)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> GenT Identity TxIn
genTxIn

genMaybeDatum :: Gen (PlutusScriptDatum lang purpose)
genMaybeDatum :: forall (lang :: Language) (purpose :: PlutusScriptPurpose).
Gen (PlutusScriptDatum lang purpose)
genMaybeDatum = PlutusScriptDatum lang purpose
-> GenT Identity (PlutusScriptDatum lang purpose)
forall a. a -> GenT Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return PlutusScriptDatum lang purpose
forall (lang :: Language) (purpose :: PlutusScriptPurpose).
PlutusScriptDatum lang purpose
NoScriptDatum -- TODO: Write proper generator

genScriptWitnessedTxIn :: Gen (TxIn, AnyWitness era)
genScriptWitnessedTxIn :: forall era. Gen (TxIn, AnyWitness era)
genScriptWitnessedTxIn = do
  (,) (TxIn -> AnyWitness era -> (TxIn, AnyWitness era))
-> GenT Identity TxIn
-> GenT Identity (AnyWitness era -> (TxIn, AnyWitness era))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> GenT Identity TxIn
genTxIn GenT Identity (AnyWitness era -> (TxIn, AnyWitness era))
-> GenT Identity (AnyWitness era)
-> GenT Identity (TxIn, AnyWitness era)
forall a b.
GenT Identity (a -> b) -> GenT Identity a -> GenT Identity b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> GenT Identity (AnyWitness era)
forall era. Gen (AnyWitness era)
genAnyWitness

genScriptWitnessedTxMintValue :: Gen (TxMintValue era)
genScriptWitnessedTxMintValue :: forall era. Gen (TxMintValue era)
genScriptWitnessedTxMintValue = TxMintValue era -> GenT Identity (TxMintValue era)
forall a. a -> GenT Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (TxMintValue era -> GenT Identity (TxMintValue era))
-> TxMintValue era -> GenT Identity (TxMintValue era)
forall a b. (a -> b) -> a -> b
$ Map PolicyId (PolicyAssets, AnyWitness era) -> TxMintValue era
forall era.
Map PolicyId (PolicyAssets, AnyWitness era) -> TxMintValue era
TxMintValue Map PolicyId (PolicyAssets, AnyWitness era)
forall a. Monoid a => a
mempty

genScriptWitnessedTxCertificates :: Gen (TxCertificates era)
genScriptWitnessedTxCertificates :: forall era. Gen (TxCertificates era)
genScriptWitnessedTxCertificates = TxCertificates era -> GenT Identity (TxCertificates era)
forall a. a -> GenT Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (TxCertificates era -> GenT Identity (TxCertificates era))
-> TxCertificates era -> GenT Identity (TxCertificates era)
forall a b. (a -> b) -> a -> b
$ OMap (Certificate era) (Maybe (StakeCredential, AnyWitness era))
-> TxCertificates era
forall era.
OMap (Certificate era) (Maybe (StakeCredential, AnyWitness era))
-> TxCertificates era
TxCertificates OMap (Certificate era) (Maybe (StakeCredential, AnyWitness era))
forall k v. OMap k v
OMap.empty

genScriptWitnessedTxWithdrawals :: Gen (TxWithdrawals era)
genScriptWitnessedTxWithdrawals :: forall era. Gen (TxWithdrawals era)
genScriptWitnessedTxWithdrawals = TxWithdrawals era -> GenT Identity (TxWithdrawals era)
forall a. a -> GenT Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (TxWithdrawals era -> GenT Identity (TxWithdrawals era))
-> TxWithdrawals era -> GenT Identity (TxWithdrawals era)
forall a b. (a -> b) -> a -> b
$ [(StakeAddress, Coin, AnyWitness era)] -> TxWithdrawals era
forall era.
[(StakeAddress, Coin, AnyWitness era)] -> TxWithdrawals era
TxWithdrawals [(StakeAddress, Coin, AnyWitness era)]
forall a. Monoid a => a
mempty

genScriptWitnesssedTxVotingProcedures :: Gen (TxVotingProcedures era)
genScriptWitnesssedTxVotingProcedures :: forall era. Gen (TxVotingProcedures era)
genScriptWitnesssedTxVotingProcedures = TxVotingProcedures era -> GenT Identity (TxVotingProcedures era)
forall a. a -> GenT Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (TxVotingProcedures era -> GenT Identity (TxVotingProcedures era))
-> TxVotingProcedures era -> GenT Identity (TxVotingProcedures era)
forall a b. (a -> b) -> a -> b
$ VotingProcedures era
-> Map Voter (AnyWitness era) -> TxVotingProcedures era
forall era.
VotingProcedures era
-> Map Voter (AnyWitness era) -> TxVotingProcedures era
TxVotingProcedures (Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
forall era.
Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
L.VotingProcedures Map Voter (Map GovActionId (VotingProcedure era))
forall a. Monoid a => a
mempty) Map Voter (AnyWitness era)
forall a. Monoid a => a
mempty

genScriptWitnessedTxProposals :: Gen (TxProposalProcedures era)
genScriptWitnessedTxProposals :: forall era. Gen (TxProposalProcedures era)
genScriptWitnessedTxProposals = TxProposalProcedures era
-> GenT Identity (TxProposalProcedures era)
forall a. a -> GenT Identity a
forall (m :: * -> *) a. Monad m => a -> m a
return (TxProposalProcedures era
 -> GenT Identity (TxProposalProcedures era))
-> TxProposalProcedures era
-> GenT Identity (TxProposalProcedures era)
forall a b. (a -> b) -> a -> b
$ OMap (ProposalProcedure era) (AnyWitness era)
-> TxProposalProcedures era
forall era.
OMap (ProposalProcedure era) (AnyWitness era)
-> TxProposalProcedures era
TxProposalProcedures OMap (ProposalProcedure era) (AnyWitness era)
forall k v. OMap k v
OMap.empty