sig
  type seek = Iobuf_intf.seek
  type no_seek = Iobuf_intf.no_seek
  type (-'data_perm_read_write, +'seek_permission) t
  val invariant :
    'Core_kernel.Invariant_intf.inv ->
    'Core_kernel.Invariant_intf.inv ->
    ('a, 'b) t Core_kernel.Invariant_intf.inv
  val create : len:int -> ('a, 'b) Iobuf.t
  val of_bigstring :
    ?pos:int ->
    ?len:int ->
    Core_kernel.Std.Bigstring.t ->
    ([< Core_kernel.Std.read_write ], 'a) Iobuf.t
  val of_string : string -> ('a, 'b) Iobuf.t
  val sub_shared :
    ?pos:int -> ?len:int -> ('d, 'a) Iobuf.t -> ('d, 'b) Iobuf.t
  val set_bounds_and_buffer :
    src:([> Core_kernel.Std.write ] as 'data, 'a) Iobuf.t ->
    dst:('data, seek) Iobuf.t -> unit
  val set_bounds_and_buffer_sub :
    ?pos:int ->
    ?len:int ->
    src:([> Core_kernel.Std.write ] as 'data, 'a) Iobuf.t ->
    dst:('data, seek) Iobuf.t -> unit -> unit
  val read_only :
    ([> Core_kernel.Std.read ], 's) Iobuf.t ->
    (Core_kernel.Std.read, 's) Iobuf.t
  val no_seek : ('r, 'a) Iobuf.t -> ('r, no_seek) Iobuf.t
  val capacity : ('a, 'b) Iobuf.t -> int
  val length : ('a, 'b) Iobuf.t -> int
  val is_empty : ('a, 'b) Iobuf.t -> bool
  val narrow : ('a, seek) Iobuf.t -> unit
  val narrow_lo : ('a, seek) Iobuf.t -> unit
  val narrow_hi : ('a, seek) Iobuf.t -> unit
  module type Bound =
    sig
      type t = private int
      val window : ('a, 'b) t -> t
      val limit : ('a, 'b) t -> t
      val restore : t -> ('a, Iobuf_intf.seek) t -> unit
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  module Lo_bound : Bound
  module Hi_bound : Bound
  val advance : ('a, seek) Iobuf.t -> int -> unit
  val unsafe_advance : ('a, seek) Iobuf.t -> int -> unit
  val resize : ('a, seek) Iobuf.t -> len:int -> unit
  val unsafe_resize : ('a, seek) Iobuf.t -> len:int -> unit
  val rewind : ('a, seek) Iobuf.t -> unit
  val reset : ('a, seek) Iobuf.t -> unit
  val flip_lo : ('a, seek) Iobuf.t -> unit
  val bounded_flip_lo : ('a, seek) Iobuf.t -> Lo_bound.t -> unit
  val compact : (Core_kernel.Std.read_write, seek) Iobuf.t -> unit
  val bounded_compact :
    (Core_kernel.Std.read_write, seek) Iobuf.t ->
    Lo_bound.t -> Hi_bound.t -> unit
  val flip_hi : ('a, seek) Iobuf.t -> unit
  val bounded_flip_hi : ('a, seek) Iobuf.t -> Hi_bound.t -> unit
  val protect_window_and_bounds :
    ('rw, no_seek) Iobuf.t -> f:(('rw, seek) Iobuf.t -> 'a) -> 'a
  val to_string :
    ?len:int -> ([> Core_kernel.Std.read ], 'a) Iobuf.t -> string
  val to_string_hum :
    ?bounds:[ `Limits | `Whole | `Window ] ->
    ([> Core_kernel.Std.read ], 'a) Iobuf.t -> string
  module Consume :
    sig
      type src = (Core_kernel.Std.read, seek) Iobuf.t
      module To_string :
        sig
          val blito : (src, string) Iobuf_intf.consuming_blito
          val blit : (src, string) Iobuf_intf.consuming_blit
          val unsafe_blit : (src, string) Iobuf_intf.consuming_blit
          val subo : ?len:int -> src -> string
          val sub : src -> len:int -> string
        end
      module To_bigstring :
        sig
          val blito :
            (src, Core_kernel.Std.Bigstring.t) Iobuf_intf.consuming_blito
          val blit :
            (src, Core_kernel.Std.Bigstring.t) Iobuf_intf.consuming_blit
          val unsafe_blit :
            (src, Core_kernel.Std.Bigstring.t) Iobuf_intf.consuming_blit
          val subo : ?len:int -> src -> Core_kernel.Std.Bigstring.t
          val sub : src -> len:int -> Core_kernel.Std.Bigstring.t
        end
      type ('a, 'b, 's) t = ('b, seek) t -> 'a
        constraint 'b = [> Core_kernel.Std.read ]
      val char : (char, [> Core_kernel.Std.read ], 'w) t
      val int8 : (int, [> Core_kernel.Std.read ], 'w) t
      val int16_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int16_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int32_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int32_le : (int, [> Core_kernel.Std.read ], 'w) t
      val uint8 : (int, [> Core_kernel.Std.read ], 'w) t
      val uint16_be : (int, [> Core_kernel.Std.read ], 'w) t
      val uint16_le : (int, [> Core_kernel.Std.read ], 'w) t
      val uint32_be : (int, [> Core_kernel.Std.read ], 'w) t
      val uint32_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_t_be :
        (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
      val int64_t_le :
        (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
      val tail_padded_fixed_string :
        padding:char -> len:int -> (string, [> Core_kernel.Std.read ], 'w) t
      val string :
        ?str_pos:int -> ?len:int -> (string, [> Core_kernel.Std.read ], 'w) t
      val bigstring :
        ?str_pos:int ->
        ?len:int ->
        (Core_kernel.Std.Bigstring.t, [> Core_kernel.Std.read ], 'w) t
      val bin_prot :
        'Core_kernel.Std.Bin_prot.Type_class.reader ->
        ('a, [> Core_kernel.Std.read ], 'w) t
      val int64_be_trunc : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_le_trunc : (int, [> Core_kernel.Std.read ], 'w) t
    end
  module Fill :
    sig
      type ('a, 'b, 'w) t =
          (Core_kernel.Std.read_write, seek) t -> '-> unit
        constraint 'b = [> Core_kernel.Std.read ]
      val char : (char, [> Core_kernel.Std.read ], 'w) t
      val int8 : (int, [> Core_kernel.Std.read ], 'w) t
      val int16_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int16_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int32_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int32_le : (int, [> Core_kernel.Std.read ], 'w) t
      val uint8 : (int, [> Core_kernel.Std.read ], 'w) t
      val uint16_be : (int, [> Core_kernel.Std.read ], 'w) t
      val uint16_le : (int, [> Core_kernel.Std.read ], 'w) t
      val uint32_be : (int, [> Core_kernel.Std.read ], 'w) t
      val uint32_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_t_be :
        (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
      val int64_t_le :
        (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
      val tail_padded_fixed_string :
        padding:char -> len:int -> (string, [> Core_kernel.Std.read ], 'w) t
      val string :
        ?str_pos:int -> ?len:int -> (string, [> Core_kernel.Std.read ], 'w) t
      val bigstring :
        ?str_pos:int ->
        ?len:int ->
        (Core_kernel.Std.Bigstring.t, [> Core_kernel.Std.read ], 'w) t
      val bin_prot :
        'Core_kernel.Std.Bin_prot.Type_class.writer ->
        ('a, [> Core_kernel.Std.read ], 'w) t
      val int64_be_trunc : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_le_trunc : (int, [> Core_kernel.Std.read ], 'w) t
      val decimal : (int, [> Core_kernel.Std.read ], 'a) Iobuf.t
    end
  module Peek :
    sig
      type src = (Core_kernel.Std.read, no_seek) Iobuf.t
      module To_string :
        sig
          val blit : (src, string) Core_kernel.Blit_intf.blit
          val blito : (src, string) Core_kernel.Blit_intf.blito
          val unsafe_blit : (src, string) Core_kernel.Blit_intf.blit
          val sub : (src, string) Core_kernel.Blit_intf.sub
          val subo : (src, string) Core_kernel.Blit_intf.subo
        end
      module To_bigstring :
        sig
          val blit :
            (src, Core_kernel.Std.Bigstring.t) Core_kernel.Blit_intf.blit
          val blito :
            (src, Core_kernel.Std.Bigstring.t) Core_kernel.Blit_intf.blito
          val unsafe_blit :
            (src, Core_kernel.Std.Bigstring.t) Core_kernel.Blit_intf.blit
          val sub :
            (src, Core_kernel.Std.Bigstring.t) Core_kernel.Blit_intf.sub
          val subo :
            (src, Core_kernel.Std.Bigstring.t) Core_kernel.Blit_intf.subo
        end
      type ('a, 'b, 'w) t = ('b, 'w) t -> pos:int -> 'a
        constraint 'b = [> Core_kernel.Std.read ]
      val char : (char, [> Core_kernel.Std.read ], 'w) t
      val int8 : (int, [> Core_kernel.Std.read ], 'w) t
      val int16_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int16_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int32_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int32_le : (int, [> Core_kernel.Std.read ], 'w) t
      val uint8 : (int, [> Core_kernel.Std.read ], 'w) t
      val uint16_be : (int, [> Core_kernel.Std.read ], 'w) t
      val uint16_le : (int, [> Core_kernel.Std.read ], 'w) t
      val uint32_be : (int, [> Core_kernel.Std.read ], 'w) t
      val uint32_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_t_be :
        (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
      val int64_t_le :
        (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
      val tail_padded_fixed_string :
        padding:char -> len:int -> (string, [> Core_kernel.Std.read ], 'w) t
      val string :
        ?str_pos:int -> ?len:int -> (string, [> Core_kernel.Std.read ], 'w) t
      val bigstring :
        ?str_pos:int ->
        ?len:int ->
        (Core_kernel.Std.Bigstring.t, [> Core_kernel.Std.read ], 'w) t
      val bin_prot :
        'Core_kernel.Std.Bin_prot.Type_class.reader ->
        ('a, [> Core_kernel.Std.read ], 'w) t
      val int64_be_trunc : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_le_trunc : (int, [> Core_kernel.Std.read ], 'w) t
    end
  module Poke :
    sig
      val decimal :
        (Core_kernel.Std.read_write, 'w) Iobuf.t -> pos:int -> int -> int
      type ('a, 'b, 'w) t =
          (Core_kernel.Std.read_write, 'w) t -> pos:int -> '-> unit
        constraint 'b = [> Core_kernel.Std.read ]
      val char : (char, [> Core_kernel.Std.read ], 'w) t
      val int8 : (int, [> Core_kernel.Std.read ], 'w) t
      val int16_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int16_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int32_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int32_le : (int, [> Core_kernel.Std.read ], 'w) t
      val uint8 : (int, [> Core_kernel.Std.read ], 'w) t
      val uint16_be : (int, [> Core_kernel.Std.read ], 'w) t
      val uint16_le : (int, [> Core_kernel.Std.read ], 'w) t
      val uint32_be : (int, [> Core_kernel.Std.read ], 'w) t
      val uint32_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_be : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_le : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_t_be :
        (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
      val int64_t_le :
        (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
      val tail_padded_fixed_string :
        padding:char -> len:int -> (string, [> Core_kernel.Std.read ], 'w) t
      val string :
        ?str_pos:int -> ?len:int -> (string, [> Core_kernel.Std.read ], 'w) t
      val bigstring :
        ?str_pos:int ->
        ?len:int ->
        (Core_kernel.Std.Bigstring.t, [> Core_kernel.Std.read ], 'w) t
      val bin_prot :
        'Core_kernel.Std.Bin_prot.Type_class.writer ->
        ('a, [> Core_kernel.Std.read ], 'w) t
      val int64_be_trunc : (int, [> Core_kernel.Std.read ], 'w) t
      val int64_le_trunc : (int, [> Core_kernel.Std.read ], 'w) t
    end
  module Unsafe :
    sig
      module Consume :
        sig
          type src = (Core_kernel.Std.read, seek) Iobuf.t
          module To_string :
            sig
              val blito : (src, string) Iobuf_intf.consuming_blito
              val blit : (src, string) Iobuf_intf.consuming_blit
              val unsafe_blit : (src, string) Iobuf_intf.consuming_blit
              val subo : ?len:int -> src -> string
              val sub : src -> len:int -> string
            end
          module To_bigstring :
            sig
              val blito :
                (src, Core_kernel.Std.Bigstring.t) Iobuf_intf.consuming_blito
              val blit :
                (src, Core_kernel.Std.Bigstring.t) Iobuf_intf.consuming_blit
              val unsafe_blit :
                (src, Core_kernel.Std.Bigstring.t) Iobuf_intf.consuming_blit
              val subo : ?len:int -> src -> Core_kernel.Std.Bigstring.t
              val sub : src -> len:int -> Core_kernel.Std.Bigstring.t
            end
          type ('a, 'b, 's) t = ('b, seek) t -> 'a
            constraint 'b = [> Core_kernel.Std.read ]
          val char : (char, [> Core_kernel.Std.read ], 'w) t
          val int8 : (int, [> Core_kernel.Std.read ], 'w) t
          val int16_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int16_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int32_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int32_le : (int, [> Core_kernel.Std.read ], 'w) t
          val uint8 : (int, [> Core_kernel.Std.read ], 'w) t
          val uint16_be : (int, [> Core_kernel.Std.read ], 'w) t
          val uint16_le : (int, [> Core_kernel.Std.read ], 'w) t
          val uint32_be : (int, [> Core_kernel.Std.read ], 'w) t
          val uint32_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_t_be :
            (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
          val int64_t_le :
            (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
          val tail_padded_fixed_string :
            padding:char ->
            len:int -> (string, [> Core_kernel.Std.read ], 'w) t
          val string :
            ?str_pos:int ->
            ?len:int -> (string, [> Core_kernel.Std.read ], 'w) t
          val bigstring :
            ?str_pos:int ->
            ?len:int ->
            (Core_kernel.Std.Bigstring.t, [> Core_kernel.Std.read ], 'w) t
          val bin_prot :
            'Core_kernel.Std.Bin_prot.Type_class.reader ->
            ('a, [> Core_kernel.Std.read ], 'w) t
          val int64_be_trunc : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_le_trunc : (int, [> Core_kernel.Std.read ], 'w) t
        end
      module Fill :
        sig
          type ('a, 'b, 'w) t =
              (Core_kernel.Std.read_write, seek) t -> '-> unit
            constraint 'b = [> Core_kernel.Std.read ]
          val char : (char, [> Core_kernel.Std.read ], 'w) t
          val int8 : (int, [> Core_kernel.Std.read ], 'w) t
          val int16_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int16_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int32_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int32_le : (int, [> Core_kernel.Std.read ], 'w) t
          val uint8 : (int, [> Core_kernel.Std.read ], 'w) t
          val uint16_be : (int, [> Core_kernel.Std.read ], 'w) t
          val uint16_le : (int, [> Core_kernel.Std.read ], 'w) t
          val uint32_be : (int, [> Core_kernel.Std.read ], 'w) t
          val uint32_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_t_be :
            (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
          val int64_t_le :
            (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
          val tail_padded_fixed_string :
            padding:char ->
            len:int -> (string, [> Core_kernel.Std.read ], 'w) t
          val string :
            ?str_pos:int ->
            ?len:int -> (string, [> Core_kernel.Std.read ], 'w) t
          val bigstring :
            ?str_pos:int ->
            ?len:int ->
            (Core_kernel.Std.Bigstring.t, [> Core_kernel.Std.read ], 'w) t
          val bin_prot :
            'Core_kernel.Std.Bin_prot.Type_class.writer ->
            ('a, [> Core_kernel.Std.read ], 'w) t
          val int64_be_trunc : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_le_trunc : (int, [> Core_kernel.Std.read ], 'w) t
          val decimal : (int, [> Core_kernel.Std.read ], 'a) Iobuf.t
        end
      module Peek :
        sig
          type src = (Core_kernel.Std.read, no_seek) Iobuf.t
          module To_string :
            sig
              val blit : (src, string) Core_kernel.Blit_intf.blit
              val blito : (src, string) Core_kernel.Blit_intf.blito
              val unsafe_blit : (src, string) Core_kernel.Blit_intf.blit
              val sub : (src, string) Core_kernel.Blit_intf.sub
              val subo : (src, string) Core_kernel.Blit_intf.subo
            end
          module To_bigstring :
            sig
              val blit :
                (src, Core_kernel.Std.Bigstring.t) Core_kernel.Blit_intf.blit
              val blito :
                (src, Core_kernel.Std.Bigstring.t)
                Core_kernel.Blit_intf.blito
              val unsafe_blit :
                (src, Core_kernel.Std.Bigstring.t) Core_kernel.Blit_intf.blit
              val sub :
                (src, Core_kernel.Std.Bigstring.t) Core_kernel.Blit_intf.sub
              val subo :
                (src, Core_kernel.Std.Bigstring.t) Core_kernel.Blit_intf.subo
            end
          type ('a, 'b, 'w) t = ('b, 'w) t -> pos:int -> 'a
            constraint 'b = [> Core_kernel.Std.read ]
          val char : (char, [> Core_kernel.Std.read ], 'w) t
          val int8 : (int, [> Core_kernel.Std.read ], 'w) t
          val int16_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int16_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int32_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int32_le : (int, [> Core_kernel.Std.read ], 'w) t
          val uint8 : (int, [> Core_kernel.Std.read ], 'w) t
          val uint16_be : (int, [> Core_kernel.Std.read ], 'w) t
          val uint16_le : (int, [> Core_kernel.Std.read ], 'w) t
          val uint32_be : (int, [> Core_kernel.Std.read ], 'w) t
          val uint32_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_t_be :
            (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
          val int64_t_le :
            (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
          val tail_padded_fixed_string :
            padding:char ->
            len:int -> (string, [> Core_kernel.Std.read ], 'w) t
          val string :
            ?str_pos:int ->
            ?len:int -> (string, [> Core_kernel.Std.read ], 'w) t
          val bigstring :
            ?str_pos:int ->
            ?len:int ->
            (Core_kernel.Std.Bigstring.t, [> Core_kernel.Std.read ], 'w) t
          val bin_prot :
            'Core_kernel.Std.Bin_prot.Type_class.reader ->
            ('a, [> Core_kernel.Std.read ], 'w) t
          val int64_be_trunc : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_le_trunc : (int, [> Core_kernel.Std.read ], 'w) t
        end
      module Poke :
        sig
          val decimal :
            (Core_kernel.Std.read_write, 'w) Iobuf.t -> pos:int -> int -> int
          type ('a, 'b, 'w) t =
              (Core_kernel.Std.read_write, 'w) t -> pos:int -> '-> unit
            constraint 'b = [> Core_kernel.Std.read ]
          val char : (char, [> Core_kernel.Std.read ], 'w) t
          val int8 : (int, [> Core_kernel.Std.read ], 'w) t
          val int16_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int16_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int32_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int32_le : (int, [> Core_kernel.Std.read ], 'w) t
          val uint8 : (int, [> Core_kernel.Std.read ], 'w) t
          val uint16_be : (int, [> Core_kernel.Std.read ], 'w) t
          val uint16_le : (int, [> Core_kernel.Std.read ], 'w) t
          val uint32_be : (int, [> Core_kernel.Std.read ], 'w) t
          val uint32_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_be : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_le : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_t_be :
            (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
          val int64_t_le :
            (Core_kernel.Std.Int64.t, [> Core_kernel.Std.read ], 'w) t
          val tail_padded_fixed_string :
            padding:char ->
            len:int -> (string, [> Core_kernel.Std.read ], 'w) t
          val string :
            ?str_pos:int ->
            ?len:int -> (string, [> Core_kernel.Std.read ], 'w) t
          val bigstring :
            ?str_pos:int ->
            ?len:int ->
            (Core_kernel.Std.Bigstring.t, [> Core_kernel.Std.read ], 'w) t
          val bin_prot :
            'Core_kernel.Std.Bin_prot.Type_class.writer ->
            ('a, [> Core_kernel.Std.read ], 'w) t
          val int64_be_trunc : (int, [> Core_kernel.Std.read ], 'w) t
          val int64_le_trunc : (int, [> Core_kernel.Std.read ], 'w) t
        end
    end
  val crc32 :
    ([> Core_kernel.Std.read ], 'a) Iobuf.t -> Core_kernel.Std.Int63.t
  val fill_bin_prot :
    (Core_kernel.Std.read_write, seek) Iobuf.t ->
    'Core_kernel.Std.Bin_prot.Type_class.writer ->
    '-> unit Core_kernel.Std.Or_error.t
  val consume_bin_prot :
    ([> Core_kernel.Std.read ], seek) Iobuf.t ->
    'Core_kernel.Std.Bin_prot.Type_class.reader ->
    'Core_kernel.Std.Or_error.t
  module Blit :
    sig
      type 'rw t_no_seek = ('rw, no_seek) Iobuf.t
      val blit :
        ([> Core_kernel.Perms.Export.read ] t_no_seek,
         [> Core_kernel.Perms.Export.write ] t_no_seek)
        Core_kernel.Blit_intf.blit
      val blito :
        ([> Core_kernel.Perms.Export.read ] t_no_seek,
         [> Core_kernel.Perms.Export.write ] t_no_seek)
        Core_kernel.Blit_intf.blito
      val unsafe_blit :
        ([> Core_kernel.Perms.Export.read ] t_no_seek,
         [> Core_kernel.Perms.Export.write ] t_no_seek)
        Core_kernel.Blit_intf.blit
      val sub :
        ([> Core_kernel.Std.read ], no_seek) Iobuf.t ->
        pos:int -> len:int -> ('a, 'b) Iobuf.t
      val subo :
        ?pos:int ->
        ?len:int ->
        ([> Core_kernel.Std.read ], no_seek) Iobuf.t -> ('a, 'b) Iobuf.t
    end
  module Blit_consume :
    sig
      val blit :
        src:([> Core_kernel.Std.read ], seek) Iobuf.t ->
        dst:([> Core_kernel.Std.write ], no_seek) Iobuf.t ->
        dst_pos:int -> len:int -> unit
      val blito :
        src:([> Core_kernel.Std.read ], seek) Iobuf.t ->
        ?src_len:int ->
        dst:([> Core_kernel.Std.write ], no_seek) Iobuf.t ->
        ?dst_pos:int -> unit -> unit
      val unsafe_blit :
        src:([> Core_kernel.Std.read ], seek) Iobuf.t ->
        dst:([> Core_kernel.Std.write ], no_seek) Iobuf.t ->
        dst_pos:int -> len:int -> unit
      val sub :
        ([> Core_kernel.Std.read ], seek) Iobuf.t ->
        len:int -> ('a, 'b) Iobuf.t
      val subo :
        ?len:int ->
        ([> Core_kernel.Std.read ], seek) Iobuf.t -> ('a, 'b) Iobuf.t
    end
  module Blit_fill :
    sig
      val blit :
        src:([> Core_kernel.Std.read ], no_seek) Iobuf.t ->
        src_pos:int ->
        dst:([> Core_kernel.Std.write ], seek) Iobuf.t -> len:int -> unit
      val blito :
        src:([> Core_kernel.Std.read ], no_seek) Iobuf.t ->
        ?src_pos:int ->
        ?src_len:int ->
        dst:([> Core_kernel.Std.write ], seek) Iobuf.t -> unit -> unit
      val unsafe_blit :
        src:([> Core_kernel.Std.read ], no_seek) Iobuf.t ->
        src_pos:int ->
        dst:([> Core_kernel.Std.write ], seek) Iobuf.t -> len:int -> unit
    end
  module Blit_consume_and_fill :
    sig
      val blit :
        src:([> Core_kernel.Std.read ], seek) Iobuf.t ->
        dst:([> Core_kernel.Std.write ], seek) Iobuf.t -> len:int -> unit
      val blito :
        src:([> Core_kernel.Std.read ], seek) Iobuf.t ->
        ?src_len:int ->
        dst:([> Core_kernel.Std.write ], seek) Iobuf.t -> unit -> unit
      val unsafe_blit :
        src:([> Core_kernel.Std.read ], seek) Iobuf.t ->
        dst:([> Core_kernel.Std.write ], seek) Iobuf.t -> len:int -> unit
    end
  val read_assume_fd_is_nonblocking :
    (Core_kernel.Std.read_write, seek) Iobuf.t ->
    Iobuf_intf.Unix.File_descr.t -> Syscall_result.Unit.t
  val pread_assume_fd_is_nonblocking :
    (Core_kernel.Std.read_write, seek) Iobuf.t ->
    Iobuf_intf.Unix.File_descr.t -> offset:int -> unit
  val recvfrom_assume_fd_is_nonblocking :
    (Core_kernel.Std.read_write, seek) Iobuf.t ->
    Iobuf_intf.Unix.File_descr.t -> Iobuf_intf.Unix.sockaddr
  val recvmmsg_assume_fd_is_nonblocking :
    (Iobuf_intf.Unix.File_descr.t ->
     ?count:int ->
     ?srcs:Iobuf_intf.Unix.sockaddr array ->
     (Core_kernel.Std.read_write, seek) Iobuf.t array ->
     Iobuf_intf.Unix.Syscall_result.Int.t)
    Core_kernel.Std.Or_error.t
  val recvmmsg_assume_fd_is_nonblocking_no_options :
    (Iobuf_intf.Unix.File_descr.t ->
     count:int ->
     (Core_kernel.Std.read_write, seek) Iobuf.t array ->
     Iobuf_intf.Unix.Syscall_result.Int.t)
    Core_kernel.Std.Or_error.t
  val send_nonblocking_no_sigpipe :
    unit ->
    (([> Core_kernel.Std.read ], seek) Iobuf.t ->
     Iobuf_intf.Unix.File_descr.t -> Iobuf_intf.Unix.Syscall_result.Unit.t)
    Core_kernel.Std.Or_error.t
  val sendto_nonblocking_no_sigpipe :
    unit ->
    (([> Core_kernel.Std.read ], seek) Iobuf.t ->
     Iobuf_intf.Unix.File_descr.t ->
     Iobuf_intf.Unix.sockaddr -> Iobuf_intf.Unix.Syscall_result.Unit.t)
    Core_kernel.Std.Or_error.t
  val write_assume_fd_is_nonblocking :
    ([> Core_kernel.Std.read ], seek) Iobuf.t ->
    Iobuf_intf.Unix.File_descr.t -> unit
  val pwrite_assume_fd_is_nonblocking :
    ([> Core_kernel.Std.read ], seek) Iobuf.t ->
    Iobuf_intf.Unix.File_descr.t -> offset:int -> unit
  module Expert :
    sig
      val buf : ('a, 'b) Iobuf.t -> Core_kernel.Std.Bigstring.t
      val hi_max : ('a, 'b) Iobuf.t -> int
      val hi : ('a, 'b) Iobuf.t -> int
      val lo : ('a, 'b) Iobuf.t -> int
      val lo_min : ('a, 'b) Iobuf.t -> int
    end
  val sexp_of_seek : seek -> Sexplib.Sexp.t
  val sexp_of_no_seek : no_seek -> Sexplib.Sexp.t
  val sexp_of_t :
    ('data_perm_read_write -> Sexplib.Sexp.t) ->
    ('seek_permission -> Sexplib.Sexp.t) ->
    ('data_perm_read_write, 'seek_permission) Iobuf.t -> Sexplib.Sexp.t
end