module arch.node.engines.net_registry_environment;

import arch.node.engines.net_registry_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;

NetworkRegistryMailboxState : Type := Unit;

type NetworkRegistryLocalState := mkNetworkRegistryLocalState;

NetworkRegistryTimerHandle : Type := Unit;

NetworkRegistryTimestampedTrigger : Type :=
  TimestampedTrigger NetworkRegistryTimerHandle Anoma.Msg;

NetworkRegistryEnv : Type :=
  EngineEnv
    NetworkRegistryLocalState
    NetworkRegistryMailboxState
    NetworkRegistryTimerHandle
    Anoma.Msg;

module registry_environment_example;
  
  exNetworkRegistryEnv : NetworkRegistryEnv :=
    mkEngineEnv@{
      localState := mkNetworkRegistryLocalState;
      mailboxCluster := Map.empty;
      acquaintances := Set.empty;
      timers := [];
    };
end;