{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE QuantifiedConstraints #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Test.Cardano.Ledger.Dijkstra.Arbitrary () where

import Cardano.Ledger.Allegra.Scripts (
  pattern RequireTimeExpire,
  pattern RequireTimeStart,
 )
import Cardano.Ledger.BaseTypes (PerasCert (..), StrictMaybe)
import Cardano.Ledger.Dijkstra (DijkstraEra)
import Cardano.Ledger.Dijkstra.Core
import Cardano.Ledger.Dijkstra.Genesis (DijkstraGenesis (..))
import Cardano.Ledger.Dijkstra.PParams (DijkstraPParams, UpgradeDijkstraPParams)
import Cardano.Ledger.Dijkstra.Rules
import Cardano.Ledger.Dijkstra.Scripts
import Cardano.Ledger.Dijkstra.Transition (TransitionConfig (..))
import Cardano.Ledger.Dijkstra.Tx (DijkstraTx (..), Tx (..))
import Cardano.Ledger.Dijkstra.TxBody (TxBody (..))
import Cardano.Ledger.Dijkstra.TxCert
import Cardano.Ledger.Dijkstra.TxInfo (DijkstraContextError)
import Cardano.Ledger.Shelley.Scripts (
  pattern RequireSignature,
 )
import Control.State.Transition (
  STS (..),
 )
import Data.Functor.Identity (Identity)
import qualified Data.OMap.Strict as OMap
import Data.Typeable (Typeable)
import Generic.Random (genericArbitraryU)
import Test.Cardano.Ledger.Allegra.Arbitrary (maxTimelockDepth)
import Test.Cardano.Ledger.Common
import Test.Cardano.Ledger.Conway.Arbitrary ()
import Test.Cardano.Ledger.Shelley.Arbitrary (sizedNativeScriptGens)

instance Arbitrary (DijkstraPParams Identity DijkstraEra) where
  arbitrary :: Gen (DijkstraPParams Identity DijkstraEra)
arbitrary = Gen (DijkstraPParams Identity DijkstraEra)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance Arbitrary (DijkstraPParams StrictMaybe DijkstraEra) where
  arbitrary :: Gen (DijkstraPParams StrictMaybe DijkstraEra)
arbitrary = Gen (DijkstraPParams StrictMaybe DijkstraEra)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance Arbitrary (TxBody SubTx DijkstraEra) where
  arbitrary :: Gen (TxBody SubTx DijkstraEra)
arbitrary =
    (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra),
 DecCBOR (Annotator (Tx SubTx DijkstraEra)),
 HasOKey TxId (Tx SubTx DijkstraEra)) =>
Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut DijkstraEra))
-> OSet (TxCert DijkstraEra)
-> Withdrawals
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
-> TxBody SubTx DijkstraEra
Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut DijkstraEra))
-> OSet (TxCert DijkstraEra)
-> Withdrawals
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
-> TxBody SubTx DijkstraEra
Set TxIn
-> Set TxIn
-> StrictSeq (Sized (BabbageTxOut DijkstraEra))
-> OSet (DijkstraTxCert DijkstraEra)
-> Withdrawals
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
-> TxBody SubTx DijkstraEra
DijkstraSubTxBody
      (Set TxIn
 -> Set TxIn
 -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
 -> OSet (DijkstraTxCert DijkstraEra)
 -> Withdrawals
 -> ValidityInterval
 -> OSet (Credential Guard)
 -> MultiAsset
 -> StrictMaybe ScriptIntegrityHash
 -> StrictMaybe TxAuxDataHash
 -> StrictMaybe Network
 -> VotingProcedures DijkstraEra
 -> OSet (ProposalProcedure DijkstraEra)
 -> StrictMaybe Coin
 -> Coin
 -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
 -> TxBody SubTx DijkstraEra)
-> Gen (Set TxIn)
-> Gen
     (Set TxIn
      -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
      -> OSet (DijkstraTxCert DijkstraEra)
      -> Withdrawals
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Set TxIn)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Set TxIn
   -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
   -> OSet (DijkstraTxCert DijkstraEra)
   -> Withdrawals
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (Set TxIn)
-> Gen
     (StrictSeq (Sized (BabbageTxOut DijkstraEra))
      -> OSet (DijkstraTxCert DijkstraEra)
      -> Withdrawals
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Set TxIn)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictSeq (Sized (BabbageTxOut DijkstraEra))
   -> OSet (DijkstraTxCert DijkstraEra)
   -> Withdrawals
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
-> Gen
     (OSet (DijkstraTxCert DijkstraEra)
      -> Withdrawals
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OSet (DijkstraTxCert DijkstraEra)
   -> Withdrawals
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (OSet (DijkstraTxCert DijkstraEra))
-> Gen
     (Withdrawals
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (OSet (DijkstraTxCert DijkstraEra))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Withdrawals
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen Withdrawals
-> Gen
     (ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Withdrawals
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen ValidityInterval
-> Gen
     (OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Int -> Int) -> Gen ValidityInterval -> Gen ValidityInterval
forall a. (Int -> Int) -> Gen a -> Gen a
scale (Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
15) Gen ValidityInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (OSet (Credential Guard))
-> Gen
     (MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (OSet (Credential Guard))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen MultiAsset
-> Gen
     (StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Int -> Int) -> Gen MultiAsset -> Gen MultiAsset
forall a. (Int -> Int) -> Gen a -> Gen a
scale (Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
15) Gen MultiAsset
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (StrictMaybe ScriptIntegrityHash)
-> Gen
     (StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe ScriptIntegrityHash)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (StrictMaybe TxAuxDataHash)
-> Gen
     (StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe TxAuxDataHash)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (StrictMaybe Network)
-> Gen
     (VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Network)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (VotingProcedures DijkstraEra)
-> Gen
     (OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (VotingProcedures DijkstraEra)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (OSet (ProposalProcedure DijkstraEra))
-> Gen
     (StrictMaybe Coin
      -> Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (OSet (ProposalProcedure DijkstraEra))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (StrictMaybe Coin)
-> Gen
     (Coin
      -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen Coin
-> Gen
     (Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
      -> TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
   -> TxBody SubTx DijkstraEra)
-> Gen (Map (Credential Guard) (StrictMaybe (Data DijkstraEra)))
-> Gen (TxBody SubTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Map (Credential Guard) (StrictMaybe (Data DijkstraEra)))
forall a. Arbitrary a => Gen a
arbitrary

instance Arbitrary (TxBody TopTx DijkstraEra) where
  arbitrary :: Gen (TxBody TopTx DijkstraEra)
arbitrary =
    (EncCBOR (Tx SubTx DijkstraEra), Eq (Tx SubTx DijkstraEra),
 NFData (Tx SubTx DijkstraEra), Show (Tx SubTx DijkstraEra),
 DecCBOR (Annotator (Tx SubTx DijkstraEra)),
 HasOKey TxId (Tx SubTx DijkstraEra)) =>
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut DijkstraEra))
-> StrictMaybe (Sized (TxOut DijkstraEra))
-> StrictMaybe Coin
-> OSet (TxCert DijkstraEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> OMap TxId (Tx SubTx DijkstraEra)
-> TxBody TopTx DijkstraEra
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut DijkstraEra))
-> StrictMaybe (Sized (TxOut DijkstraEra))
-> StrictMaybe Coin
-> OSet (TxCert DijkstraEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> OMap TxId (Tx SubTx DijkstraEra)
-> TxBody TopTx DijkstraEra
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (BabbageTxOut DijkstraEra))
-> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
-> StrictMaybe Coin
-> OSet (DijkstraTxCert DijkstraEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> OSet (Credential Guard)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> OMap TxId (Tx SubTx DijkstraEra)
-> TxBody TopTx DijkstraEra
DijkstraTxBody
      (Set TxIn
 -> Set TxIn
 -> Set TxIn
 -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
 -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
 -> StrictMaybe Coin
 -> OSet (DijkstraTxCert DijkstraEra)
 -> Withdrawals
 -> Coin
 -> ValidityInterval
 -> OSet (Credential Guard)
 -> MultiAsset
 -> StrictMaybe ScriptIntegrityHash
 -> StrictMaybe TxAuxDataHash
 -> StrictMaybe Network
 -> VotingProcedures DijkstraEra
 -> OSet (ProposalProcedure DijkstraEra)
 -> StrictMaybe Coin
 -> Coin
 -> OMap TxId (Tx SubTx DijkstraEra)
 -> TxBody TopTx DijkstraEra)
-> Gen (Set TxIn)
-> Gen
     (Set TxIn
      -> Set TxIn
      -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe Coin
      -> OSet (DijkstraTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Set TxIn)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Set TxIn
   -> Set TxIn
   -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
   -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
   -> StrictMaybe Coin
   -> OSet (DijkstraTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (Set TxIn)
-> Gen
     (Set TxIn
      -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe Coin
      -> OSet (DijkstraTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Set TxIn)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Set TxIn
   -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
   -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
   -> StrictMaybe Coin
   -> OSet (DijkstraTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (Set TxIn)
-> Gen
     (StrictSeq (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe Coin
      -> OSet (DijkstraTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (Set TxIn)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictSeq (Sized (BabbageTxOut DijkstraEra))
   -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
   -> StrictMaybe Coin
   -> OSet (DijkstraTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
-> Gen
     (StrictMaybe (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe Coin
      -> OSet (DijkstraTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe (Sized (BabbageTxOut DijkstraEra))
   -> StrictMaybe Coin
   -> OSet (DijkstraTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (StrictMaybe (Sized (BabbageTxOut DijkstraEra)))
-> Gen
     (StrictMaybe Coin
      -> OSet (DijkstraTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe (Sized (BabbageTxOut DijkstraEra)))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> OSet (DijkstraTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (StrictMaybe Coin)
-> Gen
     (OSet (DijkstraTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OSet (DijkstraTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (OSet (DijkstraTxCert DijkstraEra))
-> Gen
     (Withdrawals
      -> Coin
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (OSet (DijkstraTxCert DijkstraEra))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Withdrawals
   -> Coin
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen Withdrawals
-> Gen
     (Coin
      -> ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Withdrawals
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen Coin
-> Gen
     (ValidityInterval
      -> OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (ValidityInterval
   -> OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen ValidityInterval
-> Gen
     (OSet (Credential Guard)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Int -> Int) -> Gen ValidityInterval -> Gen ValidityInterval
forall a. (Int -> Int) -> Gen a -> Gen a
scale (Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
15) Gen ValidityInterval
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OSet (Credential Guard)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (OSet (Credential Guard))
-> Gen
     (MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (OSet (Credential Guard))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen MultiAsset
-> Gen
     (StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Int -> Int) -> Gen MultiAsset -> Gen MultiAsset
forall a. (Int -> Int) -> Gen a -> Gen a
scale (Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
15) Gen MultiAsset
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (StrictMaybe ScriptIntegrityHash)
-> Gen
     (StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe ScriptIntegrityHash)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (StrictMaybe TxAuxDataHash)
-> Gen
     (StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe TxAuxDataHash)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (StrictMaybe Network)
-> Gen
     (VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Network)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (VotingProcedures DijkstraEra)
-> Gen
     (OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (VotingProcedures DijkstraEra)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (OSet (ProposalProcedure DijkstraEra))
-> Gen
     (StrictMaybe Coin
      -> Coin
      -> OMap TxId (Tx SubTx DijkstraEra)
      -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (OSet (ProposalProcedure DijkstraEra))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (StrictMaybe Coin
   -> Coin
   -> OMap TxId (Tx SubTx DijkstraEra)
   -> TxBody TopTx DijkstraEra)
-> Gen (StrictMaybe Coin)
-> Gen
     (Coin
      -> OMap TxId (Tx SubTx DijkstraEra) -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe Coin)
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Coin
   -> OMap TxId (Tx SubTx DijkstraEra) -> TxBody TopTx DijkstraEra)
-> Gen Coin
-> Gen
     (OMap TxId (Tx SubTx DijkstraEra) -> TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary
      Gen (OMap TxId (Tx SubTx DijkstraEra) -> TxBody TopTx DijkstraEra)
-> Gen (OMap TxId (Tx SubTx DijkstraEra))
-> Gen (TxBody TopTx DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ((Int, Int) -> Gen Int
forall a. Random a => (a, a) -> Gen a
choose (Int
0, Int
4) Gen Int
-> (Int -> Gen (OMap TxId (Tx SubTx DijkstraEra)))
-> Gen (OMap TxId (Tx SubTx DijkstraEra))
forall a b. Gen a -> (a -> Gen b) -> Gen b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Int
n -> [Tx SubTx DijkstraEra] -> OMap TxId (Tx SubTx DijkstraEra)
forall (f :: * -> *) k v.
(Foldable f, HasOKey k v) =>
f v -> OMap k v
OMap.fromFoldable ([Tx SubTx DijkstraEra] -> OMap TxId (Tx SubTx DijkstraEra))
-> Gen [Tx SubTx DijkstraEra]
-> Gen (OMap TxId (Tx SubTx DijkstraEra))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Int -> Gen (Tx SubTx DijkstraEra) -> Gen [Tx SubTx DijkstraEra]
forall a. Int -> Gen a -> Gen [a]
vectorOf Int
n Gen (Tx SubTx DijkstraEra)
forall a. Arbitrary a => Gen a
arbitrary)

instance Arbitrary (UpgradeDijkstraPParams Identity DijkstraEra) where
  arbitrary :: Gen (UpgradeDijkstraPParams Identity DijkstraEra)
arbitrary = Gen (UpgradeDijkstraPParams Identity DijkstraEra)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance Arbitrary DijkstraGenesis where
  arbitrary :: Gen DijkstraGenesis
arbitrary = Gen DijkstraGenesis
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance Arbitrary (TransitionConfig DijkstraEra) where
  arbitrary :: Gen (TransitionConfig DijkstraEra)
arbitrary = DijkstraGenesis
-> TransitionConfig ConwayEra -> TransitionConfig DijkstraEra
DijkstraTransitionConfig (DijkstraGenesis
 -> TransitionConfig ConwayEra -> TransitionConfig DijkstraEra)
-> Gen DijkstraGenesis
-> Gen (TransitionConfig ConwayEra -> TransitionConfig DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen DijkstraGenesis
forall a. Arbitrary a => Gen a
arbitrary Gen (TransitionConfig ConwayEra -> TransitionConfig DijkstraEra)
-> Gen (TransitionConfig ConwayEra)
-> Gen (TransitionConfig DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (TransitionConfig ConwayEra)
forall a. Arbitrary a => Gen a
arbitrary

instance
  (forall a b. (Arbitrary a, Arbitrary b) => Arbitrary (f a b)) =>
  Arbitrary (DijkstraPlutusPurpose f DijkstraEra)
  where
  arbitrary :: Gen (DijkstraPlutusPurpose f DijkstraEra)
arbitrary = Gen (DijkstraPlutusPurpose f DijkstraEra)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance Arbitrary (DijkstraNativeScript DijkstraEra) where
  arbitrary :: Gen (DijkstraNativeScript DijkstraEra)
arbitrary = Int -> Gen (NativeScript DijkstraEra)
forall era. DijkstraEraScript era => Int -> Gen (NativeScript era)
sizedDijkstraNativeScript Int
maxTimelockDepth

sizedDijkstraNativeScript ::
  DijkstraEraScript era =>
  Int ->
  Gen (NativeScript era)
sizedDijkstraNativeScript :: forall era. DijkstraEraScript era => Int -> Gen (NativeScript era)
sizedDijkstraNativeScript Int
0 = KeyHash Witness -> NativeScript era
forall era.
ShelleyEraScript era =>
KeyHash Witness -> NativeScript era
RequireSignature (KeyHash Witness -> NativeScript era)
-> Gen (KeyHash Witness) -> Gen (NativeScript era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (KeyHash Witness)
forall a. Arbitrary a => Gen a
arbitrary
sizedDijkstraNativeScript Int
n =
  [Gen (NativeScript era)] -> Gen (NativeScript era)
forall a. HasCallStack => [Gen a] -> Gen a
oneof ([Gen (NativeScript era)] -> Gen (NativeScript era))
-> [Gen (NativeScript era)] -> Gen (NativeScript era)
forall a b. (a -> b) -> a -> b
$
    Int -> [Gen (NativeScript era)]
forall era. ShelleyEraScript era => Int -> [Gen (NativeScript era)]
sizedNativeScriptGens Int
n
      [Gen (NativeScript era)]
-> [Gen (NativeScript era)] -> [Gen (NativeScript era)]
forall a. Semigroup a => a -> a -> a
<> [ SlotNo -> NativeScript era
forall era. AllegraEraScript era => SlotNo -> NativeScript era
RequireTimeStart (SlotNo -> NativeScript era)
-> Gen SlotNo -> Gen (NativeScript era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen SlotNo
forall a. Arbitrary a => Gen a
arbitrary
         , SlotNo -> NativeScript era
forall era. AllegraEraScript era => SlotNo -> NativeScript era
RequireTimeExpire (SlotNo -> NativeScript era)
-> Gen SlotNo -> Gen (NativeScript era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen SlotNo
forall a. Arbitrary a => Gen a
arbitrary
         , Credential Guard -> NativeScript era
forall era.
DijkstraEraScript era =>
Credential Guard -> NativeScript era
RequireGuard (Credential Guard -> NativeScript era)
-> Gen (Credential Guard) -> Gen (NativeScript era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential Guard)
forall a. Arbitrary a => Gen a
arbitrary
         ]

instance (Arbitrary (TxBody l DijkstraEra), Typeable l) => Arbitrary (Tx l DijkstraEra) where
  arbitrary :: Gen (Tx l DijkstraEra)
arbitrary =
    (DijkstraTx l DijkstraEra -> Tx l DijkstraEra)
-> Gen (DijkstraTx l DijkstraEra) -> Gen (Tx l DijkstraEra)
forall a b. (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DijkstraTx l DijkstraEra -> Tx l DijkstraEra
forall (l :: TxLevel). DijkstraTx l DijkstraEra -> Tx l DijkstraEra
MkDijkstraTx (Gen (DijkstraTx l DijkstraEra) -> Gen (Tx l DijkstraEra))
-> ((STxBothLevels l (ZonkAny 0) -> Gen (DijkstraTx l DijkstraEra))
    -> Gen (DijkstraTx l DijkstraEra))
-> (STxBothLevels l (ZonkAny 0) -> Gen (DijkstraTx l DijkstraEra))
-> Gen (Tx l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (l :: TxLevel) era a.
(Typeable l, HasCallStack) =>
(STxBothLevels l era -> a) -> a
withSTxBothLevels @l ((STxBothLevels l (ZonkAny 0) -> Gen (DijkstraTx l DijkstraEra))
 -> Gen (Tx l DijkstraEra))
-> (STxBothLevels l (ZonkAny 0) -> Gen (DijkstraTx l DijkstraEra))
-> Gen (Tx l DijkstraEra)
forall a b. (a -> b) -> a -> b
$ \case
      STxBothLevels l (ZonkAny 0)
STopTx -> TxBody TopTx DijkstraEra
-> TxWits DijkstraEra
-> IsValid
-> StrictMaybe (TxAuxData DijkstraEra)
-> DijkstraTx TopTx DijkstraEra
TxBody TopTx DijkstraEra
-> AlonzoTxWits DijkstraEra
-> IsValid
-> StrictMaybe (AlonzoTxAuxData DijkstraEra)
-> DijkstraTx l DijkstraEra
forall era.
TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx TopTx era
DijkstraTx (TxBody TopTx DijkstraEra
 -> AlonzoTxWits DijkstraEra
 -> IsValid
 -> StrictMaybe (AlonzoTxAuxData DijkstraEra)
 -> DijkstraTx l DijkstraEra)
-> Gen (TxBody TopTx DijkstraEra)
-> Gen
     (AlonzoTxWits DijkstraEra
      -> IsValid
      -> StrictMaybe (AlonzoTxAuxData DijkstraEra)
      -> DijkstraTx l DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (TxBody TopTx DijkstraEra)
forall a. Arbitrary a => Gen a
arbitrary Gen
  (AlonzoTxWits DijkstraEra
   -> IsValid
   -> StrictMaybe (AlonzoTxAuxData DijkstraEra)
   -> DijkstraTx l DijkstraEra)
-> Gen (AlonzoTxWits DijkstraEra)
-> Gen
     (IsValid
      -> StrictMaybe (AlonzoTxAuxData DijkstraEra)
      -> DijkstraTx l DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (AlonzoTxWits DijkstraEra)
forall a. Arbitrary a => Gen a
arbitrary Gen
  (IsValid
   -> StrictMaybe (AlonzoTxAuxData DijkstraEra)
   -> DijkstraTx l DijkstraEra)
-> Gen IsValid
-> Gen
     (StrictMaybe (AlonzoTxAuxData DijkstraEra)
      -> DijkstraTx l DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen IsValid
forall a. Arbitrary a => Gen a
arbitrary Gen
  (StrictMaybe (AlonzoTxAuxData DijkstraEra)
   -> DijkstraTx l DijkstraEra)
-> Gen (StrictMaybe (AlonzoTxAuxData DijkstraEra))
-> Gen (DijkstraTx l DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe (AlonzoTxAuxData DijkstraEra))
forall a. Arbitrary a => Gen a
arbitrary
      STxBothLevels l (ZonkAny 0)
SSubTx -> TxBody SubTx DijkstraEra
-> TxWits DijkstraEra
-> StrictMaybe (TxAuxData DijkstraEra)
-> DijkstraTx SubTx DijkstraEra
TxBody SubTx DijkstraEra
-> AlonzoTxWits DijkstraEra
-> StrictMaybe (AlonzoTxAuxData DijkstraEra)
-> DijkstraTx l DijkstraEra
forall era.
TxBody SubTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> DijkstraTx SubTx era
DijkstraSubTx (TxBody SubTx DijkstraEra
 -> AlonzoTxWits DijkstraEra
 -> StrictMaybe (AlonzoTxAuxData DijkstraEra)
 -> DijkstraTx l DijkstraEra)
-> Gen (TxBody SubTx DijkstraEra)
-> Gen
     (AlonzoTxWits DijkstraEra
      -> StrictMaybe (AlonzoTxAuxData DijkstraEra)
      -> DijkstraTx l DijkstraEra)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (TxBody SubTx DijkstraEra)
forall a. Arbitrary a => Gen a
arbitrary Gen
  (AlonzoTxWits DijkstraEra
   -> StrictMaybe (AlonzoTxAuxData DijkstraEra)
   -> DijkstraTx l DijkstraEra)
-> Gen (AlonzoTxWits DijkstraEra)
-> Gen
     (StrictMaybe (AlonzoTxAuxData DijkstraEra)
      -> DijkstraTx l DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (AlonzoTxWits DijkstraEra)
forall a. Arbitrary a => Gen a
arbitrary Gen
  (StrictMaybe (AlonzoTxAuxData DijkstraEra)
   -> DijkstraTx l DijkstraEra)
-> Gen (StrictMaybe (AlonzoTxAuxData DijkstraEra))
-> Gen (DijkstraTx l DijkstraEra)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe (AlonzoTxAuxData DijkstraEra))
forall a. Arbitrary a => Gen a
arbitrary

instance Era era => Arbitrary (DijkstraTxCert era) where
  arbitrary :: Gen (DijkstraTxCert era)
arbitrary =
    [Gen (DijkstraTxCert era)] -> Gen (DijkstraTxCert era)
forall a. HasCallStack => [Gen a] -> Gen a
oneof
      [ DijkstraDelegCert -> DijkstraTxCert era
forall era. DijkstraDelegCert -> DijkstraTxCert era
DijkstraTxCertDeleg (DijkstraDelegCert -> DijkstraTxCert era)
-> Gen DijkstraDelegCert -> Gen (DijkstraTxCert era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen DijkstraDelegCert
forall a. Arbitrary a => Gen a
arbitrary
      , PoolCert -> DijkstraTxCert era
forall era. PoolCert -> DijkstraTxCert era
DijkstraTxCertPool (PoolCert -> DijkstraTxCert era)
-> Gen PoolCert -> Gen (DijkstraTxCert era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen PoolCert
forall a. Arbitrary a => Gen a
arbitrary
      , ConwayGovCert -> DijkstraTxCert era
forall era. ConwayGovCert -> DijkstraTxCert era
DijkstraTxCertGov (ConwayGovCert -> DijkstraTxCert era)
-> Gen ConwayGovCert -> Gen (DijkstraTxCert era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen ConwayGovCert
forall a. Arbitrary a => Gen a
arbitrary
      ]

instance Arbitrary DijkstraDelegCert where
  arbitrary :: Gen DijkstraDelegCert
arbitrary = Credential Staking -> Delegatee -> Coin -> DijkstraDelegCert
DijkstraRegDelegCert (Credential Staking -> Delegatee -> Coin -> DijkstraDelegCert)
-> Gen (Credential Staking)
-> Gen (Delegatee -> Coin -> DijkstraDelegCert)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (Credential Staking)
forall a. Arbitrary a => Gen a
arbitrary Gen (Delegatee -> Coin -> DijkstraDelegCert)
-> Gen Delegatee -> Gen (Coin -> DijkstraDelegCert)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Delegatee
forall a. Arbitrary a => Gen a
arbitrary Gen (Coin -> DijkstraDelegCert)
-> Gen Coin -> Gen DijkstraDelegCert
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Coin
forall a. Arbitrary a => Gen a
arbitrary

instance
  ( EraPParams era
  , Arbitrary (PlutusPurpose AsItem era)
  , Arbitrary (PlutusPurpose AsIx era)
  , Arbitrary (PParamsHKD Identity era)
  , Arbitrary (PParamsHKD StrictMaybe era)
  , Arbitrary (TxCert era)
  , Arbitrary (TxOut era)
  ) =>
  Arbitrary (DijkstraContextError era)
  where
  arbitrary :: Gen (DijkstraContextError era)
arbitrary = Gen (DijkstraContextError era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance
  ( Era era
  , Arbitrary (PredicateFailure (EraRule "LEDGERS" era))
  ) =>
  Arbitrary (DijkstraBbodyPredFailure era)
  where
  arbitrary :: Gen (DijkstraBbodyPredFailure era)
arbitrary = Gen (DijkstraBbodyPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance
  ( Era era
  , Arbitrary (PredicateFailure (EraRule "UTXOW" era))
  , Arbitrary (PredicateFailure (EraRule "CERTS" era))
  , Arbitrary (PredicateFailure (EraRule "GOV" era))
  ) =>
  Arbitrary (DijkstraLedgerPredFailure era)
  where
  arbitrary :: Gen (DijkstraLedgerPredFailure era)
arbitrary = Gen (DijkstraLedgerPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance
  ( EraTxOut era
  , Arbitrary (Value era)
  , Arbitrary (TxOut era)
  , Arbitrary (PredicateFailure (EraRule "UTXOS" era))
  ) =>
  Arbitrary (DijkstraUtxoPredFailure era)
  where
  arbitrary :: Gen (DijkstraUtxoPredFailure era)
arbitrary = Gen (DijkstraUtxoPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance
  ( Era era
  , Arbitrary (PredicateFailure (EraRule "UTXO" era))
  , Arbitrary (TxCert era)
  , Arbitrary (PlutusPurpose AsItem era)
  , Arbitrary (PlutusPurpose AsIx era)
  ) =>
  Arbitrary (DijkstraUtxowPredFailure era)
  where
  arbitrary :: Gen (DijkstraUtxowPredFailure era)
arbitrary = Gen (DijkstraUtxowPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance Era era => Arbitrary (DijkstraGovCertPredFailure era) where
  arbitrary :: Gen (DijkstraGovCertPredFailure era)
arbitrary = Gen (DijkstraGovCertPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance
  ( Era era
  , Arbitrary (PParamsHKD StrictMaybe era)
  ) =>
  Arbitrary (DijkstraGovPredFailure era)
  where
  arbitrary :: Gen (DijkstraGovPredFailure era)
arbitrary = Gen (DijkstraGovPredFailure era)
forall a. (GArbitrary UnsizedOpts a, GUniformWeight a) => Gen a
genericArbitraryU

instance Arbitrary PerasCert where
  arbitrary :: Gen PerasCert
arbitrary = PerasCert -> Gen PerasCert
forall a. a -> Gen a
forall (f :: * -> *) a. Applicative f => a -> f a
pure PerasCert
PerasCert

instance
  ( EraBlockBody era
  , AlonzoEraTx era
  , Arbitrary (Tx TopTx era)
  , SafeToHash (TxWits era)
  ) =>
  Arbitrary (DijkstraBlockBody era)
  where
  arbitrary :: Gen (DijkstraBlockBody era)
arbitrary = StrictSeq (Tx TopTx era)
-> StrictMaybe PerasCert -> DijkstraBlockBody era
forall era.
(AlonzoEraTx era, SafeToHash (TxWits era)) =>
StrictSeq (Tx TopTx era)
-> StrictMaybe PerasCert -> DijkstraBlockBody era
DijkstraBlockBody (StrictSeq (Tx TopTx era)
 -> StrictMaybe PerasCert -> DijkstraBlockBody era)
-> Gen (StrictSeq (Tx TopTx era))
-> Gen (StrictMaybe PerasCert -> DijkstraBlockBody era)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen (StrictSeq (Tx TopTx era))
forall a. Arbitrary a => Gen a
arbitrary Gen (StrictMaybe PerasCert -> DijkstraBlockBody era)
-> Gen (StrictMaybe PerasCert) -> Gen (DijkstraBlockBody era)
forall a b. Gen (a -> b) -> Gen a -> Gen b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen (StrictMaybe PerasCert)
forall a. Arbitrary a => Gen a
arbitrary