sig
  type in_channel
  val in_channel_of_descr : Lwt_unix.file_descr -> Lwt_chan.in_channel
  val make_in_channel :
    ?close:(unit -> unit Lwt.t) ->
    (string -> int -> int -> int Lwt.t) -> Lwt_chan.in_channel
  val input_line : Lwt_chan.in_channel -> string Lwt.t
  val input_value : Lwt_chan.in_channel -> 'Lwt.t
  val input : Lwt_chan.in_channel -> string -> int -> int -> int Lwt.t
  val really_input :
    Lwt_chan.in_channel -> string -> int -> int -> unit Lwt.t
  val input_char : Lwt_chan.in_channel -> char Lwt.t
  val input_binary_int : Lwt_chan.in_channel -> int Lwt.t
  val open_in_gen :
    Unix.open_flag list -> int -> string -> Lwt_chan.in_channel
  val open_in : string -> Lwt_chan.in_channel
  val close_in : Lwt_chan.in_channel -> unit Lwt.t
  type out_channel
  val out_channel_of_descr : Lwt_unix.file_descr -> Lwt_chan.out_channel
  val make_out_channel :
    ?close:(unit -> unit Lwt.t) ->
    (string -> int -> int -> int Lwt.t) -> Lwt_chan.out_channel
  val output : Lwt_chan.out_channel -> string -> int -> int -> unit Lwt.t
  val flush : Lwt_chan.out_channel -> unit Lwt.t
  val output_string : Lwt_chan.out_channel -> string -> unit Lwt.t
  val output_value : Lwt_chan.out_channel -> '-> unit Lwt.t
  val output_char : Lwt_chan.out_channel -> char -> unit Lwt.t
  val output_binary_int : Lwt_chan.out_channel -> int -> unit Lwt.t
  val open_out_gen :
    Unix.open_flag list -> int -> string -> Lwt_chan.out_channel
  val open_out : string -> Lwt_chan.out_channel
  val close_out : Lwt_chan.out_channel -> unit Lwt.t
  val open_connection :
    Unix.sockaddr -> (Lwt_chan.in_channel * Lwt_chan.out_channel) Lwt.t
end