module arch.node.engines.logging_environment;

import prelude open;
import arch.node.engines.logging_messages open;
import arch.node.types.engine open;
import arch.node.types.messages open;
import arch.node.types.identities open;
import arch.node.types.anoma_message as Anoma open;

syntax alias LoggingMailboxState := Unit;

type LoggingLocalState :=
  mkLoggingLocalState@{
    logbook : List String;
  };

syntax alias LoggingTimerHandle := Unit;

LoggingTimestampedTrigger : Type :=
  TimestampedTrigger LoggingTimerHandle Anoma.Msg;

LoggingEnv : Type :=
  EngineEnv LoggingLocalState LoggingMailboxState LoggingTimerHandle Anoma.Msg;

module logging_environment_example;
  
  loggingEnv : LoggingEnv :=
    mkEngineEnv@{
      localState :=
        mkLoggingLocalState@{
          logbook := [];
        };
      mailboxCluster := Map.empty;
      acquaintances := Set.empty;
      timers := [];
    };
end;