module arch.node.engines.identity_management;

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

import arch.node.engines.identity_management_messages open public;
import arch.node.engines.identity_management_environment open public;
import arch.node.engines.identity_management_behaviour open public;

import arch.node.engines.identity_management_config open public;
import arch.node.engines.identity_management_messages open public;
import arch.node.engines.identity_management_environment open public;
import arch.node.engines.identity_management_behaviour open public;

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

open identity_management_config_example;
open identity_management_environment_example;

IdentityManagementEngine : Type :=
  Engine
    IdentityManagementCfg
    IdentityManagementLocalState
    IdentityManagementMailboxState
    IdentityManagementTimerHandle
    IdentityManagementActionArguments
    Anoma.Msg
    Anoma.Cfg
    Anoma.Env;

exampleIdentityManagementEngine : IdentityManagementEngine :=
  mkEngine@{
    cfg := identityManagementCfg;
    env := identityManagementEnv;
    behaviour := identityManagementBehaviour;
  };