module arch.node.engines.verification_environment;

import prelude open;
import arch.node.types.messages open;
import arch.node.types.engine_environment open;
import arch.node.types.identities open;
import arch.node.engines.verification_messages open;
import arch.node.types.anoma_message as Anoma open;

syntax alias VerificationMailboxState := Unit;

type VerificationLocalState :=
  mkVerificationLocalState@{
    pendingRequests
      : Map ExternalIdentity (List (Pair EngineID (Pair Signable Commitment)));
  };

syntax alias VerificationTimerHandle := Unit;

VerificationEnv : Type :=
  EngineEnv
    VerificationLocalState
    VerificationMailboxState
    VerificationTimerHandle
    Anoma.Msg;

module verification_environment_example;
  
  verificationEnv : VerificationEnv :=
    mkEngineEnv@{
      localState :=
        mkVerificationLocalState@{
          pendingRequests := Map.empty;
        };
      mailboxCluster := Map.empty;
      acquaintances := Set.empty;
      timers := [];
    };
end;