module tutorial.engines.template_minimum_environment;

import tutorial.engines.template_minimum_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;

TemplateMinimumMailboxState : Type := Unit;

type TemplateMinimumLocalState := mkTemplateMinimumLocalState;

TemplateMinimumTimerHandle : Type := Unit;

TemplateMinimumTimestampedTrigger : Type :=
  TimestampedTrigger TemplateMinimumTimerHandle Anoma.Msg;

TemplateMinimumEnv : Type :=
  EngineEnv
    TemplateMinimumLocalState
    TemplateMinimumMailboxState
    TemplateMinimumTimerHandle
    Anoma.Msg;

module template_minimum_environment_example;
  
  exTemplateMinimumEnv : TemplateMinimumEnv :=
    mkEngineEnv@{
      localState := mkTemplateMinimumLocalState;
      mailboxCluster := Map.empty;
      acquaintances := Set.empty;
      timers := [];
    };
end;