sig
  type t
  type error =
      End_of_input_stream
    | Unable_to_read_data
    | Unable_to_close_stream
    | Data_is_too_large
  exception Exception of InputStream.error
  val string_of_error : InputStream.error -> string
  val make_of_string : string -> InputStream.t
  val make_of_buffer : Buffer.t -> InputStream.t
  val make_of_channel : Pervasives.in_channel -> InputStream.t
  val make_of_descr : Unix.file_descr -> InputStream.t
  val make :
    read_byte:(unit -> int) ->
    ?read_bytes:(int -> string) ->
    ?read_bytes_into:(int -> string -> int -> unit) ->
    ?read_available_bytes:(int -> string -> int -> int) ->
    close:(unit -> unit) -> InputStream.t
  val read_u1 : InputStream.t -> Utils.u1
  val read_u2 : InputStream.t -> Utils.u2
  val read_u4 : InputStream.t -> Utils.u4
  val read_s1 : InputStream.t -> Utils.s1
  val read_s2 : InputStream.t -> Utils.s2
  val read_s4 : InputStream.t -> Utils.s4
  val read_s8 : InputStream.t -> Utils.s8
  val read_bytes : InputStream.t -> int -> string
  val read_bytes_into : InputStream.t -> int -> string -> int -> unit
  val read_available_bytes : InputStream.t -> int -> string -> int -> int
  val read_elements : InputStream.t -> (InputStream.t -> 'a) -> 'a list
  val close : InputStream.t -> unit
  val close_noerr : InputStream.t -> unit
  val try_with : InputStream.t -> (InputStream.t -> 'a) -> 'a
  val stdin : InputStream.t
end