module arch.node.engines.router;

import arch.node.engines.router_messages open;
import arch.node.engines.router_config open;
import arch.node.engines.router_environment open;
import arch.node.engines.router_behaviour open;

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

open router_config_example;
open router_environment_example;
open router_behaviour_example;

RouterEngine : Type :=
  Engine
    RouterLocalCfg
    RouterLocalState
    RouterMailboxState
    RouterTimerHandle
    RouterActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exRouterEngine : RouterEngine :=
  mkEngine@{
    cfg := exRouterCfg;
    env := exRouterEnv;
    behaviour := exRouterBehaviour;
  };