module arch.node.engines.encryption_environment;

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

syntax alias EncryptionMailboxState := Unit;

type EncryptionLocalState :=
  mkEncryptionLocalState@{
    pendingRequests : Map ExternalIdentity (List (Pair EngineID Plaintext));
  };

syntax alias EncryptionTimerHandle := Unit;

EncryptionEnv : Type :=
  EngineEnv
    EncryptionLocalState
    EncryptionMailboxState
    EncryptionTimerHandle
    Anoma.Msg;

module encryption_environment_example;
  
  encryptionEnv : EncryptionEnv :=
    mkEngineEnv@{
      localState :=
        mkEncryptionLocalState@{
          pendingRequests := Map.empty;
        };
      mailboxCluster := Map.empty;
      acquaintances := Set.empty;
      timers := [];
    };
end;