Lift.Mempooltype 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 = | Operation_conflict of {existing : Mavryk_crypto.Hashed.Operation_hash.t;new_operation : Mavryk_crypto.Hashed.Operation_hash.t;}type add_result = | Added| Replaced of {removed : Mavryk_crypto.Hashed.Operation_hash.t;}| Unchangedtype add_error = | Validation_error of Mavryk_base.TzPervasives.Error_monad.tztrace| Add_conflict of operation_conflictval encoding : t Mavryk_base.TzPervasives.Data_encoding.tval 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.tval remove_operation : t -> Mavryk_crypto.Hashed.Operation_hash.t -> tval merge : 
  ?conflict_handler:conflict_handler ->
  t ->
  t ->
  (t, merge_error) Stdlib.resultval operations : t -> operation Mavryk_crypto.Hashed.Operation_hash.Map.tval 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