{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# OPTIONS_GHC -Wno-orphans #-}

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

import Cardano.Ledger.BaseTypes (StrictMaybe)
import Cardano.Ledger.Dijkstra (DijkstraEra)
import Cardano.Ledger.Dijkstra.Core (EraTx (..), EraTxBody (..))
import Cardano.Ledger.Dijkstra.Genesis (DijkstraGenesis (..))
import Cardano.Ledger.Dijkstra.PParams (DijkstraPParams, UpgradeDijkstraPParams)
import Cardano.Ledger.Dijkstra.Transition (TransitionConfig (..))
import Cardano.Ledger.Dijkstra.Tx (Tx (..))
import Cardano.Ledger.Dijkstra.TxBody (TxBody (..))
import Data.Functor.Identity (Identity)
import Generic.Random (genericArbitraryU)
import Test.Cardano.Ledger.Common (Arbitrary (..), scale)
import Test.Cardano.Ledger.Conway.Arbitrary ()

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 DijkstraEra) where
  arbitrary :: Gen (TxBody DijkstraEra)
arbitrary =
    Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (TxOut DijkstraEra))
-> StrictMaybe (Sized (TxOut DijkstraEra))
-> StrictMaybe Coin
-> OSet (TxCert DijkstraEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash 'Witness)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> TxBody DijkstraEra
Set TxIn
-> Set TxIn
-> Set TxIn
-> StrictSeq (Sized (BabbageTxOut DijkstraEra))
-> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
-> StrictMaybe Coin
-> OSet (ConwayTxCert DijkstraEra)
-> Withdrawals
-> Coin
-> ValidityInterval
-> Set (KeyHash 'Witness)
-> MultiAsset
-> StrictMaybe ScriptIntegrityHash
-> StrictMaybe TxAuxDataHash
-> StrictMaybe Network
-> VotingProcedures DijkstraEra
-> OSet (ProposalProcedure DijkstraEra)
-> StrictMaybe Coin
-> Coin
-> TxBody DijkstraEra
DijkstraTxBody
      (Set TxIn
 -> Set TxIn
 -> Set TxIn
 -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
 -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
 -> StrictMaybe Coin
 -> OSet (ConwayTxCert DijkstraEra)
 -> Withdrawals
 -> Coin
 -> ValidityInterval
 -> Set (KeyHash 'Witness)
 -> MultiAsset
 -> StrictMaybe ScriptIntegrityHash
 -> StrictMaybe TxAuxDataHash
 -> StrictMaybe Network
 -> VotingProcedures DijkstraEra
 -> OSet (ProposalProcedure DijkstraEra)
 -> StrictMaybe Coin
 -> Coin
 -> TxBody DijkstraEra)
-> Gen (Set TxIn)
-> Gen
     (Set TxIn
      -> Set TxIn
      -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe Coin
      -> OSet (ConwayTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 (ConwayTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen (Set TxIn)
-> Gen
     (Set TxIn
      -> StrictSeq (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe Coin
      -> OSet (ConwayTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 (ConwayTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen (Set TxIn)
-> Gen
     (StrictSeq (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe Coin
      -> OSet (ConwayTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 (ConwayTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen (StrictSeq (Sized (BabbageTxOut DijkstraEra)))
-> Gen
     (StrictMaybe (Sized (BabbageTxOut DijkstraEra))
      -> StrictMaybe Coin
      -> OSet (ConwayTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 (ConwayTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen (StrictMaybe (Sized (BabbageTxOut DijkstraEra)))
-> Gen
     (StrictMaybe Coin
      -> OSet (ConwayTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 (ConwayTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen (StrictMaybe Coin)
-> Gen
     (OSet (ConwayTxCert DijkstraEra)
      -> Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 (ConwayTxCert DijkstraEra)
   -> Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen (OSet (ConwayTxCert DijkstraEra))
-> Gen
     (Withdrawals
      -> Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 (ConwayTxCert DijkstraEra))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (Withdrawals
   -> Coin
   -> ValidityInterval
   -> Set (KeyHash 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen Withdrawals
-> Gen
     (Coin
      -> ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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
   -> Set (KeyHash 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen Coin
-> Gen
     (ValidityInterval
      -> Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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
   -> Set (KeyHash 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen ValidityInterval
-> Gen
     (Set (KeyHash 'Witness)
      -> MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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
  (Set (KeyHash 'Witness)
   -> MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen (Set (KeyHash 'Witness))
-> Gen
     (MultiAsset
      -> StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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 (KeyHash 'Witness))
forall a. Arbitrary a => Gen a
arbitrary
      Gen
  (MultiAsset
   -> StrictMaybe ScriptIntegrityHash
   -> StrictMaybe TxAuxDataHash
   -> StrictMaybe Network
   -> VotingProcedures DijkstraEra
   -> OSet (ProposalProcedure DijkstraEra)
   -> StrictMaybe Coin
   -> Coin
   -> TxBody DijkstraEra)
-> Gen MultiAsset
-> Gen
     (StrictMaybe ScriptIntegrityHash
      -> StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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
   -> TxBody DijkstraEra)
-> Gen (StrictMaybe ScriptIntegrityHash)
-> Gen
     (StrictMaybe TxAuxDataHash
      -> StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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
   -> TxBody DijkstraEra)
-> Gen (StrictMaybe TxAuxDataHash)
-> Gen
     (StrictMaybe Network
      -> VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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
   -> TxBody DijkstraEra)
-> Gen (StrictMaybe Network)
-> Gen
     (VotingProcedures DijkstraEra
      -> OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin
      -> Coin
      -> TxBody 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
   -> TxBody DijkstraEra)
-> Gen (VotingProcedures DijkstraEra)
-> Gen
     (OSet (ProposalProcedure DijkstraEra)
      -> StrictMaybe Coin -> Coin -> TxBody 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 -> TxBody DijkstraEra)
-> Gen (OSet (ProposalProcedure DijkstraEra))
-> Gen (StrictMaybe Coin -> Coin -> TxBody 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 -> TxBody DijkstraEra)
-> Gen (StrictMaybe Coin) -> Gen (Coin -> TxBody 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 -> TxBody DijkstraEra)
-> Gen Coin -> Gen (TxBody 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

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

deriving newtype instance Arbitrary (Tx DijkstraEra)