module arch.node.net.node_proxy_environment;

import arch.node.net.node_proxy_messages open;

import arch.node.types.basics open;
import arch.node.types.engine open;
import arch.node.types.messages open;
import arch.node.types.identities open;
import arch.node.types.anoma_message as Anoma open;

syntax alias NodeProxyMailboxState := Unit;

type NodeProxyLocalState := mkNodeProxyLocalState;

NodeProxyTimerHandle : Type := Unit;

NodeProxyTimestampedTrigger : Type :=
  TimestampedTrigger NodeProxyTimerHandle Anoma.Msg;

NodeProxyEnv : Type :=
  EngineEnv
    NodeProxyLocalState
    NodeProxyMailboxState
    NodeProxyTimerHandle
    Anoma.Msg;

module node_proxy_environment_example;
  
  exNodeProxyEnv : NodeProxyEnv :=
    mkEngineEnv@{
      localState := mkNodeProxyLocalState;
      mailboxCluster := Map.empty;
      acquaintances := Set.empty;
      timers := [];
    };

end;