sig
  module Unpack_one :
    sig
      type ('value, 'partial_unpack) t =
          ?partial_unpack:'partial_unpack ->
          ?pos:int ->
          ?len:int ->
          Bigstring.t ->
          [ `Invalid_data of Error.t
          | `Not_enough_data of 'partial_unpack * int
          | `Ok of 'value * int ]
      val map :
        ('a, 'partial_unpack) Unpack_buffer.Unpack_one.t ->
        f:('-> 'b) -> ('b, 'partial_unpack) Unpack_buffer.Unpack_one.t
      val create_bin_prot :
        'Bin_prot.Type_class.reader ->
        ('a, unit) Unpack_buffer.Unpack_one.t
      type partial_sexp
      val sexp :
        (Std_internal.Sexp.t, Unpack_buffer.Unpack_one.partial_sexp)
        Unpack_buffer.Unpack_one.t
    end
  type ('value, 'partial_unpack) t
  val invariant : ('a, 'b) Unpack_buffer.t -> unit
  val create :
    ?partial_unpack:'partial_unpack ->
    ('value, 'partial_unpack) Unpack_buffer.Unpack_one.t ->
    ('value, 'partial_unpack) Unpack_buffer.t
  val create_bin_prot :
    'Bin_prot.Type_class.reader -> ('a, unit) Unpack_buffer.t
  val is_empty : ('a, 'b) Unpack_buffer.t -> bool Or_error.t
  val feed :
    ?pos:int ->
    ?len:int -> ('a, 'b) Unpack_buffer.t -> Bigstring.t -> unit Or_error.t
  val feed_string :
    ?pos:int ->
    ?len:int -> ('a, 'b) Unpack_buffer.t -> string -> unit Or_error.t
  val unpack :
    ('value, 'a) Unpack_buffer.t -> 'value Std_internal.Queue.t Or_error.t
  val debug : bool Pervasives.ref
  val sexp_of_t :
    ('value -> Sexplib.Sexp.t) ->
    ('partial_unpack -> Sexplib.Sexp.t) ->
    ('value, 'partial_unpack) Unpack_buffer.t -> Sexplib.Sexp.t
end