module arch.node.engines.transport_protocol;

import arch.node.engines.transport_protocol_messages open;
import arch.node.engines.transport_protocol_config open;
import arch.node.engines.transport_protocol_environment open;
import arch.node.engines.transport_protocol_behaviour open;

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

open transport_protocol_config_example;
open transport_protocol_environment_example;
open transport_protocol_behaviour_example;

TransportProtocolEngine : Type :=
  Engine
    TransportProtocolLocalCfg
    TransportProtocolLocalState
    TransportProtocolMailboxState
    TransportProtocolTimerHandle
    TransportProtocolActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exTransportProtocolEngine : TransportProtocolEngine :=
  mkEngine@{
    cfg := exTransportProtocolCfg;
    env := exTransportProtocolEnv;
    behaviour := exTransportProtocolBehaviour;
  };