{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}

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

import Cardano.Ledger.Conway (ConwayEra)
import Cardano.Ledger.Conway.Governance (EnactState)
import Constrained.API ()
import qualified MAlonzo.Code.Ledger.Foreign.API as Agda
import Test.Cardano.Ledger.Conformance (
  ExecSpecRule (..),
  unComputationResult,
 )
import Test.Cardano.Ledger.Conformance.SpecTranslate.Conway ()

instance ExecSpecRule "LEDGERS" ConwayEra where
  type ExecContext "LEDGERS" ConwayEra = EnactState ConwayEra

  environmentSpec :: HasCallStack =>
ExecContext "LEDGERS" ConwayEra
-> Specification (ExecEnvironment "LEDGERS" ConwayEra)
environmentSpec ExecContext "LEDGERS" ConwayEra
_ = Specification (ShelleyLedgersEnv ConwayEra)
Specification (ExecEnvironment "LEDGERS" ConwayEra)
forall a. Monoid a => a
mempty
  stateSpec :: HasCallStack =>
ExecContext "LEDGERS" ConwayEra
-> ExecEnvironment "LEDGERS" ConwayEra
-> Specification (ExecState "LEDGERS" ConwayEra)
stateSpec ExecContext "LEDGERS" ConwayEra
_ ExecEnvironment "LEDGERS" ConwayEra
_ = Specification (LedgerState ConwayEra)
Specification (ExecState "LEDGERS" ConwayEra)
forall a. Monoid a => a
mempty
  signalSpec :: HasCallStack =>
ExecContext "LEDGERS" ConwayEra
-> ExecEnvironment "LEDGERS" ConwayEra
-> ExecState "LEDGERS" ConwayEra
-> Specification (ExecSignal "LEDGERS" ConwayEra)
signalSpec ExecContext "LEDGERS" ConwayEra
_ ExecEnvironment "LEDGERS" ConwayEra
_ ExecState "LEDGERS" ConwayEra
_ = Specification (Seq (AlonzoTx ConwayEra))
Specification (ExecSignal "LEDGERS" ConwayEra)
forall a. Monoid a => a
mempty
  runAgdaRule :: HasCallStack =>
SpecRep (ExecEnvironment "LEDGERS" ConwayEra)
-> SpecRep (ExecState "LEDGERS" ConwayEra)
-> SpecRep (ExecSignal "LEDGERS" ConwayEra)
-> Either
     OpaqueErrorString (SpecRep (ExecState "LEDGERS" ConwayEra))
runAgdaRule SpecRep (ExecEnvironment "LEDGERS" ConwayEra)
env SpecRep (ExecState "LEDGERS" ConwayEra)
st SpecRep (ExecSignal "LEDGERS" ConwayEra)
sig = ComputationResult Text LState -> Either OpaqueErrorString LState
forall a. ComputationResult Text a -> Either OpaqueErrorString a
unComputationResult (ComputationResult Text LState -> Either OpaqueErrorString LState)
-> ComputationResult Text LState -> Either OpaqueErrorString LState
forall a b. (a -> b) -> a -> b
$ LEnv -> LState -> [Tx] -> ComputationResult Text LState
Agda.ledgersStep LEnv
SpecRep (ExecEnvironment "LEDGERS" ConwayEra)
env LState
SpecRep (ExecState "LEDGERS" ConwayEra)
st [Tx]
SpecRep (ExecSignal "LEDGERS" ConwayEra)
sig