module arch.node.engines.wall_clock;

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

import arch.node.engines.wall_clock_config open public;
import arch.node.engines.wall_clock_messages open public;
import arch.node.engines.wall_clock_environment open public;
import arch.node.engines.wall_clock_behaviour open public;

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

open wall_clock_config_example;
open wall_clock_environment_example;

WallClockEngine : Type :=
  Engine
    WallClockCfg
    WallClockLocalState
    WallClockMailboxState
    WallClockTimerHandle
    WallClockActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exampleWallClockEngine : WallClockEngine :=
  mkEngine@{
    cfg := wallClockCfg;
    env := wallClockEnv;
    behaviour := wallClockBehaviour;
  };