module tutorial.engines.template;

import tutorial.engines.template_messages open public;
import tutorial.engines.template_config open public;
import tutorial.engines.template_environment open public;
import tutorial.engines.template_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_config_example;
open template_environment_example;
open template_behaviour_example;

TemplateEngine : Type :=
  Engine
    TemplateLocalCfg
    TemplateLocalState
    TemplateMailboxState
    TemplateTimerHandle
    TemplateActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exTemplateEngine : TemplateEngine :=
  mkEngine@{
    cfg := exTemplateCfg;
    env := exTemplateEnv;
    behaviour := exTemplateBehaviour;
  };