module arch.node.engines.mempool_worker_messages;

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

type TransactionRequest KVSKey Executable :=
  mkTransactionRequest@{
    tx : TransactionCandidate KVSKey KVSKey Executable;
    resubmission : Option TxFingerprint;
  };

type TransactionAck :=
  mkTransactionAck@{
    tx_hash : Hash;
    batch_number : BatchNumber;
    batch_start : WallClockTime;
    worker_id : EngineID;
    signature : Signature;
  };

type MempoolWorkerMsg KVSKey Executable :=
  | MempoolWorkerMsgTransactionRequest (TransactionRequest KVSKey Executable)
  | MempoolWorkerMsgTransactionAck TransactionAck;