module arch.node.engines.commitment;

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

import arch.node.engines.commitment_config open public;
import arch.node.engines.commitment_messages open public;
import arch.node.engines.commitment_environment open public;
import arch.node.engines.commitment_behaviour open public;

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

open commitment_config_example;
open commitment_environment_example;

CommitmentEngine : Type :=
  Engine
    CommitmentCfg
    CommitmentLocalState
    CommitmentMailboxState
    CommitmentTimerHandle
    CommitmentActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exampleCommitmentEngine : CommitmentEngine :=
  mkEngine@{
    cfg := commitmentCfg;
    env := commitmentEnv;
    behaviour := commitmentBehaviour;
  };