module arch.node.engines.storage_behaviour;
import arch.node.engines.storage_messages open;
import arch.node.engines.storage_config open;
import arch.node.engines.storage_environment open;
import arch.node.types.basics open;
import arch.node.types.identities open;
import arch.node.types.messages open;
import arch.node.types.engine open;
import arch.node.types.anoma as Anoma open;
StorageActionArguments : Type := Unit;
StorageAction : Type :=
Action
StorageLocalCfg
StorageLocalState
StorageMailboxState
StorageTimerHandle
StorageActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
StorageActionInput : Type :=
ActionInput
StorageLocalCfg
StorageLocalState
StorageMailboxState
StorageTimerHandle
StorageActionArguments
Anoma.Msg;
StorageActionEffect : Type :=
ActionEffect
StorageLocalState
StorageMailboxState
StorageTimerHandle
Anoma.Msg
Anoma.Cfg
Anoma.Env;
StorageActionExec : Type :=
ActionExec
StorageLocalCfg
StorageLocalState
StorageMailboxState
StorageTimerHandle
StorageActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
exampleReplyAction (input : StorageActionInput) : Option StorageActionEffect :=
TODO;
exampleReplyActionLabel : StorageActionExec := Seq [exampleReplyAction];
StorageGuard : Type :=
Guard
StorageLocalCfg
StorageLocalState
StorageMailboxState
StorageTimerHandle
StorageActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
StorageGuardOutput : Type :=
GuardOutput
StorageLocalCfg
StorageLocalState
StorageMailboxState
StorageTimerHandle
StorageActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
StorageGuardEval : Type :=
GuardEval
StorageLocalCfg
StorageLocalState
StorageMailboxState
StorageTimerHandle
StorageActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
exampleReplyGuard
(trigger : StorageTimestampedTrigger)
(cfg : StorageCfg)
(env : StorageEnv)
: Option StorageGuardOutput := TODO;
StorageBehaviour : Type :=
EngineBehaviour
StorageLocalCfg
StorageLocalState
StorageMailboxState
StorageTimerHandle
StorageActionArguments
Anoma.Msg
Anoma.Cfg
Anoma.Env;
module storage_behaviour_example;
exStorageBehaviour : StorageBehaviour :=
mkEngineBehaviour@{
guards := First [exampleReplyGuard];
};
end;