module tutorial.engines.template_minimum;

import tutorial.engines.template_minimum_messages open public;
import tutorial.engines.template_minimum_config open public;
import tutorial.engines.template_minimum_environment open public;
import tutorial.engines.template_minimum_behaviour open public;

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

open template_minimum_config_example;
open template_minimum_environment_example;
open template_minimum_behaviour_example;

TemplateMinimumEngine : Type :=
  Engine
    TemplateMinimumLocalCfg
    TemplateMinimumLocalState
    TemplateMinimumMailboxState
    TemplateMinimumTimerHandle
    TemplateMinimumActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exTemplateMinimumEngine : TemplateMinimumEngine :=
  mkEngine@{
    cfg := exTemplateMinimumCfg;
    env := exTemplateMinimumEnv;
    behaviour := exTemplateMinimumBehaviour;
  };