module arch.node.engines.signs_for_messages;

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

type RequestSignsFor :=
  mkRequestSignsFor@{
    externalIdentityA : ExternalIdentity;
    externalIdentityB : ExternalIdentity;
  };

type ReplySignsFor :=
  mkReplySignsFor@{
    signsFor : Bool;
    err : Option String;
  };

type RequestSubmitSignsForEvidence :=
  mkRequestSubmitSignsForEvidence@{
    evidence : SignsForEvidence;
  };

type ReplySubmitSignsForEvidence :=
  mkReplySubmitSignsForEvidence@{
    err : Option String;
  };

type RequestQuerySignsForEvidence :=
  mkRequestQuerySignsForEvidence@{
    externalIdentity : ExternalIdentity;
  };

type ReplyQuerySignsForEvidence :=
  mkReplyQuerySignsForEvidence@{
    externalIdentity : ExternalIdentity;
    evidence : Set SignsForEvidence;
    err : Option String;
  };

type SignsForMsg :=
  | MsgSignsForRequest RequestSignsFor
  | MsgSignsForReply ReplySignsFor
  | MsgSubmitSignsForEvidenceRequest RequestSubmitSignsForEvidence
  | MsgSubmitSignsForEvidenceReply ReplySubmitSignsForEvidence
  | MsgQuerySignsForEvidenceRequest RequestQuerySignsForEvidence
  | MsgQuerySignsForEvidenceReply ReplyQuerySignsForEvidence;