module arch.node.engines.local_key_value_storage;

import prelude open;
import arch.node.types.engine open;

import arch.node.engines.local_key_value_storage_messages open public;
import arch.node.engines.local_key_value_storage_environment open public;
import arch.node.engines.local_key_value_storage_behaviour open public;
import arch.node.engines.local_key_value_storage_config open public;

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

open local_key_value_storage_config_example;
open local_key_value_storage_environment_example;

LocalKVStorageEngine : Type :=
  Engine
    LocalKVStorageCfg
    LocalKVStorageLocalState
    LocalKVStorageMailboxState
    LocalKVStorageTimerHandle
    LocalKVStorageActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exampleLocalKVStorageEngine : LocalKVStorageEngine :=
  mkEngine@{
    cfg := localKVStorageCfg;
    env := localKVStorageEnv;
    behaviour := localKVStorageBehaviour;
  };