module arch.node.engines.storage;

import arch.node.engines.storage_messages open public;
import arch.node.engines.storage_config open public;
import arch.node.engines.storage_environment open public;
import arch.node.engines.storage_behaviour open public;

import arch.node.types.basics open;
import arch.node.types.engine open;
import arch.node.types.anoma as Anoma open;

open storage_config_example;
open storage_environment_example;
open storage_behaviour_example;

StorageEngine : Type :=
  Engine
    StorageLocalCfg
    StorageLocalState
    StorageMailboxState
    StorageTimerHandle
    StorageActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exStorageEngine : StorageEngine :=
  mkEngine@{
    cfg := exStorageCfg;
    env := exStorageEnv;
    behaviour := exStorageBehaviour;
  };