| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Wallet.Emulator.MultiAgent
Synopsis
- data Assertion
- data EmulatorTimeEvent e = EmulatorTimeEvent {
- _eteEmulatorTime :: Slot
- _eteEvent :: e
- eteEvent :: forall e e. Lens (EmulatorTimeEvent e) (EmulatorTimeEvent e) e e
- eteEmulatorTime :: forall e. Lens' (EmulatorTimeEvent e) Slot
- emulatorTimeEvent :: Slot -> Prism' (EmulatorTimeEvent e) e
- data EmulatorEvent'
- type EmulatorEvent = EmulatorTimeEvent EmulatorEvent'
- chainEvent :: Prism' EmulatorEvent' ChainEvent
- walletClientEvent :: Wallet -> Prism' EmulatorEvent' NodeClientEvent
- walletEvent :: Wallet -> Prism' EmulatorEvent' WalletEvent
- walletEvent' :: Prism' EmulatorEvent' (Wallet, WalletEvent)
- chainIndexEvent :: Wallet -> Prism' EmulatorEvent' ChainIndexLog
- schedulerEvent :: Prism' EmulatorEvent' SchedulerLog
- instanceEvent :: Prism' EmulatorEvent' ContractInstanceLog
- userThreadEvent :: Prism' EmulatorEvent' UserThreadMsg
- type EmulatedWalletControlEffects = '[NodeClientControlEffect, ChainIndexControlEffect, SigningProcessControlEffect, LogObserve (LogMessage Text), LogMsg Text]
- data MultiAgentEffect r where
- WalletAction :: Wallet -> Eff EmulatedWalletEffects r -> MultiAgentEffect r
- data MultiAgentControlEffect r where
- walletAction :: Member MultiAgentEffect effs => Wallet -> Eff EmulatedWalletEffects r -> Eff effs r
- handleMultiAgentEffects :: forall effs. Member MultiAgentEffect effs => Wallet -> Eff (EmulatedWalletEffects' effs) ~> Eff effs
- raiseWallet :: forall f effs. (Member f EmulatedWalletEffects, Member MultiAgentEffect effs) => Wallet -> f ~> Eff effs
- walletControlAction :: Member MultiAgentControlEffect effs => Wallet -> Eff EmulatedWalletControlEffects r -> Eff effs r
- assertion :: Member MultiAgentControlEffect effs => Assertion -> Eff effs ()
- assertOwnFundsEq :: Member MultiAgentControlEffect effs => Wallet -> Value -> Eff effs ()
- assertIsValidated :: Member MultiAgentControlEffect effs => CardanoTx -> Eff effs ()
- data EmulatorState = EmulatorState {}
- walletStates :: Lens' EmulatorState (Map Wallet WalletState)
- emulatorLog :: Lens' EmulatorState [LogMessage EmulatorEvent]
- chainState :: Lens' EmulatorState ChainState
- walletState :: Wallet -> Lens' EmulatorState WalletState
- chainOldestFirst :: Lens' EmulatorState Blockchain
- chainUtxo :: Getter EmulatorState AddressMap
- fundsDistribution :: EmulatorState -> Map Wallet Value
- emLog :: EmulatorState -> [LogMessage EmulatorEvent]
- emptyEmulatorState :: EmulatorState
- emulatorState :: Blockchain -> EmulatorState
- emulatorStatePool :: TxPool -> EmulatorState
- emulatorStateInitialDist :: Params -> Map PaymentPubKeyHash Value -> Either ToCardanoError EmulatorState
- type MultiAgentEffs = '[State EmulatorState, LogMsg EmulatorEvent', Error WalletAPIError, Error ChainIndexError, Error AssertionError, ChainEffect, ChainControlEffect]
- handleMultiAgentControl :: forall effs. Members MultiAgentEffs effs => Eff (MultiAgentControlEffect ': effs) ~> Eff effs
- handleMultiAgent :: forall effs. Members MultiAgentEffs effs => Eff (MultiAgentEffect ': effs) ~> Eff effs
- assert :: Members MultiAgentEffs effs => Assertion -> Eff effs ()
- ownFundsEqual :: Members MultiAgentEffs effs => Wallet -> Value -> Eff effs ()
- isValidated :: Members MultiAgentEffs effs => CardanoTx -> Eff effs ()
- _singleton :: AReview [a] a
Documentation
Assertions which will be checked during execution of the emulator.
Constructors
| IsValidated CardanoTx | Assert that the given transaction is validated. |
| OwnFundsEqual Wallet Value | Assert that the funds belonging to a wallet's public-key address are equal to a value. |
data EmulatorTimeEvent e Source #
An event with a timestamp measured in emulator time
(currently: Slot)
Constructors
| EmulatorTimeEvent | |
Fields
| |
Instances
eteEvent :: forall e e. Lens (EmulatorTimeEvent e) (EmulatorTimeEvent e) e e Source #
eteEmulatorTime :: forall e. Lens' (EmulatorTimeEvent e) Slot Source #
emulatorTimeEvent :: Slot -> Prism' (EmulatorTimeEvent e) e Source #
data EmulatorEvent' Source #
Events produced by the blockchain emulator.
Constructors
Instances
type EmulatedWalletControlEffects = '[NodeClientControlEffect, ChainIndexControlEffect, SigningProcessControlEffect, LogObserve (LogMessage Text), LogMsg Text] Source #
data MultiAgentEffect r where Source #
The type of actions in the emulator.
Constructors
| WalletAction :: Wallet -> Eff EmulatedWalletEffects r -> MultiAgentEffect r | A direct action performed by a wallet. Usually represents a "user action", as it is triggered externally. |
data MultiAgentControlEffect r where Source #
Constructors
| WalletControlAction :: Wallet -> Eff EmulatedWalletControlEffects r -> MultiAgentControlEffect r | An action affecting the emulated parts of a wallet (only available in emulator - see note [Control effects].) |
| Assertion :: Assertion -> MultiAgentControlEffect () | An assertion in the event stream, which can inspect the current state. |
walletAction :: Member MultiAgentEffect effs => Wallet -> Eff EmulatedWalletEffects r -> Eff effs r Source #
Run an action in the context of a wallet (ie. agent)
handleMultiAgentEffects :: forall effs. Member MultiAgentEffect effs => Wallet -> Eff (EmulatedWalletEffects' effs) ~> Eff effs Source #
raiseWallet :: forall f effs. (Member f EmulatedWalletEffects, Member MultiAgentEffect effs) => Wallet -> f ~> Eff effs Source #
walletControlAction :: Member MultiAgentControlEffect effs => Wallet -> Eff EmulatedWalletControlEffects r -> Eff effs r Source #
Run a control action in the context of a wallet
assertOwnFundsEq :: Member MultiAgentControlEffect effs => Wallet -> Value -> Eff effs () Source #
Issue an assertion that the funds for a given wallet have the given value.
assertIsValidated :: Member MultiAgentControlEffect effs => CardanoTx -> Eff effs () Source #
Issue an assertion that the given transaction has been validated.
data EmulatorState Source #
The state of the emulator itself.
Constructors
| EmulatorState | |
Fields
| |
Instances
| Show EmulatorState Source # | |
Defined in Wallet.Emulator.MultiAgent | |
chainOldestFirst :: Lens' EmulatorState Blockchain Source #
Get the blockchain as a list of blocks, starting with the oldest (genesis) block.
fundsDistribution :: EmulatorState -> Map Wallet Value Source #
Get a map with the total value of each wallet's "own funds".
emLog :: EmulatorState -> [LogMessage EmulatorEvent] Source #
Get the emulator log.
emulatorState :: Blockchain -> EmulatorState Source #
Initialise the emulator state with a blockchain.
emulatorStatePool :: TxPool -> EmulatorState Source #
Initialise the emulator state with a pool of pending transactions.
emulatorStateInitialDist :: Params -> Map PaymentPubKeyHash Value -> Either ToCardanoError EmulatorState Source #
Initialise the emulator state with a single pending transaction that creates the initial distribution of funds to public key addresses.
type MultiAgentEffs = '[State EmulatorState, LogMsg EmulatorEvent', Error WalletAPIError, Error ChainIndexError, Error AssertionError, ChainEffect, ChainControlEffect] Source #
handleMultiAgentControl :: forall effs. Members MultiAgentEffs effs => Eff (MultiAgentControlEffect ': effs) ~> Eff effs Source #
handleMultiAgent :: forall effs. Members MultiAgentEffs effs => Eff (MultiAgentEffect ': effs) ~> Eff effs Source #
ownFundsEqual :: Members MultiAgentEffs effs => Wallet -> Value -> Eff effs () Source #
Issue an assertion that the funds for a given wallet have the given value.
isValidated :: Members MultiAgentEffs effs => CardanoTx -> Eff effs () Source #
Issue an assertion that the given transaction has been validated.
_singleton :: AReview [a] a Source #