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

module Test.Cardano.Ledger.Dijkstra.TreeDiff (
  module Test.Cardano.Ledger.Conway.TreeDiff,
) where

import Cardano.Ledger.BaseTypes (StrictMaybe)
import Cardano.Ledger.Dijkstra (DijkstraEra)
import Cardano.Ledger.Dijkstra.Core (
  AlonzoEraScript (..),
  AsItem,
  AsIx,
  Era,
  EraPParams (..),
  EraRule,
  EraTx (..),
  EraTxBody (..),
  EraTxCert (..),
  EraTxOut (..),
  PlutusScript,
  Value,
 )
import Cardano.Ledger.Dijkstra.PParams (DijkstraPParams)
import Cardano.Ledger.Dijkstra.Rules (
  DijkstraGovCertPredFailure,
  DijkstraGovPredFailure,
  DijkstraLedgerPredFailure,
  DijkstraUtxoPredFailure,
  DijkstraUtxowPredFailure,
 )
import Cardano.Ledger.Dijkstra.Scripts (
  DijkstraNativeScript,
  DijkstraNativeScriptRaw,
  DijkstraPlutusPurpose,
 )
import Cardano.Ledger.Dijkstra.Tx (DijkstraTx (..), Tx (..))
import Cardano.Ledger.Dijkstra.TxBody (DijkstraTxBodyRaw (..))
import Cardano.Ledger.Dijkstra.TxCert
import Cardano.Ledger.Dijkstra.TxInfo (DijkstraContextError)
import Control.State.Transition (
  STS (..),
 )
import Data.Functor.Identity (Identity)
import qualified Data.TreeDiff.OMap as OMap
import Test.Cardano.Ledger.Conway.TreeDiff (Expr (..), ToExpr)
import Test.Cardano.Ledger.TreeDiff (ToExpr (..))

instance
  (forall a b. (ToExpr a, ToExpr b) => ToExpr (f a b)) =>
  ToExpr (DijkstraPlutusPurpose f DijkstraEra)

instance ToExpr (PlutusScript DijkstraEra)

instance ToExpr (DijkstraNativeScript era)

instance ToExpr (DijkstraNativeScriptRaw era)

instance ToExpr (DijkstraPParams Identity DijkstraEra)

instance ToExpr (DijkstraPParams StrictMaybe DijkstraEra)

instance ToExpr (DijkstraTxBodyRaw l DijkstraEra) where
  toExpr :: DijkstraTxBodyRaw l DijkstraEra -> Expr
toExpr = \case
    txBody :: DijkstraTxBodyRaw l DijkstraEra
txBody@(DijkstraTxBodyRaw 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)
_) ->
      let DijkstraTxBodyRaw {OMap TxId (Tx SubTx DijkstraEra)
OSet (TxCert DijkstraEra)
OSet (ProposalProcedure DijkstraEra)
OSet (Credential Guard)
OSet (DijkstraTxCert DijkstraEra)
Set TxIn
StrictMaybe ScriptIntegrityHash
StrictMaybe TxAuxDataHash
StrictMaybe (Sized (TxOut DijkstraEra))
StrictMaybe (Sized (BabbageTxOut DijkstraEra))
StrictMaybe Coin
StrictMaybe Network
ValidityInterval
Withdrawals
VotingProcedures DijkstraEra
Coin
MultiAsset
StrictSeq (Sized (TxOut DijkstraEra))
StrictSeq (Sized (BabbageTxOut DijkstraEra))
dtbrSpendInputs :: Set TxIn
dtbrCollateralInputs :: Set TxIn
dtbrReferenceInputs :: Set TxIn
dtbrOutputs :: StrictSeq (Sized (BabbageTxOut DijkstraEra))
dtbrCollateralReturn :: StrictMaybe (Sized (BabbageTxOut DijkstraEra))
dtbrTotalCollateral :: StrictMaybe Coin
dtbrCerts :: OSet (DijkstraTxCert DijkstraEra)
dtbrWithdrawals :: Withdrawals
dtbrFee :: Coin
dtbrVldt :: ValidityInterval
dtbrGuards :: OSet (Credential Guard)
dtbrMint :: MultiAsset
dtbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
dtbrAuxDataHash :: StrictMaybe TxAuxDataHash
dtbrNetworkId :: StrictMaybe Network
dtbrVotingProcedures :: VotingProcedures DijkstraEra
dtbrProposalProcedures :: OSet (ProposalProcedure DijkstraEra)
dtbrCurrentTreasuryValue :: StrictMaybe Coin
dtbrTreasuryDonation :: Coin
dtbrSubTransactions :: OMap TxId (Tx SubTx DijkstraEra)
dtbrSubTransactions :: forall era. DijkstraTxBodyRaw TopTx era -> OMap TxId (Tx SubTx era)
dtbrTreasuryDonation :: forall era. DijkstraTxBodyRaw TopTx era -> Coin
dtbrCurrentTreasuryValue :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
dtbrProposalProcedures :: forall era.
DijkstraTxBodyRaw TopTx era -> OSet (ProposalProcedure era)
dtbrVotingProcedures :: forall era. DijkstraTxBodyRaw TopTx era -> VotingProcedures era
dtbrNetworkId :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Network
dtbrAuxDataHash :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe TxAuxDataHash
dtbrScriptIntegrityHash :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe ScriptIntegrityHash
dtbrMint :: forall era. DijkstraTxBodyRaw TopTx era -> MultiAsset
dtbrGuards :: forall era. DijkstraTxBodyRaw TopTx era -> OSet (Credential Guard)
dtbrVldt :: forall era. DijkstraTxBodyRaw TopTx era -> ValidityInterval
dtbrFee :: forall era. DijkstraTxBodyRaw TopTx era -> Coin
dtbrWithdrawals :: forall era. DijkstraTxBodyRaw TopTx era -> Withdrawals
dtbrCerts :: forall era. DijkstraTxBodyRaw TopTx era -> OSet (TxCert era)
dtbrTotalCollateral :: forall era. DijkstraTxBodyRaw TopTx era -> StrictMaybe Coin
dtbrCollateralReturn :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictMaybe (Sized (TxOut era))
dtbrOutputs :: forall era.
DijkstraTxBodyRaw TopTx era -> StrictSeq (Sized (TxOut era))
dtbrReferenceInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrCollateralInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
dtbrSpendInputs :: forall era. DijkstraTxBodyRaw TopTx era -> Set TxIn
..} = DijkstraTxBodyRaw l DijkstraEra
txBody
       in FieldName -> OMap FieldName Expr -> Expr
Rec FieldName
"DijkstraTxBodyRaw" (OMap FieldName Expr -> Expr) -> OMap FieldName Expr -> Expr
forall a b. (a -> b) -> a -> b
$
            [(FieldName, Expr)] -> OMap FieldName Expr
forall k v. Ord k => [(k, v)] -> OMap k v
OMap.fromList
              [ (FieldName
"dtbrSpendInputs", Set TxIn -> Expr
forall a. ToExpr a => a -> Expr
toExpr Set TxIn
dtbrSpendInputs)
              , (FieldName
"dtbrCollateralInputs", Set TxIn -> Expr
forall a. ToExpr a => a -> Expr
toExpr Set TxIn
dtbrCollateralInputs)
              , (FieldName
"dtbrReferenceInputs", Set TxIn -> Expr
forall a. ToExpr a => a -> Expr
toExpr Set TxIn
dtbrReferenceInputs)
              , (FieldName
"dtbrOutputs", StrictSeq (Sized (BabbageTxOut DijkstraEra)) -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictSeq (Sized (BabbageTxOut DijkstraEra))
dtbrOutputs)
              , (FieldName
"dtbrCollateralReturn", StrictMaybe (Sized (BabbageTxOut DijkstraEra)) -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe (Sized (BabbageTxOut DijkstraEra))
dtbrCollateralReturn)
              , (FieldName
"dtbrTotalCollateral", StrictMaybe Coin -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe Coin
dtbrTotalCollateral)
              , (FieldName
"dtbrCerts", OSet (DijkstraTxCert DijkstraEra) -> Expr
forall a. ToExpr a => a -> Expr
toExpr OSet (DijkstraTxCert DijkstraEra)
dtbrCerts)
              , (FieldName
"dtbrWithdrawals", Withdrawals -> Expr
forall a. ToExpr a => a -> Expr
toExpr Withdrawals
dtbrWithdrawals)
              , (FieldName
"dtbrFee", Coin -> Expr
forall a. ToExpr a => a -> Expr
toExpr Coin
dtbrFee)
              , (FieldName
"dtbrVldt", ValidityInterval -> Expr
forall a. ToExpr a => a -> Expr
toExpr ValidityInterval
dtbrVldt)
              , (FieldName
"dtbrGuards", OSet (Credential Guard) -> Expr
forall a. ToExpr a => a -> Expr
toExpr OSet (Credential Guard)
dtbrGuards)
              , (FieldName
"dtbrMint", MultiAsset -> Expr
forall a. ToExpr a => a -> Expr
toExpr MultiAsset
dtbrMint)
              , (FieldName
"dtbrScriptIntegrityHash", StrictMaybe ScriptIntegrityHash -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe ScriptIntegrityHash
dtbrScriptIntegrityHash)
              , (FieldName
"dtbrAuxDataHash", StrictMaybe TxAuxDataHash -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe TxAuxDataHash
dtbrAuxDataHash)
              , (FieldName
"dtbrNetworkId", StrictMaybe Network -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe Network
dtbrNetworkId)
              , (FieldName
"dtbrVotingProcedures", VotingProcedures DijkstraEra -> Expr
forall a. ToExpr a => a -> Expr
toExpr VotingProcedures DijkstraEra
dtbrVotingProcedures)
              , (FieldName
"dtbrProposalProcedures", OSet (ProposalProcedure DijkstraEra) -> Expr
forall a. ToExpr a => a -> Expr
toExpr OSet (ProposalProcedure DijkstraEra)
dtbrProposalProcedures)
              , (FieldName
"dtbrCurrentTreasuryValue", StrictMaybe Coin -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe Coin
dtbrCurrentTreasuryValue)
              , (FieldName
"dtbrTreasuryDonation", Coin -> Expr
forall a. ToExpr a => a -> Expr
toExpr Coin
dtbrTreasuryDonation)
              , (FieldName
"dtbrSubTransactions", OMap TxId (Tx SubTx DijkstraEra) -> Expr
forall a. ToExpr a => a -> Expr
toExpr OMap TxId (Tx SubTx DijkstraEra)
dtbrSubTransactions)
              ]
    txBody :: DijkstraTxBodyRaw l DijkstraEra
txBody@(DijkstraSubTxBodyRaw 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))
_) ->
      let DijkstraSubTxBodyRaw {Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
OSet (TxCert DijkstraEra)
OSet (ProposalProcedure DijkstraEra)
OSet (Credential Guard)
OSet (DijkstraTxCert DijkstraEra)
Set TxIn
StrictMaybe ScriptIntegrityHash
StrictMaybe TxAuxDataHash
StrictMaybe Coin
StrictMaybe Network
ValidityInterval
Withdrawals
VotingProcedures DijkstraEra
Coin
MultiAsset
StrictSeq (Sized (TxOut DijkstraEra))
StrictSeq (Sized (BabbageTxOut DijkstraEra))
dstbrSpendInputs :: Set TxIn
dstbrReferenceInputs :: Set TxIn
dstbrOutputs :: StrictSeq (Sized (BabbageTxOut DijkstraEra))
dstbrCerts :: OSet (DijkstraTxCert DijkstraEra)
dstbrWithdrawals :: Withdrawals
dstbrVldt :: ValidityInterval
dstbrGuards :: OSet (Credential Guard)
dstbrMint :: MultiAsset
dstbrScriptIntegrityHash :: StrictMaybe ScriptIntegrityHash
dstbrAuxDataHash :: StrictMaybe TxAuxDataHash
dstbrNetworkId :: StrictMaybe Network
dstbrVotingProcedures :: VotingProcedures DijkstraEra
dstbrProposalProcedures :: OSet (ProposalProcedure DijkstraEra)
dstbrCurrentTreasuryValue :: StrictMaybe Coin
dstbrTreasuryDonation :: Coin
dstbrRequiredTopLevelGuards :: Map (Credential Guard) (StrictMaybe (Data DijkstraEra))
dstbrRequiredTopLevelGuards :: forall era.
DijkstraTxBodyRaw SubTx era
-> Map (Credential Guard) (StrictMaybe (Data era))
dstbrTreasuryDonation :: forall era. DijkstraTxBodyRaw SubTx era -> Coin
dstbrCurrentTreasuryValue :: forall era. DijkstraTxBodyRaw SubTx era -> StrictMaybe Coin
dstbrProposalProcedures :: forall era.
DijkstraTxBodyRaw SubTx era -> OSet (ProposalProcedure era)
dstbrVotingProcedures :: forall era. DijkstraTxBodyRaw SubTx era -> VotingProcedures era
dstbrNetworkId :: forall era. DijkstraTxBodyRaw SubTx era -> StrictMaybe Network
dstbrAuxDataHash :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictMaybe TxAuxDataHash
dstbrScriptIntegrityHash :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictMaybe ScriptIntegrityHash
dstbrMint :: forall era. DijkstraTxBodyRaw SubTx era -> MultiAsset
dstbrGuards :: forall era. DijkstraTxBodyRaw SubTx era -> OSet (Credential Guard)
dstbrVldt :: forall era. DijkstraTxBodyRaw SubTx era -> ValidityInterval
dstbrWithdrawals :: forall era. DijkstraTxBodyRaw SubTx era -> Withdrawals
dstbrCerts :: forall era. DijkstraTxBodyRaw SubTx era -> OSet (TxCert era)
dstbrOutputs :: forall era.
DijkstraTxBodyRaw SubTx era -> StrictSeq (Sized (TxOut era))
dstbrReferenceInputs :: forall era. DijkstraTxBodyRaw SubTx era -> Set TxIn
dstbrSpendInputs :: forall era. DijkstraTxBodyRaw SubTx era -> Set TxIn
..} = DijkstraTxBodyRaw l DijkstraEra
txBody
       in FieldName -> OMap FieldName Expr -> Expr
Rec FieldName
"DijkstraSubTxBodyRaw" (OMap FieldName Expr -> Expr) -> OMap FieldName Expr -> Expr
forall a b. (a -> b) -> a -> b
$
            [(FieldName, Expr)] -> OMap FieldName Expr
forall k v. Ord k => [(k, v)] -> OMap k v
OMap.fromList
              [ (FieldName
"dstbrSpendInputs", Set TxIn -> Expr
forall a. ToExpr a => a -> Expr
toExpr Set TxIn
dstbrSpendInputs)
              , (FieldName
"dstbrReferenceInputs", Set TxIn -> Expr
forall a. ToExpr a => a -> Expr
toExpr Set TxIn
dstbrReferenceInputs)
              , (FieldName
"dstbrOutputs", StrictSeq (Sized (BabbageTxOut DijkstraEra)) -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictSeq (Sized (BabbageTxOut DijkstraEra))
dstbrOutputs)
              , (FieldName
"dstbrCerts", OSet (DijkstraTxCert DijkstraEra) -> Expr
forall a. ToExpr a => a -> Expr
toExpr OSet (DijkstraTxCert DijkstraEra)
dstbrCerts)
              , (FieldName
"dstbrWithdrawals", Withdrawals -> Expr
forall a. ToExpr a => a -> Expr
toExpr Withdrawals
dstbrWithdrawals)
              , (FieldName
"dstbrVldt", ValidityInterval -> Expr
forall a. ToExpr a => a -> Expr
toExpr ValidityInterval
dstbrVldt)
              , (FieldName
"dstbrGuards", OSet (Credential Guard) -> Expr
forall a. ToExpr a => a -> Expr
toExpr OSet (Credential Guard)
dstbrGuards)
              , (FieldName
"dstbrMint", MultiAsset -> Expr
forall a. ToExpr a => a -> Expr
toExpr MultiAsset
dstbrMint)
              , (FieldName
"dstbrScriptIntegrityHash", StrictMaybe ScriptIntegrityHash -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe ScriptIntegrityHash
dstbrScriptIntegrityHash)
              , (FieldName
"dstbrAuxDataHash", StrictMaybe TxAuxDataHash -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe TxAuxDataHash
dstbrAuxDataHash)
              , (FieldName
"dstbrNetworkId", StrictMaybe Network -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe Network
dstbrNetworkId)
              , (FieldName
"dstbrVotingProcedures", VotingProcedures DijkstraEra -> Expr
forall a. ToExpr a => a -> Expr
toExpr VotingProcedures DijkstraEra
dstbrVotingProcedures)
              , (FieldName
"dstbrProposalProcedures", OSet (ProposalProcedure DijkstraEra) -> Expr
forall a. ToExpr a => a -> Expr
toExpr OSet (ProposalProcedure DijkstraEra)
dstbrProposalProcedures)
              , (FieldName
"dstbrCurrentTreasuryValue", StrictMaybe Coin -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe Coin
dstbrCurrentTreasuryValue)
              , (FieldName
"dstbrTreasuryDonation", Coin -> Expr
forall a. ToExpr a => a -> Expr
toExpr Coin
dstbrTreasuryDonation)
              , (FieldName
"dstbrRequiredTopLevelGuards", Coin -> Expr
forall a. ToExpr a => a -> Expr
toExpr Coin
dstbrTreasuryDonation)
              ]

instance ToExpr (TxBody l DijkstraEra)

instance ToExpr (DijkstraTx l DijkstraEra) where
  toExpr :: DijkstraTx l DijkstraEra -> Expr
toExpr = \case
    txBody :: DijkstraTx l DijkstraEra
txBody@(DijkstraTx TxBody TopTx DijkstraEra
_ TxWits DijkstraEra
_ IsValid
_ StrictMaybe (TxAuxData DijkstraEra)
_) ->
      let DijkstraTx {StrictMaybe (TxAuxData DijkstraEra)
StrictMaybe (AlonzoTxAuxData DijkstraEra)
TxBody TopTx DijkstraEra
TxWits DijkstraEra
AlonzoTxWits DijkstraEra
IsValid
dtBody :: TxBody TopTx DijkstraEra
dtWits :: AlonzoTxWits DijkstraEra
dtIsValid :: IsValid
dtAuxData :: StrictMaybe (AlonzoTxAuxData DijkstraEra)
dtAuxData :: forall era. DijkstraTx TopTx era -> StrictMaybe (TxAuxData era)
dtIsValid :: forall era. DijkstraTx TopTx era -> IsValid
dtWits :: forall era. DijkstraTx TopTx era -> TxWits era
dtBody :: forall era. DijkstraTx TopTx era -> TxBody TopTx era
..} = DijkstraTx l DijkstraEra
txBody
       in FieldName -> OMap FieldName Expr -> Expr
Rec FieldName
"DijkstraTx" (OMap FieldName Expr -> Expr) -> OMap FieldName Expr -> Expr
forall a b. (a -> b) -> a -> b
$
            [(FieldName, Expr)] -> OMap FieldName Expr
forall k v. Ord k => [(k, v)] -> OMap k v
OMap.fromList
              [ (FieldName
"dtBody", TxBody TopTx DijkstraEra -> Expr
forall a. ToExpr a => a -> Expr
toExpr TxBody TopTx DijkstraEra
dtBody)
              , (FieldName
"dtWits", AlonzoTxWits DijkstraEra -> Expr
forall a. ToExpr a => a -> Expr
toExpr AlonzoTxWits DijkstraEra
dtWits)
              , (FieldName
"dtIsValid", IsValid -> Expr
forall a. ToExpr a => a -> Expr
toExpr IsValid
dtIsValid)
              , (FieldName
"dtAuxData", StrictMaybe (AlonzoTxAuxData DijkstraEra) -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe (AlonzoTxAuxData DijkstraEra)
dtAuxData)
              ]
    txBody :: DijkstraTx l DijkstraEra
txBody@(DijkstraSubTx TxBody SubTx DijkstraEra
_ TxWits DijkstraEra
_ StrictMaybe (TxAuxData DijkstraEra)
_) ->
      let DijkstraSubTx {StrictMaybe (TxAuxData DijkstraEra)
StrictMaybe (AlonzoTxAuxData DijkstraEra)
TxBody SubTx DijkstraEra
TxWits DijkstraEra
AlonzoTxWits DijkstraEra
dstBody :: TxBody SubTx DijkstraEra
dstWits :: AlonzoTxWits DijkstraEra
dstAuxData :: StrictMaybe (AlonzoTxAuxData DijkstraEra)
dstAuxData :: forall era. DijkstraTx SubTx era -> StrictMaybe (TxAuxData era)
dstWits :: forall era. DijkstraTx SubTx era -> TxWits era
dstBody :: forall era. DijkstraTx SubTx era -> TxBody SubTx era
..} = DijkstraTx l DijkstraEra
txBody
       in FieldName -> OMap FieldName Expr -> Expr
Rec FieldName
"DijkstraSubTx" (OMap FieldName Expr -> Expr) -> OMap FieldName Expr -> Expr
forall a b. (a -> b) -> a -> b
$
            [(FieldName, Expr)] -> OMap FieldName Expr
forall k v. Ord k => [(k, v)] -> OMap k v
OMap.fromList
              [ (FieldName
"dstBody", TxBody SubTx DijkstraEra -> Expr
forall a. ToExpr a => a -> Expr
toExpr TxBody SubTx DijkstraEra
dstBody)
              , (FieldName
"dstWits", AlonzoTxWits DijkstraEra -> Expr
forall a. ToExpr a => a -> Expr
toExpr AlonzoTxWits DijkstraEra
dstWits)
              , (FieldName
"dstAuxData", StrictMaybe (AlonzoTxAuxData DijkstraEra) -> Expr
forall a. ToExpr a => a -> Expr
toExpr StrictMaybe (AlonzoTxAuxData DijkstraEra)
dstAuxData)
              ]

deriving newtype instance ToExpr (Tx l DijkstraEra)

instance ToExpr DijkstraDelegCert

instance ToExpr (DijkstraTxCert era)

instance
  ( Era era
  , ToExpr (PParamsHKD StrictMaybe era)
  , ToExpr (PlutusPurpose AsIx era)
  , ToExpr (PlutusPurpose AsItem era)
  , ToExpr (TxCert era)
  , ToExpr (TxOut era)
  ) =>
  ToExpr (DijkstraContextError era)

instance
  ( Era era
  , ToExpr (PredicateFailure (EraRule "UTXO" era))
  , ToExpr (PlutusPurpose AsIx era)
  , ToExpr (PlutusPurpose AsItem era)
  , ToExpr (TxCert era)
  ) =>
  ToExpr (DijkstraUtxowPredFailure era)

instance
  ( ToExpr (PredicateFailure (EraRule "UTXOW" era))
  , ToExpr (PredicateFailure (EraRule "GOV" era))
  , ToExpr (PredicateFailure (EraRule "CERTS" era))
  ) =>
  ToExpr (DijkstraLedgerPredFailure era)

instance
  ( ToExpr (Value era)
  , ToExpr (TxOut era)
  , ToExpr (PredicateFailure (EraRule "UTXOS" era))
  ) =>
  ToExpr (DijkstraUtxoPredFailure era)

instance
  (EraPParams era, ToExpr (PParamsHKD StrictMaybe era)) =>
  ToExpr (DijkstraGovPredFailure era)

instance ToExpr (DijkstraGovCertPredFailure era)