{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Test.Cardano.Ledger.Conformance.ExecSpecRule.Conway.Ledger (ConwayLedgerExecContext (..)) where

import Cardano.Ledger.BaseTypes (StrictMaybe)
import Cardano.Ledger.Binary (EncCBOR (..))
import Cardano.Ledger.Binary.Coders (Encode (..), encode, (!>))
import Cardano.Ledger.Conway (ConwayEra)
import Cardano.Ledger.Conway.Core (
  EraPParams (..),
  EraTx (..),
  EraTxAuxData (..),
  EraTxBody (..),
  EraTxOut (..),
  EraTxWits (..),
  ScriptHash,
  TxLevel (..),
 )
import Cardano.Ledger.Conway.Governance
import qualified Cardano.Ledger.Conway.Rules as Conway
import Cardano.Ledger.Shelley.LedgerState
import qualified Cardano.Ledger.Shelley.Rules as Shelley
import Control.State.Transition.Extended (TRC (..))
import Data.Bifunctor (Bifunctor (..))
import Data.Functor.Identity (Identity)
import qualified Data.Text as T
import GHC.Generics (Generic)
import Lens.Micro
import qualified MAlonzo.Code.Ledger.Conway.Foreign.API as Agda
import Test.Cardano.Ledger.Common (NFData, ToExpr)
import Test.Cardano.Ledger.Conformance.ExecSpecRule.Conway.Base (
  externalFunctions,
 )
import Test.Cardano.Ledger.Conformance.ExecSpecRule.Conway.Utxow ()
import Test.Cardano.Ledger.Conformance.ExecSpecRule.Core (
  ExecSpecRule (..),
  ExecSpecTopLevelRule (..),
  SpecTRC (..),
  runFromAgdaFunction,
 )
import Test.Cardano.Ledger.Conformance.SpecTranslate.Base (
  SpecTranslate (..),
  askSpecTransM,
  withCtxSpecTransM,
 )
import Test.Cardano.Ledger.Conformance.SpecTranslate.Conway ()
import Test.Cardano.Ledger.Constrained.Conway (UtxoExecContext (..))
import Test.Cardano.Ledger.Conway.Arbitrary ()
import Test.Cardano.Ledger.Shelley.Utils (runSTS)

data ConwayLedgerExecContext era
  = ConwayLedgerExecContext
  { forall era. ConwayLedgerExecContext era -> StrictMaybe ScriptHash
clecGuardrailsScriptHash :: StrictMaybe ScriptHash
  , forall era. ConwayLedgerExecContext era -> EnactState era
clecEnactState :: Conway.EnactState era
  , forall era. ConwayLedgerExecContext era -> UtxoExecContext era
clecUtxoExecContext :: UtxoExecContext era
  }
  deriving ((forall x.
 ConwayLedgerExecContext era -> Rep (ConwayLedgerExecContext era) x)
-> (forall x.
    Rep (ConwayLedgerExecContext era) x -> ConwayLedgerExecContext era)
-> Generic (ConwayLedgerExecContext era)
forall x.
Rep (ConwayLedgerExecContext era) x -> ConwayLedgerExecContext era
forall x.
ConwayLedgerExecContext era -> Rep (ConwayLedgerExecContext era) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall era x.
Rep (ConwayLedgerExecContext era) x -> ConwayLedgerExecContext era
forall era x.
ConwayLedgerExecContext era -> Rep (ConwayLedgerExecContext era) x
$cfrom :: forall era x.
ConwayLedgerExecContext era -> Rep (ConwayLedgerExecContext era) x
from :: forall x.
ConwayLedgerExecContext era -> Rep (ConwayLedgerExecContext era) x
$cto :: forall era x.
Rep (ConwayLedgerExecContext era) x -> ConwayLedgerExecContext era
to :: forall x.
Rep (ConwayLedgerExecContext era) x -> ConwayLedgerExecContext era
Generic)

instance
  ( EraPParams era
  , EraTx era
  , NFData (TxWits era)
  , NFData (TxAuxData era)
  , EraCertState era
  ) =>
  NFData (ConwayLedgerExecContext era)

instance
  ( EraTx era
  , ToExpr (Tx TopTx era)
  , ToExpr (TxOut era)
  , ToExpr (TxBody TopTx era)
  , ToExpr (TxWits era)
  , ToExpr (TxAuxData era)
  , ToExpr (PParamsHKD Identity era)
  , EraCertState era
  , ToExpr (CertState era)
  ) =>
  ToExpr (ConwayLedgerExecContext era)

instance
  ( EraPParams era
  , EraCertState era
  , EncCBOR (TxOut era)
  , EncCBOR (Tx TopTx era)
  ) =>
  EncCBOR (ConwayLedgerExecContext era)
  where
  encCBOR :: ConwayLedgerExecContext era -> Encoding
encCBOR ConwayLedgerExecContext {StrictMaybe ScriptHash
EnactState era
UtxoExecContext era
clecGuardrailsScriptHash :: forall era. ConwayLedgerExecContext era -> StrictMaybe ScriptHash
clecEnactState :: forall era. ConwayLedgerExecContext era -> EnactState era
clecUtxoExecContext :: forall era. ConwayLedgerExecContext era -> UtxoExecContext era
clecGuardrailsScriptHash :: StrictMaybe ScriptHash
clecEnactState :: EnactState era
clecUtxoExecContext :: UtxoExecContext era
..} =
    Encode (Closed Dense) (ConwayLedgerExecContext era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode (Closed Dense) (ConwayLedgerExecContext era) -> Encoding)
-> Encode (Closed Dense) (ConwayLedgerExecContext era) -> Encoding
forall a b. (a -> b) -> a -> b
$
      (StrictMaybe ScriptHash
 -> EnactState era
 -> UtxoExecContext era
 -> ConwayLedgerExecContext era)
-> Encode
     (Closed Dense)
     (StrictMaybe ScriptHash
      -> EnactState era
      -> UtxoExecContext era
      -> ConwayLedgerExecContext era)
forall t. t -> Encode (Closed Dense) t
Rec StrictMaybe ScriptHash
-> EnactState era
-> UtxoExecContext era
-> ConwayLedgerExecContext era
forall era.
StrictMaybe ScriptHash
-> EnactState era
-> UtxoExecContext era
-> ConwayLedgerExecContext era
ConwayLedgerExecContext
        Encode
  (Closed Dense)
  (StrictMaybe ScriptHash
   -> EnactState era
   -> UtxoExecContext era
   -> ConwayLedgerExecContext era)
-> Encode (Closed Dense) (StrictMaybe ScriptHash)
-> Encode
     (Closed Dense)
     (EnactState era
      -> UtxoExecContext era -> ConwayLedgerExecContext era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> StrictMaybe ScriptHash
-> Encode (Closed Dense) (StrictMaybe ScriptHash)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To StrictMaybe ScriptHash
clecGuardrailsScriptHash
        Encode
  (Closed Dense)
  (EnactState era
   -> UtxoExecContext era -> ConwayLedgerExecContext era)
-> Encode (Closed Dense) (EnactState era)
-> Encode
     (Closed Dense) (UtxoExecContext era -> ConwayLedgerExecContext era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> EnactState era -> Encode (Closed Dense) (EnactState era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To EnactState era
clecEnactState
        Encode
  (Closed Dense) (UtxoExecContext era -> ConwayLedgerExecContext era)
-> Encode (Closed Dense) (UtxoExecContext era)
-> Encode (Closed Dense) (ConwayLedgerExecContext era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> UtxoExecContext era -> Encode (Closed Dense) (UtxoExecContext era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To UtxoExecContext era
clecUtxoExecContext

instance ExecSpecRule "LEDGER" ConwayEra where
  type ExecContext "LEDGER" ConwayEra = ConwayLedgerExecContext ConwayEra

  translateInputs :: HasCallStack =>
TRC (EraRule "LEDGER" ConwayEra)
-> SpecTransM
     ConwayEra
     (ExecContext "LEDGER" ConwayEra)
     (SpecTRC "LEDGER" ConwayEra)
translateInputs (TRC (Environment (EraRule "LEDGER" ConwayEra)
env, State (EraRule "LEDGER" ConwayEra)
st, Signal (EraRule "LEDGER" ConwayEra)
sig)) = do
    ConwayLedgerExecContext {..} <- SpecTransM
  ConwayEra
  (ConwayLedgerExecContext ConwayEra)
  (ConwayLedgerExecContext ConwayEra)
forall era ctx. SpecTransM era ctx ctx
askSpecTransM
    agdaEnv <- withCtxSpecTransM (clecGuardrailsScriptHash, clecEnactState) $ toSpecRep env
    agdaSt <- withCtxSpecTransM () $ toSpecRep st
    agdaSig <- withCtxSpecTransM () $ toSpecRep sig
    pure $ SpecTRC agdaEnv agdaSt agdaSig

  runAgdaRule :: HasCallStack =>
SpecTRC "LEDGER" ConwayEra
-> Either Text (SpecState "LEDGER" ConwayEra)
runAgdaRule SpecTRC "LEDGER" ConwayEra
trc =
    let externalFunctions' :: ExternalFunctions
externalFunctions' = ExternalFunctions
externalFunctions {Agda.extValidPlutusScript = Agda.isValid (strcSignal trc)}
     in (SpecEnvironment "LEDGER" ConwayEra
 -> SpecState "LEDGER" ConwayEra
 -> SpecSignal "LEDGER" ConwayEra
 -> ComputationResult Text (SpecState "LEDGER" ConwayEra))
-> SpecTRC "LEDGER" ConwayEra
-> Either Text (SpecState "LEDGER" ConwayEra)
forall (rule :: Symbol) era.
(SpecEnvironment rule era
 -> SpecState rule era
 -> SpecSignal rule era
 -> ComputationResult Text (SpecState rule era))
-> SpecTRC rule era -> Either Text (SpecState rule era)
runFromAgdaFunction (ExternalFunctions
-> LEnv -> LState -> Tx -> T_HSComputationResult_110 Text LState
Agda.ledgerStep ExternalFunctions
externalFunctions') SpecTRC "LEDGER" ConwayEra
trc

  extraInfo :: HasCallStack =>
Globals
-> ExecContext "LEDGER" ConwayEra
-> TRC (EraRule "LEDGER" ConwayEra)
-> Either
     Text
     (State (EraRule "LEDGER" ConwayEra),
      [Event (EraRule "LEDGER" ConwayEra)])
-> Doc AnsiStyle
extraInfo Globals
globals ConwayLedgerExecContext {StrictMaybe ScriptHash
EnactState ConwayEra
UtxoExecContext ConwayEra
clecGuardrailsScriptHash :: forall era. ConwayLedgerExecContext era -> StrictMaybe ScriptHash
clecEnactState :: forall era. ConwayLedgerExecContext era -> EnactState era
clecUtxoExecContext :: forall era. ConwayLedgerExecContext era -> UtxoExecContext era
clecGuardrailsScriptHash :: StrictMaybe ScriptHash
clecEnactState :: EnactState ConwayEra
clecUtxoExecContext :: UtxoExecContext ConwayEra
..} (TRC (Shelley.LedgerEnv {Maybe EpochNo
PParams ConwayEra
ChainAccountState
TxIx
SlotNo
ledgerSlotNo :: SlotNo
ledgerEpochNo :: Maybe EpochNo
ledgerIx :: TxIx
ledgerPp :: PParams ConwayEra
ledgerAccount :: ChainAccountState
ledgerAccount :: forall era. LedgerEnv era -> ChainAccountState
ledgerPp :: forall era. LedgerEnv era -> PParams era
ledgerIx :: forall era. LedgerEnv era -> TxIx
ledgerEpochNo :: forall era. LedgerEnv era -> Maybe EpochNo
ledgerSlotNo :: forall era. LedgerEnv era -> SlotNo
..}, LedgerState {CertState ConwayEra
UTxOState ConwayEra
lsUTxOState :: UTxOState ConwayEra
lsCertState :: CertState ConwayEra
lsCertState :: forall era. LedgerState era -> CertState era
lsUTxOState :: forall era. LedgerState era -> UTxOState era
..}, Signal (EraRule "LEDGER" ConwayEra)
sig)) Either
  Text
  (State (EraRule "LEDGER" ConwayEra),
   [Event (EraRule "LEDGER" ConwayEra)])
_ =
    forall (rule :: Symbol) era.
(ExecSpecRule rule era, HasCallStack) =>
Globals
-> ExecContext rule era
-> TRC (EraRule rule era)
-> Either
     Text (State (EraRule rule era), [Event (EraRule rule era)])
-> Doc AnsiStyle
extraInfo @"UTXOW" @ConwayEra
      Globals
globals
      UtxoExecContext ConwayEra
ExecContext "UTXOW" ConwayEra
clecUtxoExecContext
      ((Environment (ConwayUTXOW ConwayEra),
 State (ConwayUTXOW ConwayEra), Signal (ConwayUTXOW ConwayEra))
-> TRC (ConwayUTXOW ConwayEra)
forall sts. (Environment sts, State sts, Signal sts) -> TRC sts
TRC (UtxoEnv ConwayEra
Environment (ConwayUTXOW ConwayEra)
utxoEnv, State (ConwayUTXOW ConwayEra)
UTxOState ConwayEra
lsUTxOState, Signal (EraRule "LEDGER" ConwayEra)
Signal (ConwayUTXOW ConwayEra)
sig))
      Either
  Text
  (State (EraRule "UTXOW" ConwayEra),
   [Event (EraRule "UTXOW" ConwayEra)])
stFinal
    where
      utxoEnv :: UtxoEnv ConwayEra
utxoEnv = SlotNo
-> PParams ConwayEra -> CertState ConwayEra -> UtxoEnv ConwayEra
forall era. SlotNo -> PParams era -> CertState era -> UtxoEnv era
Shelley.UtxoEnv SlotNo
ledgerSlotNo PParams ConwayEra
ledgerPp CertState ConwayEra
lsCertState
      stFinal :: Either
  Text
  (State (EraRule "UTXOW" ConwayEra),
   [Event (EraRule "UTXOW" ConwayEra)])
stFinal =
        (NonEmpty (PredicateFailure (EraRule "UTXOW" ConwayEra)) -> Text)
-> Either
     (NonEmpty (PredicateFailure (EraRule "UTXOW" ConwayEra)))
     (State (EraRule "UTXOW" ConwayEra),
      [Event (EraRule "UTXOW" ConwayEra)])
-> Either
     Text
     (State (EraRule "UTXOW" ConwayEra),
      [Event (EraRule "UTXOW" ConwayEra)])
forall a b c. (a -> b) -> Either a c -> Either b c
forall (p :: * -> * -> *) a b c.
Bifunctor p =>
(a -> b) -> p a c -> p b c
first (String -> Text
T.pack (String -> Text)
-> (NonEmpty (ConwayUtxowPredFailure ConwayEra) -> String)
-> NonEmpty (ConwayUtxowPredFailure ConwayEra)
-> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NonEmpty (ConwayUtxowPredFailure ConwayEra) -> String
forall a. Show a => a -> String
show) (Either
   (NonEmpty (PredicateFailure (EraRule "UTXOW" ConwayEra)))
   (State (EraRule "UTXOW" ConwayEra),
    [Event (EraRule "UTXOW" ConwayEra)])
 -> Either
      Text
      (State (EraRule "UTXOW" ConwayEra),
       [Event (EraRule "UTXOW" ConwayEra)]))
-> Either
     (NonEmpty (PredicateFailure (EraRule "UTXOW" ConwayEra)))
     (State (EraRule "UTXOW" ConwayEra),
      [Event (EraRule "UTXOW" ConwayEra)])
-> Either
     Text
     (State (EraRule "UTXOW" ConwayEra),
      [Event (EraRule "UTXOW" ConwayEra)])
forall a b. (a -> b) -> a -> b
$
          forall (rule :: Symbol) era.
(BaseM (EraRule rule era) ~ ShelleyBase, STS (EraRule rule era)) =>
Globals
-> Environment (EraRule rule era)
-> State (EraRule rule era)
-> Signal (EraRule rule era)
-> Either
     (NonEmpty (PredicateFailure (EraRule rule era)))
     (State (EraRule rule era), [Event (EraRule rule era)])
runSTS @"UTXOW" @ConwayEra Globals
globals UtxoEnv ConwayEra
Environment (EraRule "UTXOW" ConwayEra)
utxoEnv State (EraRule "UTXOW" ConwayEra)
UTxOState ConwayEra
lsUTxOState Signal (EraRule "UTXOW" ConwayEra)
Signal (EraRule "LEDGER" ConwayEra)
sig

instance ExecSpecTopLevelRule "LEDGER" ConwayEra where
  mkRuleExecContext :: Globals
-> TRC (EraRule "LEDGER" ConwayEra)
-> ExecContext "LEDGER" ConwayEra
mkRuleExecContext Globals
_ (TRC (Environment (EraRule "LEDGER" ConwayEra)
env, State (EraRule "LEDGER" ConwayEra)
state, Signal (EraRule "LEDGER" ConwayEra)
signal)) =
    ConwayLedgerExecContext
      { clecGuardrailsScriptHash :: StrictMaybe ScriptHash
clecGuardrailsScriptHash =
          State (EraRule "LEDGER" ConwayEra)
LedgerState ConwayEra
state LedgerState ConwayEra
-> Getting
     (StrictMaybe ScriptHash)
     (LedgerState ConwayEra)
     (StrictMaybe ScriptHash)
-> StrictMaybe ScriptHash
forall s a. s -> Getting a s a -> a
^. (UTxOState ConwayEra
 -> Const (StrictMaybe ScriptHash) (UTxOState ConwayEra))
-> LedgerState ConwayEra
-> Const (StrictMaybe ScriptHash) (LedgerState ConwayEra)
forall era (f :: * -> *).
Functor f =>
(UTxOState era -> f (UTxOState era))
-> LedgerState era -> f (LedgerState era)
lsUTxOStateL ((UTxOState ConwayEra
  -> Const (StrictMaybe ScriptHash) (UTxOState ConwayEra))
 -> LedgerState ConwayEra
 -> Const (StrictMaybe ScriptHash) (LedgerState ConwayEra))
-> ((StrictMaybe ScriptHash
     -> Const (StrictMaybe ScriptHash) (StrictMaybe ScriptHash))
    -> UTxOState ConwayEra
    -> Const (StrictMaybe ScriptHash) (UTxOState ConwayEra))
-> Getting
     (StrictMaybe ScriptHash)
     (LedgerState ConwayEra)
     (StrictMaybe ScriptHash)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (GovState ConwayEra
 -> Const (StrictMaybe ScriptHash) (GovState ConwayEra))
-> UTxOState ConwayEra
-> Const (StrictMaybe ScriptHash) (UTxOState ConwayEra)
(ConwayGovState ConwayEra
 -> Const (StrictMaybe ScriptHash) (ConwayGovState ConwayEra))
-> UTxOState ConwayEra
-> Const (StrictMaybe ScriptHash) (UTxOState ConwayEra)
forall era (f :: * -> *).
Functor f =>
(GovState era -> f (GovState era))
-> UTxOState era -> f (UTxOState era)
utxosGovStateL ((ConwayGovState ConwayEra
  -> Const (StrictMaybe ScriptHash) (ConwayGovState ConwayEra))
 -> UTxOState ConwayEra
 -> Const (StrictMaybe ScriptHash) (UTxOState ConwayEra))
-> ((StrictMaybe ScriptHash
     -> Const (StrictMaybe ScriptHash) (StrictMaybe ScriptHash))
    -> ConwayGovState ConwayEra
    -> Const (StrictMaybe ScriptHash) (ConwayGovState ConwayEra))
-> (StrictMaybe ScriptHash
    -> Const (StrictMaybe ScriptHash) (StrictMaybe ScriptHash))
-> UTxOState ConwayEra
-> Const (StrictMaybe ScriptHash) (UTxOState ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Constitution ConwayEra
 -> Const (StrictMaybe ScriptHash) (Constitution ConwayEra))
-> GovState ConwayEra
-> Const (StrictMaybe ScriptHash) (GovState ConwayEra)
(Constitution ConwayEra
 -> Const (StrictMaybe ScriptHash) (Constitution ConwayEra))
-> ConwayGovState ConwayEra
-> Const (StrictMaybe ScriptHash) (ConwayGovState ConwayEra)
forall era.
ConwayEraGov era =>
Lens' (GovState era) (Constitution era)
Lens' (GovState ConwayEra) (Constitution ConwayEra)
constitutionGovStateL ((Constitution ConwayEra
  -> Const (StrictMaybe ScriptHash) (Constitution ConwayEra))
 -> ConwayGovState ConwayEra
 -> Const (StrictMaybe ScriptHash) (ConwayGovState ConwayEra))
-> ((StrictMaybe ScriptHash
     -> Const (StrictMaybe ScriptHash) (StrictMaybe ScriptHash))
    -> Constitution ConwayEra
    -> Const (StrictMaybe ScriptHash) (Constitution ConwayEra))
-> (StrictMaybe ScriptHash
    -> Const (StrictMaybe ScriptHash) (StrictMaybe ScriptHash))
-> ConwayGovState ConwayEra
-> Const (StrictMaybe ScriptHash) (ConwayGovState ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe ScriptHash
 -> Const (StrictMaybe ScriptHash) (StrictMaybe ScriptHash))
-> Constitution ConwayEra
-> Const (StrictMaybe ScriptHash) (Constitution ConwayEra)
forall era (f :: * -> *).
Functor f =>
(StrictMaybe ScriptHash -> f (StrictMaybe ScriptHash))
-> Constitution era -> f (Constitution era)
constitutionGuardrailsScriptHashL
      , clecEnactState :: EnactState ConwayEra
clecEnactState = GovState ConwayEra -> EnactState ConwayEra
forall era. ConwayEraGov era => GovState era -> EnactState era
mkEnactState (GovState ConwayEra -> EnactState ConwayEra)
-> GovState ConwayEra -> EnactState ConwayEra
forall a b. (a -> b) -> a -> b
$ State (EraRule "LEDGER" ConwayEra)
LedgerState ConwayEra
state LedgerState ConwayEra
-> Getting
     (GovState ConwayEra) (LedgerState ConwayEra) (GovState ConwayEra)
-> GovState ConwayEra
forall s a. s -> Getting a s a -> a
^. (UTxOState ConwayEra
 -> Const (GovState ConwayEra) (UTxOState ConwayEra))
-> LedgerState ConwayEra
-> Const (GovState ConwayEra) (LedgerState ConwayEra)
forall era (f :: * -> *).
Functor f =>
(UTxOState era -> f (UTxOState era))
-> LedgerState era -> f (LedgerState era)
lsUTxOStateL ((UTxOState ConwayEra
  -> Const (GovState ConwayEra) (UTxOState ConwayEra))
 -> LedgerState ConwayEra
 -> Const (GovState ConwayEra) (LedgerState ConwayEra))
-> ((GovState ConwayEra
     -> Const (GovState ConwayEra) (GovState ConwayEra))
    -> UTxOState ConwayEra
    -> Const (GovState ConwayEra) (UTxOState ConwayEra))
-> Getting
     (GovState ConwayEra) (LedgerState ConwayEra) (GovState ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (GovState ConwayEra
 -> Const (GovState ConwayEra) (GovState ConwayEra))
-> UTxOState ConwayEra
-> Const (GovState ConwayEra) (UTxOState ConwayEra)
forall era (f :: * -> *).
Functor f =>
(GovState era -> f (GovState era))
-> UTxOState era -> f (UTxOState era)
utxosGovStateL
      , clecUtxoExecContext :: UtxoExecContext ConwayEra
clecUtxoExecContext =
          UtxoExecContext
            { uecTx :: Tx TopTx ConwayEra
uecTx = AlonzoStAnnTx TopTx ConwayEra
Signal (EraRule "LEDGER" ConwayEra)
signal AlonzoStAnnTx TopTx ConwayEra
-> Getting
     (Tx TopTx ConwayEra)
     (AlonzoStAnnTx TopTx ConwayEra)
     (Tx TopTx ConwayEra)
-> Tx TopTx ConwayEra
forall s a. s -> Getting a s a -> a
^. Getting
  (Tx TopTx ConwayEra) (StAnnTx TopTx ConwayEra) (Tx TopTx ConwayEra)
Getting
  (Tx TopTx ConwayEra)
  (AlonzoStAnnTx TopTx ConwayEra)
  (Tx TopTx ConwayEra)
forall era (l :: TxLevel).
EraTx era =>
SimpleGetter (StAnnTx l era) (Tx l era)
forall (l :: TxLevel).
SimpleGetter (StAnnTx l ConwayEra) (Tx l ConwayEra)
txStAnnTxG
            , uecUTxO :: UTxO ConwayEra
uecUTxO = State (EraRule "LEDGER" ConwayEra)
LedgerState ConwayEra
state LedgerState ConwayEra
-> Getting
     (UTxO ConwayEra) (LedgerState ConwayEra) (UTxO ConwayEra)
-> UTxO ConwayEra
forall s a. s -> Getting a s a -> a
^. Getting (UTxO ConwayEra) (LedgerState ConwayEra) (UTxO ConwayEra)
forall era. Lens' (LedgerState era) (UTxO era)
forall (t :: * -> *) era. CanSetUTxO t => Lens' (t era) (UTxO era)
utxoL
            , uecUtxoEnv :: UtxoEnv ConwayEra
uecUtxoEnv =
                Shelley.UtxoEnv
                  { ueSlot :: SlotNo
Shelley.ueSlot = LedgerEnv ConwayEra
Environment (EraRule "LEDGER" ConwayEra)
env LedgerEnv ConwayEra
-> Getting SlotNo (LedgerEnv ConwayEra) SlotNo -> SlotNo
forall s a. s -> Getting a s a -> a
^. Getting SlotNo (LedgerEnv ConwayEra) SlotNo
forall era (f :: * -> *).
Functor f =>
(SlotNo -> f SlotNo) -> LedgerEnv era -> f (LedgerEnv era)
Shelley.ledgerSlotNoL
                  , uePParams :: PParams ConwayEra
Shelley.uePParams = State (EraRule "LEDGER" ConwayEra)
LedgerState ConwayEra
state LedgerState ConwayEra
-> Getting
     (PParams ConwayEra) (LedgerState ConwayEra) (PParams ConwayEra)
-> PParams ConwayEra
forall s a. s -> Getting a s a -> a
^. (UTxOState ConwayEra
 -> Const (PParams ConwayEra) (UTxOState ConwayEra))
-> LedgerState ConwayEra
-> Const (PParams ConwayEra) (LedgerState ConwayEra)
forall era (f :: * -> *).
Functor f =>
(UTxOState era -> f (UTxOState era))
-> LedgerState era -> f (LedgerState era)
lsUTxOStateL ((UTxOState ConwayEra
  -> Const (PParams ConwayEra) (UTxOState ConwayEra))
 -> LedgerState ConwayEra
 -> Const (PParams ConwayEra) (LedgerState ConwayEra))
-> ((PParams ConwayEra
     -> Const (PParams ConwayEra) (PParams ConwayEra))
    -> UTxOState ConwayEra
    -> Const (PParams ConwayEra) (UTxOState ConwayEra))
-> Getting
     (PParams ConwayEra) (LedgerState ConwayEra) (PParams ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (GovState ConwayEra
 -> Const (PParams ConwayEra) (GovState ConwayEra))
-> UTxOState ConwayEra
-> Const (PParams ConwayEra) (UTxOState ConwayEra)
(ConwayGovState ConwayEra
 -> Const (PParams ConwayEra) (ConwayGovState ConwayEra))
-> UTxOState ConwayEra
-> Const (PParams ConwayEra) (UTxOState ConwayEra)
forall era (f :: * -> *).
Functor f =>
(GovState era -> f (GovState era))
-> UTxOState era -> f (UTxOState era)
utxosGovStateL ((ConwayGovState ConwayEra
  -> Const (PParams ConwayEra) (ConwayGovState ConwayEra))
 -> UTxOState ConwayEra
 -> Const (PParams ConwayEra) (UTxOState ConwayEra))
-> ((PParams ConwayEra
     -> Const (PParams ConwayEra) (PParams ConwayEra))
    -> ConwayGovState ConwayEra
    -> Const (PParams ConwayEra) (ConwayGovState ConwayEra))
-> (PParams ConwayEra
    -> Const (PParams ConwayEra) (PParams ConwayEra))
-> UTxOState ConwayEra
-> Const (PParams ConwayEra) (UTxOState ConwayEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (PParams ConwayEra
 -> Const (PParams ConwayEra) (PParams ConwayEra))
-> GovState ConwayEra
-> Const (PParams ConwayEra) (GovState ConwayEra)
(PParams ConwayEra
 -> Const (PParams ConwayEra) (PParams ConwayEra))
-> ConwayGovState ConwayEra
-> Const (PParams ConwayEra) (ConwayGovState ConwayEra)
forall era. EraGov era => Lens' (GovState era) (PParams era)
Lens' (GovState ConwayEra) (PParams ConwayEra)
curPParamsGovStateL
                  , ueCertState :: CertState ConwayEra
Shelley.ueCertState = State (EraRule "LEDGER" ConwayEra)
LedgerState ConwayEra
state LedgerState ConwayEra
-> Getting
     (ConwayCertState ConwayEra)
     (LedgerState ConwayEra)
     (ConwayCertState ConwayEra)
-> ConwayCertState ConwayEra
forall s a. s -> Getting a s a -> a
^. (CertState ConwayEra
 -> Const (ConwayCertState ConwayEra) (CertState ConwayEra))
-> LedgerState ConwayEra
-> Const (ConwayCertState ConwayEra) (LedgerState ConwayEra)
Getting
  (ConwayCertState ConwayEra)
  (LedgerState ConwayEra)
  (ConwayCertState ConwayEra)
forall era (f :: * -> *).
Functor f =>
(CertState era -> f (CertState era))
-> LedgerState era -> f (LedgerState era)
lsCertStateL
                  }
            }
      }