module arch.node.net.node_proxy;

import arch.node.net.node_proxy_messages open;
import arch.node.net.node_proxy_config open;
import arch.node.net.node_proxy_environment open;
import arch.node.net.node_proxy_behaviour open;

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

open node_proxy_config_example;
open node_proxy_environment_example;
open node_proxy_behaviour_example;

NodeProxyEngine : Type :=
  Engine
    NodeProxyLocalCfg
    NodeProxyLocalState
    NodeProxyMailboxState
    NodeProxyTimerHandle
    NodeProxyActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exNodeProxyEngine : NodeProxyEngine :=
  mkEngine@{
    cfg := exNodeProxyCfg;
    env := exNodeProxyEnv;
    behaviour := exNodeProxyBehaviour;
  };