functor () ->
  sig
    type seek = Iobuf_intf.seek
    type no_seek = Iobuf_intf.no_seek
    type ('data_perm_read_write, 'seek_permission) t =
        ('data_perm_read_write, 'seek_permission) Iobuf.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) t
    val of_bigstring :
      ?pos:int ->
      ?len:int ->
      Core_kernel.Std.Bigstring.t -> ([< Core_kernel.Std.read_write ], 'a) t
    val of_string : string -> ('a, 'b) t
    val sub_shared : ?pos:int -> ?len:int -> ('d, 'a) t -> ('d, 'b) t
    val set_bounds_and_buffer :
      src:([> Core_kernel.Std.write ] as 'data, 'a) t ->
      dst:('data, seek) t -> unit
    val set_bounds_and_buffer_sub :
      ?pos:int ->
      ?len:int ->
      src:([> Core_kernel.Std.write ] as 'data, 'a) t ->
      dst:('data, seek) t -> unit -> unit
    val read_only :
      ([> Core_kernel.Std.read ], 's) t -> (Core_kernel.Std.read, 's) t
    val no_seek : ('r, 'a) t -> ('r, no_seek) t
    val capacity : ('a, 'b) t -> int
    val length : ('a, 'b) t -> int
    val is_empty : ('a, 'b) t -> bool
    val narrow : ('a, seek) t -> unit
    val narrow_lo : ('a, seek) t -> unit
    val narrow_hi : ('a, seek) 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 :
      sig
        type t = Iobuf.Lo_bound.t
        val window : ('a, 'b) Iobuf.t -> t
        val limit : ('a, 'b) Iobuf.t -> t
        val restore : t -> ('a, Iobuf_intf.seek) Iobuf.t -> unit
        val sexp_of_t : t -> Sexplib.Sexp.t
      end
    module Hi_bound :
      sig
        type t = Iobuf.Hi_bound.t
        val window : ('a, 'b) Iobuf.t -> t
        val limit : ('a, 'b) Iobuf.t -> t
        val restore : t -> ('a, Iobuf_intf.seek) Iobuf.t -> unit
        val sexp_of_t : t -> Sexplib.Sexp.t
      end
    val advance : ('a, seek) t -> int -> unit
    val unsafe_advance : ('a, seek) t -> int -> unit
    val resize : ('a, seek) t -> len:int -> unit
    val unsafe_resize : ('a, seek) t -> len:int -> unit
    val rewind : ('a, seek) t -> unit
    val reset : ('a, seek) t -> unit
    val flip_lo : ('a, seek) t -> unit
    val bounded_flip_lo : ('a, seek) t -> Lo_bound.t -> unit
    val compact : (Core_kernel.Std.read_write, seek) t -> unit
    val bounded_compact :
      (Core_kernel.Std.read_write, seek) t ->
      Lo_bound.t -> Hi_bound.t -> unit
    val flip_hi : ('a, seek) t -> unit
    val bounded_flip_hi : ('a, seek) t -> Hi_bound.t -> unit
    val protect_window_and_bounds :
      ('rw, no_seek) t -> f:(('rw, seek) t -> 'a) -> 'a
    val to_string : ?len:int -> ([> Core_kernel.Std.read ], 'a) t -> string
    val to_string_hum :
      ?bounds:[ `Limits | `Whole | `Window ] ->
      ([> Core_kernel.Std.read ], 'a) t -> string
    module Consume :
      sig
        type src = (Core_kernel.Std.read, Iobuf.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, Iobuf.seek) Iobuf.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, Iobuf.seek) Iobuf.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) t
      end
    module Peek :
      sig
        type src = (Core_kernel.Std.read, Iobuf.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) Iobuf.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) Iobuf.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, Iobuf.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, Iobuf.seek) Iobuf.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, Iobuf.seek) Iobuf.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) t
          end
        module Peek :
          sig
            type src = (Core_kernel.Std.read, Iobuf.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) Iobuf.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) Iobuf.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) t -> Core_kernel.Std.Int63.t
    val fill_bin_prot :
      (Core_kernel.Std.read_write, seek) 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) t ->
      'Core_kernel.Std.Bin_prot.Type_class.reader ->
      'Core_kernel.Std.Or_error.t
    module Blit :
      sig
        type 'rw t_no_seek = ('rw, Iobuf.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 ], Iobuf.no_seek) Iobuf.t ->
          pos:int -> len:int -> ('a, 'b) Iobuf.t
        val subo :
          ?pos:int ->
          ?len:int ->
          ([> Core_kernel.Std.read ], Iobuf.no_seek) Iobuf.t ->
          ('a, 'b) Iobuf.t
      end
    module Blit_consume :
      sig
        val blit :
          src:([> Core_kernel.Std.read ], Iobuf.seek) Iobuf.t ->
          dst:([> Core_kernel.Std.write ], Iobuf.no_seek) Iobuf.t ->
          dst_pos:int -> len:int -> unit
        val blito :
          src:([> Core_kernel.Std.read ], Iobuf.seek) Iobuf.t ->
          ?src_len:int ->
          dst:([> Core_kernel.Std.write ], Iobuf.no_seek) Iobuf.t ->
          ?dst_pos:int -> unit -> unit
        val unsafe_blit :
          src:([> Core_kernel.Std.read ], Iobuf.seek) Iobuf.t ->
          dst:([> Core_kernel.Std.write ], Iobuf.no_seek) Iobuf.t ->
          dst_pos:int -> len:int -> unit
        val sub :
          ([> Core_kernel.Std.read ], Iobuf.seek) Iobuf.t ->
          len:int -> ('a, 'b) Iobuf.t
        val subo :
          ?len:int ->
          ([> Core_kernel.Std.read ], Iobuf.seek) Iobuf.t -> ('a, 'b) Iobuf.t
      end
    module Blit_fill :
      sig
        val blit :
          src:([> Core_kernel.Std.read ], Iobuf.no_seek) Iobuf.t ->
          src_pos:int ->
          dst:([> Core_kernel.Std.write ], Iobuf.seek) Iobuf.t ->
          len:int -> unit
        val blito :
          src:([> Core_kernel.Std.read ], Iobuf.no_seek) Iobuf.t ->
          ?src_pos:int ->
          ?src_len:int ->
          dst:([> Core_kernel.Std.write ], Iobuf.seek) Iobuf.t ->
          unit -> unit
        val unsafe_blit :
          src:([> Core_kernel.Std.read ], Iobuf.no_seek) Iobuf.t ->
          src_pos:int ->
          dst:([> Core_kernel.Std.write ], Iobuf.seek) Iobuf.t ->
          len:int -> unit
      end
    module Blit_consume_and_fill :
      sig
        val blit :
          src:([> Core_kernel.Std.read ], Iobuf.seek) Iobuf.t ->
          dst:([> Core_kernel.Std.write ], Iobuf.seek) Iobuf.t ->
          len:int -> unit
        val blito :
          src:([> Core_kernel.Std.read ], Iobuf.seek) Iobuf.t ->
          ?src_len:int ->
          dst:([> Core_kernel.Std.write ], Iobuf.seek) Iobuf.t ->
          unit -> unit
        val unsafe_blit :
          src:([> Core_kernel.Std.read ], Iobuf.seek) Iobuf.t ->
          dst:([> Core_kernel.Std.write ], Iobuf.seek) Iobuf.t ->
          len:int -> unit
      end
    val read_assume_fd_is_nonblocking :
      (Core_kernel.Std.read_write, seek) t ->
      Iobuf_intf.Unix.File_descr.t -> Syscall_result.Unit.t
    val pread_assume_fd_is_nonblocking :
      (Core_kernel.Std.read_write, seek) t ->
      Iobuf_intf.Unix.File_descr.t -> offset:int -> unit
    val recvfrom_assume_fd_is_nonblocking :
      (Core_kernel.Std.read_write, seek) 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) 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) 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) 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) 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) t ->
      Iobuf_intf.Unix.File_descr.t -> unit
    val pwrite_assume_fd_is_nonblocking :
      ([> Core_kernel.Std.read ], seek) 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) t -> Sexplib.Sexp.t
    val check_invariant : bool Pervasives.ref
    val show_messages : bool Pervasives.ref
  end