Module Proto.Mempool

type t
type validation_info
type conflict_handler = existing_operation:(Mavryk_crypto.Hashed.Operation_hash.t * operation) -> new_operation:(Mavryk_crypto.Hashed.Operation_hash.t * operation) -> [ `Keep | `Replace ]
type operation_conflict =
  1. | Operation_conflict of {
    1. existing : Mavryk_crypto.Hashed.Operation_hash.t;
    2. new_operation : Mavryk_crypto.Hashed.Operation_hash.t;
    }
type add_result =
  1. | Added
  2. | Replaced of {
    1. removed : Mavryk_crypto.Hashed.Operation_hash.t;
    }
  3. | Unchanged
type add_error =
  1. | Validation_error of Mavryk_base.TzPervasives.Error_monad.tztrace
  2. | Add_conflict of operation_conflict
type merge_error =
  1. | Incompatible_mempool
  2. | Merge_conflict of operation_conflict
val encoding : t Mavryk_base.TzPervasives.Data_encoding.t
val add_operation : ?check_signature:bool -> ?conflict_handler:conflict_handler -> validation_info -> t -> (Mavryk_crypto.Hashed.Operation_hash.t * operation) -> (t * add_result, add_error) Stdlib.result Lwt.t
val remove_operation : t -> Mavryk_crypto.Hashed.Operation_hash.t -> t
val merge : ?conflict_handler:conflict_handler -> t -> t -> (t, merge_error) Stdlib.result
val init : Mavryk_protocol_environment__.Environment_context.Context.t -> Mavryk_crypto.Hashed.Chain_id.t -> head_hash:Mavryk_crypto.Hashed.Block_hash.t -> head:Mavryk_base.TzPervasives.Block_header.shell_header -> cache: [ `Force_load | `Load | `Lazy | `Inherited of Mavryk_protocol_environment__.Environment_context.Context.block_cache * Mavryk_crypto.Hashed.Context_hash.t ] -> (validation_info * t) Mavryk_base.TzPervasives.tzresult Lwt.t