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

module Test.Cardano.Ledger.Dijkstra.Examples (
  ledgerExamples,
) where

import Cardano.Ledger.Address (DirectDeposits (..))
import Cardano.Ledger.BaseTypes
import Cardano.Ledger.Coin (Coin (..))
import Cardano.Ledger.Conway.Core
import Cardano.Ledger.Conway.Governance (VotingProcedures (..))
import Cardano.Ledger.Conway.Rules (ConwayDELEG, ConwayDelegPredFailure (..))
import Cardano.Ledger.Credential (Credential (..))
import Cardano.Ledger.Dijkstra (ApplyTxError (..), DijkstraEra)
import Cardano.Ledger.Dijkstra.Rules (DijkstraLEDGER, DijkstraMEMPOOL)
import Cardano.Ledger.Dijkstra.Scripts (AccountBalanceIntervals (..), DijkstraPlutusPurpose (..))
import Cardano.Ledger.Dijkstra.TxBody (
  accountBalanceIntervalsTxBodyL,
  directDepositsTxBodyL,
  guardsTxBodyL,
  subTransactionsTxBodyL,
 )
import Cardano.Ledger.Dijkstra.TxCert
import Cardano.Ledger.Mary.Value (MaryValue (..))
import Cardano.Ledger.Plutus.Data (
  Datum (..),
  dataToBinaryData,
 )
import Cardano.Ledger.Plutus.Language (Language (..))
import Cardano.Ledger.Shelley.Scripts
import Cardano.Ledger.TxIn (TxId (..), mkTxInPartial)
import Control.State.Transition.Extended (Embed (..))
import qualified Data.Map.Strict as Map
import qualified Data.OSet.Strict as OSet
import qualified Data.Sequence.Strict as StrictSeq
import qualified Data.Set as Set
import Lens.Micro ((&), (.~))
import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysSucceeds)
import Test.Cardano.Ledger.Alonzo.Examples (
  exampleDatum,
  exampleTx,
  mkLedgerExamples,
 )
import Test.Cardano.Ledger.Babbage.Examples (exampleBabbageNewEpochState, exampleCollateralOutput)
import Test.Cardano.Ledger.Core.KeyPair (mkAddr)
import Test.Cardano.Ledger.Core.Utils (mkDummySafeHash)
import Test.Cardano.Ledger.Dijkstra.Era ()
import Test.Cardano.Ledger.Dijkstra.ImpTest (exampleDijkstraGenesis)
import Test.Cardano.Ledger.Mary.Examples (exampleMultiAssetValue)
import Test.Cardano.Ledger.Shelley.Examples (
  LedgerExamples (..),
  examplePayKey,
  exampleStakeKey,
  exampleStakePoolParams,
  keyToCredential,
  mkKeyHash,
  mkScriptHash,
 )

ledgerExamples :: LedgerExamples DijkstraEra
ledgerExamples :: LedgerExamples DijkstraEra
ledgerExamples =
  ApplyTxError DijkstraEra
-> NewEpochState DijkstraEra
-> Tx TopTx DijkstraEra
-> TranslationContext DijkstraEra
-> LedgerExamples DijkstraEra
forall era.
AlonzoEraPParams era =>
ApplyTxError era
-> NewEpochState era
-> Tx TopTx era
-> TranslationContext era
-> LedgerExamples era
mkLedgerExamples
    ( NonEmpty (DijkstraMempoolPredFailure DijkstraEra)
-> ApplyTxError DijkstraEra
DijkstraApplyTxError (NonEmpty (DijkstraMempoolPredFailure DijkstraEra)
 -> ApplyTxError DijkstraEra)
-> NonEmpty (DijkstraMempoolPredFailure DijkstraEra)
-> ApplyTxError DijkstraEra
forall a b. (a -> b) -> a -> b
$
        DijkstraMempoolPredFailure DijkstraEra
-> NonEmpty (DijkstraMempoolPredFailure DijkstraEra)
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (DijkstraMempoolPredFailure DijkstraEra
 -> NonEmpty (DijkstraMempoolPredFailure DijkstraEra))
-> DijkstraMempoolPredFailure DijkstraEra
-> NonEmpty (DijkstraMempoolPredFailure DijkstraEra)
forall a b. (a -> b) -> a -> b
$
          forall sub super.
Embed sub super =>
PredicateFailure sub -> PredicateFailure super
wrapFailed @(DijkstraLEDGER DijkstraEra) @(DijkstraMEMPOOL DijkstraEra) (PredicateFailure (DijkstraLEDGER DijkstraEra)
 -> PredicateFailure (DijkstraMEMPOOL DijkstraEra))
-> PredicateFailure (DijkstraLEDGER DijkstraEra)
-> PredicateFailure (DijkstraMEMPOOL DijkstraEra)
forall a b. (a -> b) -> a -> b
$
            forall sub super.
Embed sub super =>
PredicateFailure sub -> PredicateFailure super
wrapFailed @(ConwayDELEG DijkstraEra) @(DijkstraLEDGER DijkstraEra) (PredicateFailure (ConwayDELEG DijkstraEra)
 -> PredicateFailure (DijkstraLEDGER DijkstraEra))
-> PredicateFailure (ConwayDELEG DijkstraEra)
-> PredicateFailure (DijkstraLEDGER DijkstraEra)
forall a b. (a -> b) -> a -> b
$
              KeyHash StakePool -> ConwayDelegPredFailure DijkstraEra
forall era. KeyHash StakePool -> ConwayDelegPredFailure era
DelegateeStakePoolNotRegisteredDELEG (Int -> KeyHash StakePool
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
1)
    )
    NewEpochState DijkstraEra
forall era.
(BabbageEraTest era, Value era ~ MaryValue) =>
NewEpochState era
exampleBabbageNewEpochState
    Tx TopTx DijkstraEra
exampleTxDijkstra
    TranslationContext DijkstraEra
DijkstraGenesis
exampleDijkstraGenesis

exampleTxDijkstra :: Tx TopTx DijkstraEra
exampleTxDijkstra :: Tx TopTx DijkstraEra
exampleTxDijkstra =
  TxBody TopTx DijkstraEra
-> PlutusPurpose AsIx DijkstraEra
-> NativeScript DijkstraEra
-> Tx TopTx DijkstraEra
forall era.
(AlonzoEraTx era, EraPlutusTxInfo 'PlutusV1 era,
 TxAuxData era ~ AlonzoTxAuxData era,
 Script era ~ AlonzoScript era) =>
TxBody TopTx era
-> PlutusPurpose AsIx era -> NativeScript era -> Tx TopTx era
exampleTx
    TxBody TopTx DijkstraEra
exampleTxBodyDijkstra
    (AsIx Word32 TxIn -> DijkstraPlutusPurpose AsIx DijkstraEra
forall (f :: * -> * -> *) era.
f Word32 TxIn -> DijkstraPlutusPurpose f era
DijkstraSpending (AsIx Word32 TxIn -> DijkstraPlutusPurpose AsIx DijkstraEra)
-> AsIx Word32 TxIn -> DijkstraPlutusPurpose AsIx DijkstraEra
forall a b. (a -> b) -> a -> b
$ Word32 -> AsIx Word32 TxIn
forall ix it. ix -> AsIx ix it
AsIx Word32
0)
    (StrictSeq (NativeScript DijkstraEra) -> NativeScript DijkstraEra
forall era.
ShelleyEraScript era =>
StrictSeq (NativeScript era) -> NativeScript era
RequireAllOf StrictSeq (NativeScript DijkstraEra)
StrictSeq (DijkstraNativeScript DijkstraEra)
forall a. Monoid a => a
mempty)

exampleTxBodyDijkstra :: TxBody TopTx DijkstraEra
exampleTxBodyDijkstra :: TxBody TopTx DijkstraEra
exampleTxBodyDijkstra =
  TxBody TopTx DijkstraEra
forall era (l :: TxLevel).
(EraTxBody era, Typeable l) =>
TxBody l era
forall (l :: TxLevel). Typeable l => TxBody l DijkstraEra
mkBasicTxBody
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) (Set TxIn)
inputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> Set TxIn -> TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [TxIn] -> Set TxIn
forall a. Ord a => [a] -> Set a
Set.fromList [HasCallStack => TxId -> Integer -> TxIn
TxId -> Integer -> TxIn
mkTxInPartial (SafeHash EraIndependentTxBody -> TxId
TxId (Int -> SafeHash EraIndependentTxBody
forall a. Int -> SafeHash a
mkDummySafeHash Int
1)) Integer
0]
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era.
AlonzoEraTxBody era =>
Lens' (TxBody TopTx era) (Set TxIn)
Lens' (TxBody TopTx DijkstraEra) (Set TxIn)
collateralInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> Set TxIn -> TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [TxIn] -> Set TxIn
forall a. Ord a => [a] -> Set a
Set.fromList [HasCallStack => TxId -> Integer -> TxIn
TxId -> Integer -> TxIn
mkTxInPartial (SafeHash EraIndependentTxBody -> TxId
TxId (Int -> SafeHash EraIndependentTxBody
forall a. Int -> SafeHash a
mkDummySafeHash Int
2)) Integer
1]
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (Set TxIn -> Identity (Set TxIn))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
BabbageEraTxBody era =>
Lens' (TxBody l era) (Set TxIn)
forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) (Set TxIn)
referenceInputsTxBodyL ((Set TxIn -> Identity (Set TxIn))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> Set TxIn -> TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [TxIn] -> Set TxIn
forall a. Ord a => [a] -> Set a
Set.fromList [HasCallStack => TxId -> Integer -> TxIn
TxId -> Integer -> TxIn
mkTxInPartial (SafeHash EraIndependentTxBody -> TxId
TxId (Int -> SafeHash EraIndependentTxBody
forall a. Int -> SafeHash a
mkDummySafeHash Int
1)) Integer
3]
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxOut DijkstraEra)
 -> Identity (StrictSeq (TxOut DijkstraEra)))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
(StrictSeq (BabbageTxOut DijkstraEra)
 -> Identity (StrictSeq (BabbageTxOut DijkstraEra)))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxOut era))
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictSeq (TxOut DijkstraEra))
outputsTxBodyL
      ((StrictSeq (BabbageTxOut DijkstraEra)
  -> Identity (StrictSeq (BabbageTxOut DijkstraEra)))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> StrictSeq (BabbageTxOut DijkstraEra)
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [BabbageTxOut DijkstraEra] -> StrictSeq (BabbageTxOut DijkstraEra)
forall a. [a] -> StrictSeq a
StrictSeq.fromList
        [ Addr -> Value DijkstraEra -> TxOut DijkstraEra
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 DijkstraEra
-> (TxOut DijkstraEra -> TxOut DijkstraEra) -> TxOut DijkstraEra
forall a b. a -> (a -> b) -> b
& (Datum DijkstraEra -> Identity (Datum DijkstraEra))
-> TxOut DijkstraEra -> Identity (TxOut DijkstraEra)
forall era. BabbageEraTxOut era => Lens' (TxOut era) (Datum era)
Lens' (TxOut DijkstraEra) (Datum DijkstraEra)
datumTxOutL ((Datum DijkstraEra -> Identity (Datum DijkstraEra))
 -> TxOut DijkstraEra -> Identity (TxOut DijkstraEra))
-> Datum DijkstraEra -> TxOut DijkstraEra -> TxOut DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ BinaryData DijkstraEra -> Datum DijkstraEra
forall era. BinaryData era -> Datum era
Datum (Data DijkstraEra -> BinaryData DijkstraEra
forall era. Data era -> BinaryData era
dataToBinaryData Data DijkstraEra
forall era. Era era => Data era
exampleDatum)
            TxOut DijkstraEra
-> (TxOut DijkstraEra -> BabbageTxOut DijkstraEra)
-> BabbageTxOut DijkstraEra
forall a b. a -> (a -> b) -> b
& (StrictMaybe (Script DijkstraEra)
 -> Identity (StrictMaybe (Script DijkstraEra)))
-> TxOut DijkstraEra -> Identity (TxOut DijkstraEra)
(StrictMaybe (Script DijkstraEra)
 -> Identity (StrictMaybe (Script DijkstraEra)))
-> TxOut DijkstraEra -> Identity (BabbageTxOut DijkstraEra)
forall era.
BabbageEraTxOut era =>
Lens' (TxOut era) (StrictMaybe (Script era))
Lens' (TxOut DijkstraEra) (StrictMaybe (Script DijkstraEra))
referenceScriptTxOutL ((StrictMaybe (Script DijkstraEra)
  -> Identity (StrictMaybe (Script DijkstraEra)))
 -> TxOut DijkstraEra -> Identity (BabbageTxOut DijkstraEra))
-> StrictMaybe (Script DijkstraEra)
-> TxOut DijkstraEra
-> BabbageTxOut DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Script DijkstraEra -> StrictMaybe (Script DijkstraEra)
forall a. a -> StrictMaybe a
SJust (forall (l :: Language) era.
(HasCallStack, EraPlutusTxInfo l era) =>
Natural -> Script era
alwaysSucceeds @'PlutusV2 Natural
3)
        ]
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (StrictMaybe (TxOut DijkstraEra)
 -> Identity (StrictMaybe (TxOut DijkstraEra)))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
(StrictMaybe (BabbageTxOut DijkstraEra)
 -> Identity (StrictMaybe (BabbageTxOut DijkstraEra)))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe (TxOut era))
Lens' (TxBody TopTx DijkstraEra) (StrictMaybe (TxOut DijkstraEra))
collateralReturnTxBodyL ((StrictMaybe (BabbageTxOut DijkstraEra)
  -> Identity (StrictMaybe (BabbageTxOut DijkstraEra)))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> StrictMaybe (BabbageTxOut DijkstraEra)
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ BabbageTxOut DijkstraEra -> StrictMaybe (BabbageTxOut DijkstraEra)
forall a. a -> StrictMaybe a
SJust TxOut DijkstraEra
BabbageTxOut DijkstraEra
forall era.
(BabbageEraTxOut era, Value era ~ MaryValue) =>
TxOut era
exampleCollateralOutput
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era.
BabbageEraTxBody era =>
Lens' (TxBody TopTx era) (StrictMaybe Coin)
Lens' (TxBody TopTx DijkstraEra) (StrictMaybe Coin)
totalCollateralTxBodyL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> StrictMaybe Coin
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
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
8675309)
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (StrictSeq (TxCert DijkstraEra)
 -> Identity (StrictSeq (TxCert DijkstraEra)))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
(StrictSeq (DijkstraTxCert DijkstraEra)
 -> Identity (StrictSeq (DijkstraTxCert DijkstraEra)))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictSeq (TxCert era))
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictSeq (TxCert DijkstraEra))
certsTxBodyL ((StrictSeq (DijkstraTxCert DijkstraEra)
  -> Identity (StrictSeq (DijkstraTxCert DijkstraEra)))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> StrictSeq (DijkstraTxCert DijkstraEra)
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictSeq (DijkstraTxCert DijkstraEra)
forall era. StrictSeq (DijkstraTxCert era)
exampleDijkstraCerts
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (Withdrawals -> Identity Withdrawals)
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) Withdrawals
forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) Withdrawals
withdrawalsTxBodyL
      ((Withdrawals -> Identity Withdrawals)
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> Withdrawals
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Map AccountAddress Coin -> Withdrawals
Withdrawals
        ( 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 (KeyPair Staking -> Credential Staking
forall (r :: KeyRole). KeyPair r -> Credential r
keyToCredential KeyPair Staking
exampleStakeKey)))
            (Integer -> Coin
Coin Integer
100)
        )
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin)
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era. EraTxBody era => Lens' (TxBody TopTx era) Coin
Lens' (TxBody TopTx DijkstraEra) Coin
feeTxBodyL ((Coin -> Identity Coin)
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> Coin -> TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Integer -> Coin
Coin Integer
999
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (ValidityInterval -> Identity ValidityInterval)
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
AllegraEraTxBody era =>
Lens' (TxBody l era) ValidityInterval
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) ValidityInterval
vldtTxBodyL ((ValidityInterval -> Identity ValidityInterval)
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> ValidityInterval
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ StrictMaybe SlotNo -> StrictMaybe SlotNo -> ValidityInterval
ValidityInterval (SlotNo -> StrictMaybe SlotNo
forall a. a -> StrictMaybe a
SJust (Word64 -> SlotNo
SlotNo Word64
2)) (SlotNo -> StrictMaybe SlotNo
forall a. a -> StrictMaybe a
SJust (Word64 -> SlotNo
SlotNo Word64
4))
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (OSet (Credential Guard) -> Identity (OSet (Credential Guard)))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) (OSet (Credential Guard))
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (OSet (Credential Guard))
guardsTxBodyL ((OSet (Credential Guard) -> Identity (OSet (Credential Guard)))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> OSet (Credential Guard)
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Credential Guard] -> OSet (Credential Guard)
forall a. Ord a => [a] -> OSet a
OSet.fromList [KeyHash Guard -> Credential Guard
forall (kr :: KeyRole). KeyHash kr -> Credential kr
KeyHashObj (KeyHash Guard -> Credential Guard)
-> KeyHash Guard -> Credential Guard
forall a b. (a -> b) -> a -> b
$ Int -> KeyHash Guard
forall (discriminator :: KeyRole). Int -> KeyHash discriminator
mkKeyHash Int
212, ScriptHash -> Credential Guard
forall (kr :: KeyRole). ScriptHash -> Credential kr
ScriptHashObj (ScriptHash -> Credential Guard) -> ScriptHash -> Credential Guard
forall a b. (a -> b) -> a -> b
$ Int -> ScriptHash
mkScriptHash Int
213]
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (MultiAsset -> Identity MultiAsset)
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
MaryEraTxBody era =>
Lens' (TxBody l era) MultiAsset
forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) MultiAsset
mintTxBodyL ((MultiAsset -> Identity MultiAsset)
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> MultiAsset
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ MultiAsset
exampleMultiAsset
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (StrictMaybe ScriptIntegrityHash
 -> Identity (StrictMaybe ScriptIntegrityHash))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
AlonzoEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe ScriptIntegrityHash)
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictMaybe ScriptIntegrityHash)
scriptIntegrityHashTxBodyL ((StrictMaybe ScriptIntegrityHash
  -> Identity (StrictMaybe ScriptIntegrityHash))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> StrictMaybe ScriptIntegrityHash
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ ScriptIntegrityHash -> StrictMaybe ScriptIntegrityHash
forall a. a -> StrictMaybe a
SJust (Int -> ScriptIntegrityHash
forall a. Int -> SafeHash a
mkDummySafeHash Int
42)
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (StrictMaybe TxAuxDataHash -> Identity (StrictMaybe TxAuxDataHash))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
EraTxBody era =>
Lens' (TxBody l era) (StrictMaybe TxAuxDataHash)
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictMaybe TxAuxDataHash)
auxDataHashTxBodyL ((StrictMaybe TxAuxDataHash
  -> Identity (StrictMaybe TxAuxDataHash))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> StrictMaybe TxAuxDataHash
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ TxAuxDataHash -> StrictMaybe TxAuxDataHash
forall a. a -> StrictMaybe a
SJust (SafeHash EraIndependentTxAuxData -> TxAuxDataHash
TxAuxDataHash (SafeHash EraIndependentTxAuxData -> TxAuxDataHash)
-> SafeHash EraIndependentTxAuxData -> TxAuxDataHash
forall a b. (a -> b) -> a -> b
$ Int -> SafeHash EraIndependentTxAuxData
forall a. Int -> SafeHash a
mkDummySafeHash Int
42)
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (StrictMaybe Network -> Identity (StrictMaybe Network))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
AlonzoEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe Network)
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictMaybe Network)
networkIdTxBodyL ((StrictMaybe Network -> Identity (StrictMaybe Network))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> StrictMaybe Network
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Network -> StrictMaybe Network
forall a. a -> StrictMaybe a
SJust Network
Mainnet
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (VotingProcedures DijkstraEra
 -> Identity (VotingProcedures DijkstraEra))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (VotingProcedures era)
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (VotingProcedures DijkstraEra)
votingProceduresTxBodyL ((VotingProcedures DijkstraEra
  -> Identity (VotingProcedures DijkstraEra))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> VotingProcedures DijkstraEra
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Map Voter (Map GovActionId (VotingProcedure DijkstraEra))
-> VotingProcedures DijkstraEra
forall era.
Map Voter (Map GovActionId (VotingProcedure era))
-> VotingProcedures era
VotingProcedures Map Voter (Map GovActionId (VotingProcedure DijkstraEra))
forall a. Monoid a => a
mempty
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (OSet (ProposalProcedure DijkstraEra)
 -> Identity (OSet (ProposalProcedure DijkstraEra)))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (OSet (ProposalProcedure era))
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (OSet (ProposalProcedure DijkstraEra))
proposalProceduresTxBodyL ((OSet (ProposalProcedure DijkstraEra)
  -> Identity (OSet (ProposalProcedure DijkstraEra)))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> OSet (ProposalProcedure DijkstraEra)
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ OSet (ProposalProcedure DijkstraEra)
forall a. Monoid a => a
mempty
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (StrictMaybe Coin -> Identity (StrictMaybe Coin))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) (StrictMaybe Coin)
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (StrictMaybe Coin)
currentTreasuryValueTxBodyL ((StrictMaybe Coin -> Identity (StrictMaybe Coin))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> StrictMaybe Coin
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
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 DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (Coin -> Identity Coin)
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
ConwayEraTxBody era =>
Lens' (TxBody l era) Coin
forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) Coin
treasuryDonationTxBodyL ((Coin -> Identity Coin)
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> Coin -> TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Coin
forall a. Monoid a => a
mempty
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (OMap TxId (Tx SubTx DijkstraEra)
 -> Identity (OMap TxId (Tx SubTx DijkstraEra)))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era.
DijkstraEraTxBody era =>
Lens' (TxBody TopTx era) (OMap TxId (Tx SubTx era))
Lens' (TxBody TopTx DijkstraEra) (OMap TxId (Tx SubTx DijkstraEra))
subTransactionsTxBodyL ((OMap TxId (Tx SubTx DijkstraEra)
  -> Identity (OMap TxId (Tx SubTx DijkstraEra)))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> OMap TxId (Tx SubTx DijkstraEra)
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ OMap TxId (Tx SubTx DijkstraEra)
forall a. Monoid a => a
mempty
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (DirectDeposits -> Identity DirectDeposits)
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) DirectDeposits
forall (l :: TxLevel). Lens' (TxBody l DijkstraEra) DirectDeposits
directDepositsTxBodyL ((DirectDeposits -> Identity DirectDeposits)
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> DirectDeposits
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Map AccountAddress Coin -> DirectDeposits
DirectDeposits Map AccountAddress Coin
forall a. Monoid a => a
mempty
    TxBody TopTx DijkstraEra
-> (TxBody TopTx DijkstraEra -> TxBody TopTx DijkstraEra)
-> TxBody TopTx DijkstraEra
forall a b. a -> (a -> b) -> b
& (AccountBalanceIntervals DijkstraEra
 -> Identity (AccountBalanceIntervals DijkstraEra))
-> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra)
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) (AccountBalanceIntervals era)
forall (l :: TxLevel).
Lens' (TxBody l DijkstraEra) (AccountBalanceIntervals DijkstraEra)
accountBalanceIntervalsTxBodyL ((AccountBalanceIntervals DijkstraEra
  -> Identity (AccountBalanceIntervals DijkstraEra))
 -> TxBody TopTx DijkstraEra -> Identity (TxBody TopTx DijkstraEra))
-> AccountBalanceIntervals DijkstraEra
-> TxBody TopTx DijkstraEra
-> TxBody TopTx DijkstraEra
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Map AccountId (AccountBalanceInterval DijkstraEra)
-> AccountBalanceIntervals DijkstraEra
forall era.
Map AccountId (AccountBalanceInterval era)
-> AccountBalanceIntervals era
AccountBalanceIntervals Map AccountId (AccountBalanceInterval DijkstraEra)
forall a. Monoid a => a
mempty
  where
    MaryValue Coin
_ MultiAsset
exampleMultiAsset = Int -> MaryValue
exampleMultiAssetValue Int
3

exampleDijkstraCerts :: StrictSeq.StrictSeq (DijkstraTxCert era)
exampleDijkstraCerts :: forall era. StrictSeq (DijkstraTxCert era)
exampleDijkstraCerts =
  [DijkstraTxCert era] -> StrictSeq (DijkstraTxCert era)
forall a. [a] -> StrictSeq a
StrictSeq.fromList -- TODO should I add the new certs here?
    [ PoolCert -> DijkstraTxCert era
forall era. PoolCert -> DijkstraTxCert era
DijkstraTxCertPool (StakePoolParams -> PoolCert
RegPool StakePoolParams
exampleStakePoolParams)
    ]