Module P.Mempool

type t
type validation_info
type conflict_handler = existing_operation:(Operation_hash.t * operation) -> new_operation:(Operation_hash.t * operation) -> [ `Keep | `Replace ]
type operation_conflict =
  1. | Operation_conflict of {
    1. existing : Operation_hash.t;
    2. new_operation : Operation_hash.t;
    }
type add_result =
  1. | Added
  2. | Replaced of {
    1. removed : Operation_hash.t;
    }
  3. | Unchanged
type add_error =
  1. | Validation_error of Error_monad.error Error_monad.trace
  2. | Add_conflict of operation_conflict
type merge_error =
  1. | Incompatible_mempool
  2. | Merge_conflict of operation_conflict
val encoding : t Data_encoding.t
val add_operation : ?check_signature:bool -> ?conflict_handler:conflict_handler -> validation_info -> t -> (Operation_hash.t * operation) -> (t * add_result, add_error) Pervasives.result Lwt.t
val remove_operation : t -> Operation_hash.t -> t
val merge : ?conflict_handler:conflict_handler -> t -> t -> (t, merge_error) Pervasives.result
val operations : t -> operation Operation_hash.Map.t