module arch.node.engines.shard;

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

import arch.node.engines.shard_config open public;
import arch.node.engines.shard_messages open public;
import arch.node.engines.shard_environment open public;
import arch.node.engines.shard_behaviour open public;

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

open shard_config_example;
open shard_environment_example;

ShardEngine : Type :=
  Engine
    ShardLocalCfg
    ShardLocalState
    ShardMailboxState
    ShardTimerHandle
    ShardActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exampleShardEngine : ShardEngine :=
  Engine.mk@{
    cfg := shardCfg;
    env := shardEnv;
    behaviour := shardBehaviour;
  };