module arch.node.engines.executor;

import prelude open;
import arch.node.types.engine open;

import arch.node.engines.executor_config open public;
import arch.node.engines.executor_messages open public;
import arch.node.engines.executor_environment open public;
import arch.node.engines.executor_behaviour open public;

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

open executor_config_example;
open executor_environment_example;

ExecutorEngine : Type :=
  Engine
    ExecutorLocalCfg
    ExecutorLocalState
    ExecutorMailboxState
    ExecutorTimerHandle
    ExecutorActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exampleExecutorEngine : ExecutorEngine :=
  Engine.mk@{
    cfg := executorCfg;
    env := executorEnv;
    behaviour := executorBehaviour;
  };