sig
  module Make :
    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
end