{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}

module Test.Cardano.Ledger.Conway.Examples (
  ledgerExamples,
  mkConwayBasedExampleTx,
  exampleConwayBasedTxBody,
  exampleAnchor,
  exampleVotingProcedures,
  exampleProposalProcedure,
  exampleProposalProcedureParameterChange,
  exampleProposalProcedureHardForkInitiation,
  exampleProposalProcedureTreasuryWithdrawals,
  exampleProposalProcedureNoConfidence,
  exampleProposalProcedureUpdateCommittee,
  exampleProposalProcedureNewConstitution,
) where

import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusTxInfo)
import Cardano.Ledger.BaseTypes
import Cardano.Ledger.Coin (Coin (..))
import Cardano.Ledger.Conway (ApplyTxError (ConwayApplyTxError), ConwayEra)
import Cardano.Ledger.Conway.Core
import Cardano.Ledger.Conway.Genesis (ConwayGenesis (..))
import Cardano.Ledger.Conway.Governance (
  Constitution (..),
  GovAction (..),
  GovActionId (..),
  GovActionIx (..),
  GovPurposeId (..),
  ProposalProcedure (..),
  Vote (..),
  Voter (..),
  VotingProcedure (..),
  VotingProcedures (..),
 )
import Cardano.Ledger.Conway.Rules (ConwayDelegPredFailure (..))
import Cardano.Ledger.Conway.Scripts (ConwayPlutusPurpose (..))
import Cardano.Ledger.Conway.TxCert
import Cardano.Ledger.Credential (Credential (..))
import Cardano.Ledger.DRep (DRep (..))
import Cardano.Ledger.Mary.Value (MaryValue (..))
import Cardano.Ledger.Plutus.Data (
  Datum (..),
  dataToBinaryData,
 )
import Cardano.Ledger.Plutus.Language (Language (..), plutusBinary)
import Cardano.Ledger.State (StakePoolParams (sppId))
import Cardano.Ledger.TxIn (TxId (..))
import qualified Data.List.NonEmpty as NE
import qualified Data.Map.Strict as Map
import Data.Maybe (fromJust)
import qualified Data.OSet.Strict as OSet
import qualified Data.Sequence.Strict as StrictSeq
import Lens.Micro
import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysSucceeds)
import Test.Cardano.Ledger.Alonzo.Examples (
  exampleDatum,
  mkAlonzoBasedLedgerExamples,
 )
import Test.Cardano.Ledger.Babbage.Examples (
  exampleBabbageBasedTxBody,
  exampleBabbageNewEpochState,
  mkBabbageBasedExampleTx,
 )
import Test.Cardano.Ledger.Conway.Era ()
import Test.Cardano.Ledger.Conway.Genesis (expectedConwayGenesis)
import Test.Cardano.Ledger.Core.KeyPair (mkAddr)
import Test.Cardano.Ledger.Core.Rational (IsRatio (..))
import Test.Cardano.Ledger.Core.Utils (mkDummySafeHash)
import Test.Cardano.Ledger.Mary.Examples (exampleMultiAssetValue)
import Test.Cardano.Ledger.Plutus (alwaysSucceedsPlutus)
import Test.Cardano.Ledger.Shelley.Examples (
  LedgerExamples (..),
  examplePayKey,
  exampleStakeKey,
  exampleStakePoolParams,
  mkKeyHash,
  mkScriptHash,
 )

ledgerExamples :: LedgerExamples ConwayEra
ledgerExamples :: LedgerExamples ConwayEra
ledgerExamples =
  ApplyTxError ConwayEra
-> NewEpochState ConwayEra
-> Tx TopTx ConwayEra
-> TranslationContext ConwayEra
-> LedgerExamples ConwayEra
forall era.
AlonzoEraPParams era =>
ApplyTxError era
-> NewEpochState era
-> Tx TopTx era
-> TranslationContext era
-> LedgerExamples era
mkAlonzoBasedLedgerExamples
    ( NonEmpty (ConwayLedgerPredFailure ConwayEra)
-> ApplyTxError ConwayEra
ConwayApplyTxError (NonEmpty (ConwayLedgerPredFailure ConwayEra)
 -> ApplyTxError ConwayEra)
-> NonEmpty (ConwayLedgerPredFailure ConwayEra)
-> ApplyTxError ConwayEra
forall a b. (a -> b) -> a -> b
$
        ConwayLedgerPredFailure ConwayEra
-> NonEmpty (ConwayLedgerPredFailure ConwayEra)
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ConwayLedgerPredFailure ConwayEra
 -> NonEmpty (ConwayLedgerPredFailure ConwayEra))
-> ConwayLedgerPredFailure ConwayEra
-> NonEmpty (ConwayLedgerPredFailure ConwayEra)
forall a b. (a -> b) -> a -> b
$
          ConwayDelegPredFailure ConwayEra
-> EraRuleFailure "LEDGER" ConwayEra
forall (rule :: Symbol) (t :: * -> *) era.
InjectRuleFailure rule t era =>
t era -> EraRuleFailure rule era
injectFailure (ConwayDelegPredFailure ConwayEra
 -> EraRuleFailure "LEDGER" ConwayEra)
-> ConwayDelegPredFailure ConwayEra
-> EraRuleFailure "LEDGER" ConwayEra
forall a b. (a -> b) -> a -> b
$
            forall era. KeyHash StakePool -> ConwayDelegPredFailure era
DelegateeStakePoolNotRegisteredDELEG @ConwayEra (Int -> KeyHash StakePool
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
1)
    )
    NewEpochState ConwayEra
forall era.
(BabbageEraTest era, Value era ~ MaryValue) =>
NewEpochState era
exampleBabbageNewEpochState
    ( TxBody TopTx ConwayEra
-> PlutusPurpose AsIx ConwayEra -> Tx TopTx ConwayEra
forall era.
(AlonzoEraTx era, AlonzoEraTxAuxData era,
 EraPlutusTxInfo 'PlutusV1 era, EraPlutusTxInfo 'PlutusV2 era,
 EraPlutusTxInfo 'PlutusV3 era) =>
TxBody TopTx era -> PlutusPurpose AsIx era -> Tx TopTx era
mkConwayBasedExampleTx
        (StrictSeq (TxCert ConwayEra) -> TxBody TopTx ConwayEra
forall era.
(ConwayEraTxBody era, EraPlutusTxInfo 'PlutusV1 era,
 EraPlutusTxInfo 'PlutusV2 era, EraPlutusTxInfo 'PlutusV3 era,
 Value era ~ MaryValue) =>
StrictSeq (TxCert era) -> TxBody TopTx era
exampleConwayBasedTxBody StrictSeq (TxCert ConwayEra)
StrictSeq (ConwayTxCert ConwayEra)
forall era. StrictSeq (ConwayTxCert era)
exampleConwayCerts)
        (AsIx Word32 TxIn -> ConwayPlutusPurpose AsIx ConwayEra
forall (f :: * -> * -> *) era.
f Word32 TxIn -> ConwayPlutusPurpose f era
ConwaySpending (AsIx Word32 TxIn -> ConwayPlutusPurpose AsIx ConwayEra)
-> AsIx Word32 TxIn -> ConwayPlutusPurpose AsIx ConwayEra
forall a b. (a -> b) -> a -> b
$ Word32 -> AsIx Word32 TxIn
forall ix it. ix -> AsIx ix it
AsIx Word32
0)
    )
    TranslationContext ConwayEra
ConwayGenesis
exampleConwayGenesis

mkConwayBasedExampleTx ::
  forall era.
  ( AlonzoEraTx era
  , AlonzoEraTxAuxData era
  , EraPlutusTxInfo 'PlutusV1 era
  , EraPlutusTxInfo 'PlutusV2 era
  , EraPlutusTxInfo 'PlutusV3 era
  ) =>
  TxBody TopTx era ->
  PlutusPurpose AsIx era ->
  Tx TopTx era
mkConwayBasedExampleTx :: forall era.
(AlonzoEraTx era, AlonzoEraTxAuxData era,
 EraPlutusTxInfo 'PlutusV1 era, EraPlutusTxInfo 'PlutusV2 era,
 EraPlutusTxInfo 'PlutusV3 era) =>
TxBody TopTx era -> PlutusPurpose AsIx era -> Tx TopTx era
mkConwayBasedExampleTx TxBody TopTx era
txBody PlutusPurpose AsIx era
scriptPurpose =
  TxBody TopTx era -> PlutusPurpose AsIx era -> Tx TopTx era
forall era.
(AlonzoEraTx era, AlonzoEraTxAuxData era,
 EraPlutusTxInfo 'PlutusV1 era, EraPlutusTxInfo 'PlutusV2 era) =>
TxBody TopTx era -> PlutusPurpose AsIx era -> Tx TopTx era
mkBabbageBasedExampleTx
    TxBody TopTx era
txBody
    PlutusPurpose AsIx era
scriptPurpose
    Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era
forall a b. a -> (a -> b) -> b
& (TxWits era -> Identity (TxWits era))
-> Tx TopTx era -> Identity (Tx TopTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel). Lens' (Tx l era) (TxWits era)
witsTxL
      ((TxWits era -> Identity (TxWits era))
 -> Tx TopTx era -> Identity (Tx TopTx era))
-> TxWits era -> Tx TopTx era -> Tx TopTx era
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ ( TxWits era
forall era. EraTxWits era => TxWits era
mkBasicTxWits
              TxWits era -> (TxWits era -> TxWits era) -> TxWits era
forall a b. a -> (a -> b) -> b
& (Map ScriptHash (Script era)
 -> Identity (Map ScriptHash (Script era)))
-> TxWits era -> Identity (TxWits era)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Map ScriptHash (Script era))
Lens' (TxWits era) (Map ScriptHash (Script era))
scriptTxWitsL
                ((Map ScriptHash (Script era)
  -> Identity (Map ScriptHash (Script era)))
 -> TxWits era -> Identity (TxWits era))
-> Map ScriptHash (Script era) -> TxWits era -> TxWits era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ScriptHash -> Script era -> Map ScriptHash (Script era)
forall k a. k -> a -> Map k a
Map.singleton
                  (forall era. EraScript era => Script era -> ScriptHash
hashScript @era (Script era -> ScriptHash) -> Script era -> ScriptHash
forall a b. (a -> b) -> a -> b
$ forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysSucceeds @'PlutusV3 Natural
3)
                  (forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysSucceeds @'PlutusV3 Natural
3)
          )
    Tx TopTx era -> (Tx TopTx era -> Tx TopTx era) -> Tx TopTx era
forall a b. a -> (a -> b) -> b
& (StrictMaybe (TxAuxData era)
 -> Identity (StrictMaybe (TxAuxData era)))
-> Tx TopTx era -> Identity (Tx TopTx era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (StrictMaybe (TxAuxData era))
forall (l :: TxLevel).
Lens' (Tx l era) (StrictMaybe (TxAuxData era))
auxDataTxL
      ((StrictMaybe (TxAuxData era)
  -> Identity (StrictMaybe (TxAuxData era)))
 -> Tx TopTx era -> Identity (Tx TopTx era))
-> (StrictMaybe (TxAuxData era) -> StrictMaybe (TxAuxData era))
-> Tx TopTx era
-> Tx TopTx era
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (TxAuxData era -> TxAuxData era)
-> StrictMaybe (TxAuxData era) -> StrictMaybe (TxAuxData era)
forall a b. (a -> b) -> StrictMaybe a -> StrictMaybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
        ( \TxAuxData era
auxData ->
            TxAuxData era
auxData
              TxAuxData era -> (TxAuxData era -> TxAuxData era) -> TxAuxData era
forall a b. a -> (a -> b) -> b
& (Map Language (NonEmpty PlutusBinary)
 -> Identity (Map Language (NonEmpty PlutusBinary)))
-> TxAuxData era -> Identity (TxAuxData era)
forall era.
AlonzoEraTxAuxData era =>
Lens' (TxAuxData era) (Map Language (NonEmpty PlutusBinary))
Lens' (TxAuxData era) (Map Language (NonEmpty PlutusBinary))
plutusScriptsTxAuxDataL
                ((Map Language (NonEmpty PlutusBinary)
  -> Identity (Map Language (NonEmpty PlutusBinary)))
 -> TxAuxData era -> Identity (TxAuxData era))
-> Map Language (NonEmpty PlutusBinary)
-> TxAuxData era
-> TxAuxData era
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ Language
-> NonEmpty PlutusBinary -> Map Language (NonEmpty PlutusBinary)
forall k a. k -> a -> Map k a
Map.singleton Language
PlutusV3 (PlutusBinary -> NonEmpty PlutusBinary
forall a. a -> NonEmpty a
NE.singleton (Plutus 'PlutusV3 -> PlutusBinary
forall (l :: Language). Plutus l -> PlutusBinary
plutusBinary (forall (l :: Language). Natural -> Plutus l
alwaysSucceedsPlutus @'PlutusV3 Natural
3)))
        )

exampleConwayBasedTxBody ::
  forall era.
  ( ConwayEraTxBody era
  , EraPlutusTxInfo PlutusV1 era
  , EraPlutusTxInfo PlutusV2 era
  , EraPlutusTxInfo PlutusV3 era
  , Value era ~ MaryValue
  ) =>
  StrictSeq.StrictSeq (TxCert era) ->
  TxBody TopTx era
exampleConwayBasedTxBody :: forall era.
(ConwayEraTxBody era, EraPlutusTxInfo 'PlutusV1 era,
 EraPlutusTxInfo 'PlutusV2 era, EraPlutusTxInfo 'PlutusV3 era,
 Value era ~ MaryValue) =>
StrictSeq (TxCert era) -> TxBody TopTx era
exampleConwayBasedTxBody StrictSeq (TxCert era)
certs = StrictSeq (TxCert era) -> TxBody TopTx era -> TxBody TopTx era
forall era.
(ConwayEraTxBody era, Value era ~ MaryValue,
 EraPlutusTxInfo 'PlutusV3 era) =>
StrictSeq (TxCert era) -> TxBody TopTx era -> TxBody TopTx era
mkConwayBasedExampleTxBody StrictSeq (TxCert era)
certs TxBody TopTx era
forall era.
(BabbageEraTxBody era, EraPlutusTxInfo 'PlutusV1 era,
 EraPlutusTxInfo 'PlutusV2 era, Value era ~ MaryValue) =>
TxBody TopTx era
exampleBabbageBasedTxBody

mkConwayBasedExampleTxBody ::
  forall era.
  ( ConwayEraTxBody era
  , Value era ~ MaryValue
  , EraPlutusTxInfo PlutusV3 era
  ) =>
  StrictSeq.StrictSeq (TxCert era) ->
  TxBody TopTx era ->
  TxBody TopTx era
mkConwayBasedExampleTxBody :: forall era.
(ConwayEraTxBody era, Value era ~ MaryValue,
 EraPlutusTxInfo 'PlutusV3 era) =>
StrictSeq (TxCert era) -> TxBody TopTx era -> TxBody TopTx era
mkConwayBasedExampleTxBody StrictSeq (TxCert era)
certs TxBody TopTx era
txBody =
  TxBody TopTx era
txBody
    TxBody TopTx era
-> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era)))
-> TxBody TopTx era -> Identity (TxBody TopTx era)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxOut era))
forall (l :: TxLevel). Lens' (TxBody l era) (StrictSeq (TxOut era))
outputsTxBodyL
      ((StrictSeq (TxOut era) -> Identity (StrictSeq (TxOut era)))
 -> TxBody TopTx era -> Identity (TxBody TopTx era))
-> StrictSeq (TxOut era) -> TxBody TopTx era -> TxBody TopTx era
forall a s t. Monoid a => ASetter s t a a -> a -> s -> t
<>~ [TxOut era] -> StrictSeq (TxOut era)
forall a. [a] -> StrictSeq a
StrictSeq.fromList
        [ Addr -> Value era -> TxOut era
forall era.
(EraTxOut era, HasCallStack) =>
Addr -> Value era -> TxOut era
mkBasicTxOut
            (KeyPair Payment -> KeyPair Staking -> Addr
forall p s.
(MakeCredential p Payment, MakeStakeReference s) =>
p -> s -> Addr
mkAddr KeyPair Payment
examplePayKey KeyPair Staking
exampleStakeKey)
            (Int -> MaryValue
exampleMultiAssetValue Int
2)
            TxOut era -> (TxOut era -> TxOut era) -> TxOut era
forall a b. a -> (a -> b) -> b
& (Datum era -> Identity (Datum era))
-> TxOut era -> Identity (TxOut era)
forall era. BabbageEraTxOut era => Lens' (TxOut era) (Datum era)
Lens' (TxOut era) (Datum era)
datumTxOutL ((Datum era -> Identity (Datum era))
 -> TxOut era -> Identity (TxOut era))
-> Datum era -> TxOut era -> TxOut era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ BinaryData era -> Datum era
forall era. BinaryData era -> Datum era
Datum (Data era -> BinaryData era
forall era. Data era -> BinaryData era
dataToBinaryData Data era
forall era. Era era => Data era
exampleDatum)
            TxOut era -> (TxOut era -> TxOut era) -> TxOut era
forall a b. a -> (a -> b) -> b
& (StrictMaybe (Script era) -> Identity (StrictMaybe (Script era)))
-> TxOut era -> Identity (TxOut era)
forall era.
BabbageEraTxOut era =>
Lens' (TxOut era) (StrictMaybe (Script era))
Lens' (TxOut era) (StrictMaybe (Script era))
referenceScriptTxOutL ((StrictMaybe (Script era) -> Identity (StrictMaybe (Script era)))
 -> TxOut era -> Identity (TxOut era))
-> StrictMaybe (Script era) -> TxOut era -> TxOut era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Script era -> StrictMaybe (Script era)
forall a. a -> StrictMaybe a
SJust (forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysSucceeds @'PlutusV3 Natural
3)
        ]
    TxBody TopTx era
-> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert era) -> Identity (StrictSeq (TxCert era)))
-> TxBody TopTx era -> Identity (TxBody TopTx era)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l era) (StrictSeq (TxCert era))
certsTxBodyL ((StrictSeq (TxCert era) -> Identity (StrictSeq (TxCert era)))
 -> TxBody TopTx era -> Identity (TxBody TopTx era))
-> StrictSeq (TxCert era) -> TxBody TopTx era -> TxBody TopTx era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictSeq (TxCert era)
certs
    TxBody TopTx era
-> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era
forall a b. a -> (a -> b) -> b
& (VotingProcedures era -> Identity (VotingProcedures era))
-> TxBody TopTx era -> Identity (TxBody TopTx era)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (VotingProcedures era)
forall (l :: TxLevel). Lens' (TxBody l era) (VotingProcedures era)
votingProceduresTxBodyL ((VotingProcedures era -> Identity (VotingProcedures era))
 -> TxBody TopTx era -> Identity (TxBody TopTx era))
-> VotingProcedures era -> TxBody TopTx era -> TxBody TopTx era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ VotingProcedures era
forall era. VotingProcedures era
exampleVotingProcedures
    TxBody TopTx era
-> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era
forall a b. a -> (a -> b) -> b
& (OSet (ProposalProcedure era)
 -> Identity (OSet (ProposalProcedure era)))
-> TxBody TopTx era -> Identity (TxBody TopTx era)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (OSet (ProposalProcedure era))
forall (l :: TxLevel).
Lens' (TxBody l era) (OSet (ProposalProcedure era))
proposalProceduresTxBodyL
      ((OSet (ProposalProcedure era)
  -> Identity (OSet (ProposalProcedure era)))
 -> TxBody TopTx era -> Identity (TxBody TopTx era))
-> OSet (ProposalProcedure era)
-> TxBody TopTx era
-> TxBody TopTx era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [ProposalProcedure era] -> OSet (ProposalProcedure era)
forall a. Ord a => [a] -> OSet a
OSet.fromList
        [ ProposalProcedure era
forall era. ProposalProcedure era
exampleProposalProcedure
        , ProposalProcedure era
forall era. EraPParams era => ProposalProcedure era
exampleProposalProcedureParameterChange
        , ProposalProcedure era
forall era. ProposalProcedure era
exampleProposalProcedureHardForkInitiation
        , ProposalProcedure era
forall era. ProposalProcedure era
exampleProposalProcedureTreasuryWithdrawals
        , ProposalProcedure era
forall era. ProposalProcedure era
exampleProposalProcedureNoConfidence
        , ProposalProcedure era
forall era. ProposalProcedure era
exampleProposalProcedureUpdateCommittee
        , ProposalProcedure era
forall era. ProposalProcedure era
exampleProposalProcedureNewConstitution
        ]
    TxBody TopTx era
-> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> TxBody TopTx era -> Identity (TxBody TopTx era)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe Coin)
forall (l :: TxLevel). Lens' (TxBody l era) (StrictMaybe Coin)
currentTreasuryValueTxBodyL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> TxBody TopTx era -> Identity (TxBody TopTx era))
-> StrictMaybe Coin -> TxBody TopTx era -> TxBody TopTx era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin -> StrictMaybe Coin
forall a. a -> StrictMaybe a
SJust (Integer -> Coin
Coin Integer
867530900000)
    TxBody TopTx era
-> (TxBody TopTx era -> TxBody TopTx era) -> TxBody TopTx era
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin)
-> TxBody TopTx era -> Identity (TxBody TopTx era)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) Coin
forall (l :: TxLevel). Lens' (TxBody l era) Coin
treasuryDonationTxBodyL ((Coin -> Identity Coin)
 -> TxBody TopTx era -> Identity (TxBody TopTx era))
-> Coin -> TxBody TopTx era -> TxBody TopTx era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Integer -> Coin
Coin Integer
1000000

exampleConwayCerts :: StrictSeq.StrictSeq (ConwayTxCert era)
exampleConwayCerts :: forall era. StrictSeq (ConwayTxCert era)
exampleConwayCerts =
  [ConwayTxCert era] -> StrictSeq (ConwayTxCert era)
forall a. [a] -> StrictSeq a
StrictSeq.fromList
    [ ConwayDelegCert -> ConwayTxCert era
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert era)
-> ConwayDelegCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$ Credential Staking -> StrictMaybe Coin -> ConwayDelegCert
ConwayRegCert (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
2)) (Coin -> StrictMaybe Coin
forall a. a -> StrictMaybe a
SJust (Integer -> Coin
Coin Integer
2000000))
    , ConwayDelegCert -> ConwayTxCert era
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert era)
-> ConwayDelegCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$ Credential Staking -> StrictMaybe Coin -> ConwayDelegCert
ConwayUnRegCert (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
2)) (Coin -> StrictMaybe Coin
forall a. a -> StrictMaybe a
SJust (Integer -> Coin
Coin Integer
2000000))
    , ConwayDelegCert -> ConwayTxCert era
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert era)
-> ConwayDelegCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$
        Credential Staking -> Delegatee -> ConwayDelegCert
ConwayDelegCert (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
3)) (KeyHash StakePool -> Delegatee
DelegStake (StakePoolParams -> KeyHash StakePool
sppId StakePoolParams
exampleStakePoolParams))
    , ConwayDelegCert -> ConwayTxCert era
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert era)
-> ConwayDelegCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$
        Credential Staking -> Delegatee -> ConwayDelegCert
ConwayDelegCert (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
4)) (DRep -> Delegatee
DelegVote (KeyHash DRepRole -> DRep
DRepKeyHash (Int -> KeyHash DRepRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
5)))
    , ConwayDelegCert -> ConwayTxCert era
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert era)
-> ConwayDelegCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$
        Credential Staking -> Delegatee -> ConwayDelegCert
ConwayDelegCert
          (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
6))
          (KeyHash StakePool -> DRep -> Delegatee
DelegStakeVote (StakePoolParams -> KeyHash StakePool
sppId StakePoolParams
exampleStakePoolParams) (KeyHash DRepRole -> DRep
DRepKeyHash (Int -> KeyHash DRepRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
7)))
    , ConwayDelegCert -> ConwayTxCert era
forall era. ConwayDelegCert -> ConwayTxCert era
ConwayTxCertDeleg (ConwayDelegCert -> ConwayTxCert era)
-> ConwayDelegCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$
        Credential Staking -> Delegatee -> Coin -> ConwayDelegCert
ConwayRegDelegCert
          (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
8))
          (KeyHash StakePool -> Delegatee
DelegStake (StakePoolParams -> KeyHash StakePool
sppId StakePoolParams
exampleStakePoolParams))
          (Integer -> Coin
Coin Integer
2000000)
    , PoolCert -> ConwayTxCert era
forall era. PoolCert -> ConwayTxCert era
ConwayTxCertPool (PoolCert -> ConwayTxCert era) -> PoolCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$ StakePoolParams -> PoolCert
RegPool StakePoolParams
exampleStakePoolParams
    , PoolCert -> ConwayTxCert era
forall era. PoolCert -> ConwayTxCert era
ConwayTxCertPool (PoolCert -> ConwayTxCert era) -> PoolCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$ KeyHash StakePool -> EpochNo -> PoolCert
RetirePool (StakePoolParams -> KeyHash StakePool
sppId StakePoolParams
exampleStakePoolParams) (Word64 -> EpochNo
EpochNo Word64
2)
    , ConwayGovCert -> ConwayTxCert era
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert era)
-> ConwayGovCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$ Credential DRepRole -> Coin -> StrictMaybe Anchor -> ConwayGovCert
ConwayRegDRep (KeyHash DRepRole -> Credential DRepRole
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash DRepRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
9)) (Integer -> Coin
Coin Integer
500000) (Anchor -> StrictMaybe Anchor
forall a. a -> StrictMaybe a
SJust Anchor
exampleAnchor)
    , ConwayGovCert -> ConwayTxCert era
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert era)
-> ConwayGovCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$ Credential DRepRole -> Coin -> ConwayGovCert
ConwayUnRegDRep (KeyHash DRepRole -> Credential DRepRole
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash DRepRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
9)) (Integer -> Coin
Coin Integer
500000)
    , ConwayGovCert -> ConwayTxCert era
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert era)
-> ConwayGovCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$ Credential DRepRole -> StrictMaybe Anchor -> ConwayGovCert
ConwayUpdateDRep (KeyHash DRepRole -> Credential DRepRole
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash DRepRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
9)) (Anchor -> StrictMaybe Anchor
forall a. a -> StrictMaybe a
SJust Anchor
exampleAnchor)
    , ConwayGovCert -> ConwayTxCert era
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert era)
-> ConwayGovCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$ Credential ColdCommitteeRole
-> Credential HotCommitteeRole -> ConwayGovCert
ConwayAuthCommitteeHotKey (KeyHash ColdCommitteeRole -> Credential ColdCommitteeRole
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash ColdCommitteeRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
10)) (KeyHash HotCommitteeRole -> Credential HotCommitteeRole
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash HotCommitteeRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
11))
    , ConwayGovCert -> ConwayTxCert era
forall era. ConwayGovCert -> ConwayTxCert era
ConwayTxCertGov (ConwayGovCert -> ConwayTxCert era)
-> ConwayGovCert -> ConwayTxCert era
forall a b. (a -> b) -> a -> b
$ Credential ColdCommitteeRole -> StrictMaybe Anchor -> ConwayGovCert
ConwayResignCommitteeColdKey (KeyHash ColdCommitteeRole -> Credential ColdCommitteeRole
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash ColdCommitteeRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
10)) (Anchor -> StrictMaybe Anchor
forall a. a -> StrictMaybe a
SJust Anchor
exampleAnchor)
    ]

exampleAnchor :: Anchor
exampleAnchor :: Anchor
exampleAnchor =
  Anchor
    { anchorUrl :: Url
anchorUrl = Maybe Url -> Url
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe Url -> Url) -> Maybe Url -> Url
forall a b. (a -> b) -> a -> b
$ Int -> Text -> Maybe Url
forall (m :: * -> *). MonadFail m => Int -> Text -> m Url
textToUrl Int
99 Text
"https://example.com"
    , anchorDataHash :: SafeHash AnchorData
anchorDataHash = Int -> SafeHash AnchorData
forall a. Int -> SafeHash a
mkDummySafeHash Int
0
    }

exampleVotingProcedures :: VotingProcedures era
exampleVotingProcedures :: forall era. VotingProcedures era
exampleVotingProcedures =
  Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
forall era.
Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
VotingProcedures (Map Voter (Map GovActionId (VotingProcedure era))
 -> VotingProcedures era)
-> Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
forall a b. (a -> b) -> a -> b
$
    [(Voter, Map GovActionId (VotingProcedure era))]
-> Map Voter (Map GovActionId (VotingProcedure era))
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
      [
        ( KeyHash StakePool -> Voter
StakePoolVoter (Int -> KeyHash StakePool
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
1)
        , GovActionId
-> VotingProcedure era -> Map GovActionId (VotingProcedure era)
forall k a. k -> a -> Map k a
Map.singleton GovActionId
exampleGovActionId (Vote -> StrictMaybe Anchor -> VotingProcedure era
forall era. Vote -> StrictMaybe Anchor -> VotingProcedure era
VotingProcedure Vote
VoteYes (StrictMaybe Anchor -> VotingProcedure era)
-> StrictMaybe Anchor -> VotingProcedure era
forall a b. (a -> b) -> a -> b
$ Anchor -> StrictMaybe Anchor
forall a. a -> StrictMaybe a
SJust Anchor
exampleAnchor)
        )
      ,
        ( Credential DRepRole -> Voter
DRepVoter (KeyHash DRepRole -> Credential DRepRole
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash DRepRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
2))
        , GovActionId
-> VotingProcedure era -> Map GovActionId (VotingProcedure era)
forall k a. k -> a -> Map k a
Map.singleton GovActionId
exampleGovActionId (Vote -> StrictMaybe Anchor -> VotingProcedure era
forall era. Vote -> StrictMaybe Anchor -> VotingProcedure era
VotingProcedure Vote
VoteNo (StrictMaybe Anchor -> VotingProcedure era)
-> StrictMaybe Anchor -> VotingProcedure era
forall a b. (a -> b) -> a -> b
$ Anchor -> StrictMaybe Anchor
forall a. a -> StrictMaybe a
SJust Anchor
exampleAnchor)
        )
      ,
        ( Credential HotCommitteeRole -> Voter
CommitteeVoter (KeyHash HotCommitteeRole -> Credential HotCommitteeRole
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash HotCommitteeRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
3))
        , GovActionId
-> VotingProcedure era -> Map GovActionId (VotingProcedure era)
forall k a. k -> a -> Map k a
Map.singleton GovActionId
exampleGovActionId (Vote -> StrictMaybe Anchor -> VotingProcedure era
forall era. Vote -> StrictMaybe Anchor -> VotingProcedure era
VotingProcedure Vote
Abstain (Anchor -> StrictMaybe Anchor
forall a. a -> StrictMaybe a
SJust Anchor
exampleAnchor))
        )
      ]

exampleGovActionId :: GovActionId
exampleGovActionId :: GovActionId
exampleGovActionId =
  GovActionId
    { gaidTxId :: TxId
gaidTxId = SafeHash EraIndependentTxBody -> TxId
TxId (Int -> SafeHash EraIndependentTxBody
forall a. Int -> SafeHash a
mkDummySafeHash Int
1)
    , gaidGovActionIx :: GovActionIx
gaidGovActionIx = Word16 -> GovActionIx
GovActionIx Word16
0
    }

exampleProposalProcedure :: ProposalProcedure era
exampleProposalProcedure :: forall era. ProposalProcedure era
exampleProposalProcedure =
  ProposalProcedure
    { pProcDeposit :: Coin
pProcDeposit = Integer -> Coin
Coin Integer
1000000000
    , pProcReturnAddr :: AccountAddress
pProcReturnAddr = Network -> AccountId -> AccountAddress
AccountAddress Network
Testnet (Credential Staking -> AccountId
AccountId (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
0)))
    , pProcGovAction :: GovAction era
pProcGovAction = GovAction era
forall era. GovAction era
InfoAction
    , pProcAnchor :: Anchor
pProcAnchor = Anchor
exampleAnchor
    }

exampleProposalProcedureParameterChange :: EraPParams era => ProposalProcedure era
exampleProposalProcedureParameterChange :: forall era. EraPParams era => ProposalProcedure era
exampleProposalProcedureParameterChange =
  ProposalProcedure
    { pProcDeposit :: Coin
pProcDeposit = Integer -> Coin
Coin Integer
1000000000
    , pProcReturnAddr :: AccountAddress
pProcReturnAddr = Network -> AccountId -> AccountAddress
AccountAddress Network
Testnet (Credential Staking -> AccountId
AccountId (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
0)))
    , pProcGovAction :: GovAction era
pProcGovAction =
        StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
-> PParamsUpdate era -> StrictMaybe ScriptHash -> GovAction era
ParameterChange
          (GovPurposeId 'PParamUpdatePurpose
-> StrictMaybe (GovPurposeId 'PParamUpdatePurpose)
forall a. a -> StrictMaybe a
SJust (GovActionId -> GovPurposeId 'PParamUpdatePurpose
forall (p :: GovActionPurpose). GovActionId -> GovPurposeId p
GovPurposeId GovActionId
exampleGovActionId))
          (PParamsUpdate era
forall era. EraPParams era => PParamsUpdate era
emptyPParamsUpdate PParamsUpdate era
-> (PParamsUpdate era -> PParamsUpdate era) -> PParamsUpdate era
forall a b. a -> (a -> b) -> b
& (StrictMaybe Word32 -> Identity (StrictMaybe Word32))
-> PParamsUpdate era -> Identity (PParamsUpdate era)
forall era.
EraPParams era =>
Lens' (PParamsUpdate era) (StrictMaybe Word32)
Lens' (PParamsUpdate era) (StrictMaybe Word32)
ppuMaxBBSizeL ((StrictMaybe Word32 -> Identity (StrictMaybe Word32))
 -> PParamsUpdate era -> Identity (PParamsUpdate era))
-> StrictMaybe Word32 -> PParamsUpdate era -> PParamsUpdate era
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Word32 -> StrictMaybe Word32
forall a. a -> StrictMaybe a
SJust Word32
65536)
          (ScriptHash -> StrictMaybe ScriptHash
forall a. a -> StrictMaybe a
SJust (Int -> ScriptHash
mkScriptHash Int
1))
    , pProcAnchor :: Anchor
pProcAnchor = Anchor
exampleAnchor
    }

exampleProposalProcedureHardForkInitiation :: ProposalProcedure era
exampleProposalProcedureHardForkInitiation :: forall era. ProposalProcedure era
exampleProposalProcedureHardForkInitiation =
  ProposalProcedure
    { pProcDeposit :: Coin
pProcDeposit = Integer -> Coin
Coin Integer
1000000000
    , pProcReturnAddr :: AccountAddress
pProcReturnAddr = Network -> AccountId -> AccountAddress
AccountAddress Network
Testnet (Credential Staking -> AccountId
AccountId (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
0)))
    , pProcGovAction :: GovAction era
pProcGovAction =
        StrictMaybe (GovPurposeId 'HardForkPurpose)
-> ProtVer -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'HardForkPurpose)
-> ProtVer -> GovAction era
HardForkInitiation
          (GovPurposeId 'HardForkPurpose
-> StrictMaybe (GovPurposeId 'HardForkPurpose)
forall a. a -> StrictMaybe a
SJust (GovActionId -> GovPurposeId 'HardForkPurpose
forall (p :: GovActionPurpose). GovActionId -> GovPurposeId p
GovPurposeId GovActionId
exampleGovActionId))
          (Version -> Natural -> ProtVer
ProtVer (forall (v :: Natural).
(KnownNat v, MinVersion <= v, v <= MaxVersion) =>
Version
natVersion @10) Natural
0)
    , pProcAnchor :: Anchor
pProcAnchor = Anchor
exampleAnchor
    }

exampleProposalProcedureTreasuryWithdrawals :: ProposalProcedure era
exampleProposalProcedureTreasuryWithdrawals :: forall era. ProposalProcedure era
exampleProposalProcedureTreasuryWithdrawals =
  ProposalProcedure
    { pProcDeposit :: Coin
pProcDeposit = Integer -> Coin
Coin Integer
1000000000
    , pProcReturnAddr :: AccountAddress
pProcReturnAddr = Network -> AccountId -> AccountAddress
AccountAddress Network
Testnet (Credential Staking -> AccountId
AccountId (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
0)))
    , pProcGovAction :: GovAction era
pProcGovAction =
        Map AccountAddress Coin -> StrictMaybe ScriptHash -> GovAction era
forall era.
Map AccountAddress Coin -> StrictMaybe ScriptHash -> GovAction era
TreasuryWithdrawals
          (AccountAddress -> Coin -> Map AccountAddress Coin
forall k a. k -> a -> Map k a
Map.singleton (Network -> AccountId -> AccountAddress
AccountAddress Network
Testnet (Credential Staking -> AccountId
AccountId (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
0)))) (Integer -> Coin
Coin Integer
1000000000))
          (ScriptHash -> StrictMaybe ScriptHash
forall a. a -> StrictMaybe a
SJust (Int -> ScriptHash
mkScriptHash Int
2))
    , pProcAnchor :: Anchor
pProcAnchor = Anchor
exampleAnchor
    }

exampleProposalProcedureNoConfidence :: ProposalProcedure era
exampleProposalProcedureNoConfidence :: forall era. ProposalProcedure era
exampleProposalProcedureNoConfidence =
  ProposalProcedure
    { pProcDeposit :: Coin
pProcDeposit = Integer -> Coin
Coin Integer
1000000000
    , pProcReturnAddr :: AccountAddress
pProcReturnAddr = Network -> AccountId -> AccountAddress
AccountAddress Network
Testnet (Credential Staking -> AccountId
AccountId (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
0)))
    , pProcGovAction :: GovAction era
pProcGovAction = StrictMaybe (GovPurposeId 'CommitteePurpose) -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose) -> GovAction era
NoConfidence (GovPurposeId 'CommitteePurpose
-> StrictMaybe (GovPurposeId 'CommitteePurpose)
forall a. a -> StrictMaybe a
SJust (GovActionId -> GovPurposeId 'CommitteePurpose
forall (p :: GovActionPurpose). GovActionId -> GovPurposeId p
GovPurposeId GovActionId
exampleGovActionId))
    , pProcAnchor :: Anchor
pProcAnchor = Anchor
exampleAnchor
    }

exampleProposalProcedureUpdateCommittee :: ProposalProcedure era
exampleProposalProcedureUpdateCommittee :: forall era. ProposalProcedure era
exampleProposalProcedureUpdateCommittee =
  ProposalProcedure
    { pProcDeposit :: Coin
pProcDeposit = Integer -> Coin
Coin Integer
500000000
    , pProcReturnAddr :: AccountAddress
pProcReturnAddr = Network -> AccountId -> AccountAddress
AccountAddress Network
Testnet (Credential Staking -> AccountId
AccountId (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
1)))
    , pProcGovAction :: GovAction era
pProcGovAction =
        StrictMaybe (GovPurposeId 'CommitteePurpose)
-> Set (Credential ColdCommitteeRole)
-> Map (Credential ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
forall era.
StrictMaybe (GovPurposeId 'CommitteePurpose)
-> Set (Credential ColdCommitteeRole)
-> Map (Credential ColdCommitteeRole) EpochNo
-> UnitInterval
-> GovAction era
UpdateCommittee
          (GovPurposeId 'CommitteePurpose
-> StrictMaybe (GovPurposeId 'CommitteePurpose)
forall a. a -> StrictMaybe a
SJust (GovActionId -> GovPurposeId 'CommitteePurpose
forall (p :: GovActionPurpose). GovActionId -> GovPurposeId p
GovPurposeId GovActionId
exampleGovActionId))
          Set (Credential ColdCommitteeRole)
forall a. Monoid a => a
mempty
          (Credential ColdCommitteeRole
-> EpochNo -> Map (Credential ColdCommitteeRole) EpochNo
forall k a. k -> a -> Map k a
Map.singleton (KeyHash ColdCommitteeRole -> Credential ColdCommitteeRole
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash ColdCommitteeRole
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
12)) (Word64 -> EpochNo
EpochNo Word64
10))
          (Integer
3 Integer -> Integer -> UnitInterval
forall r. (IsRatio r, HasCallStack) => Integer -> Integer -> r
%! Integer
5)
    , pProcAnchor :: Anchor
pProcAnchor = Anchor
exampleAnchor
    }

exampleProposalProcedureNewConstitution :: ProposalProcedure era
exampleProposalProcedureNewConstitution :: forall era. ProposalProcedure era
exampleProposalProcedureNewConstitution =
  ProposalProcedure
    { pProcDeposit :: Coin
pProcDeposit = Integer -> Coin
Coin Integer
1000000000
    , pProcReturnAddr :: AccountAddress
pProcReturnAddr = Network -> AccountId -> AccountAddress
AccountAddress Network
Testnet (Credential Staking -> AccountId
AccountId (KeyHash Staking -> Credential Staking
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (Int -> KeyHash Staking
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
0)))
    , pProcGovAction :: GovAction era
pProcGovAction =
        StrictMaybe (GovPurposeId 'ConstitutionPurpose)
-> Constitution era -> GovAction era
forall era.
StrictMaybe (GovPurposeId 'ConstitutionPurpose)
-> Constitution era -> GovAction era
NewConstitution
          (GovPurposeId 'ConstitutionPurpose
-> StrictMaybe (GovPurposeId 'ConstitutionPurpose)
forall a. a -> StrictMaybe a
SJust (GovActionId -> GovPurposeId 'ConstitutionPurpose
forall (p :: GovActionPurpose). GovActionId -> GovPurposeId p
GovPurposeId GovActionId
exampleGovActionId))
          Constitution
            { constitutionAnchor :: Anchor
constitutionAnchor = Anchor
exampleAnchor
            , constitutionGuardrailsScriptHash :: StrictMaybe ScriptHash
constitutionGuardrailsScriptHash = ScriptHash -> StrictMaybe ScriptHash
forall a. a -> StrictMaybe a
SJust (Int -> ScriptHash
mkScriptHash Int
3)
            }
    , pProcAnchor :: Anchor
pProcAnchor = Anchor
exampleAnchor
    }

exampleConwayGenesis :: ConwayGenesis
exampleConwayGenesis :: ConwayGenesis
exampleConwayGenesis = ConwayGenesis
expectedConwayGenesis