sig
  type t
  val close : t -> Int_result.unit
  val close_noerr : t -> unit
  val close_wait : t -> unit Lwt.t
  val is_active : t -> bool
  val ref' : t -> unit
  val unref : t -> unit
  val has_ref : t -> bool
  val to_handle : t -> Handle.t
  val is_readable : t -> bool
  val is_writable : t -> bool
  val read_start : t -> cb:(Bytes.t uv_result -> unit) -> Int_result.unit
  val read_start_exn : t -> cb:(Bytes.t uv_result -> unit) -> unit
  val read_stop : t -> Int_result.unit
  val read_stop_exn : t -> unit
  val read : ?pos:int -> ?len:int -> t -> buf:bytes -> int Lwt.t
  val read_ba : ?pos:int -> ?len:int -> t -> buf:buf -> int Lwt.t
  val write_queue_size : t -> int
  val try_write : ?pos:int -> ?len:int -> t -> buf:bytes -> Int_result.int
  val try_write_ba : ?pos:int -> ?len:int -> t -> buf:buf -> Int_result.int
  val try_write_string :
    ?pos:int -> ?len:int -> t -> buf:string -> Int_result.int
  val write : ?pos:int -> ?len:int -> t -> buf:bytes -> unit Lwt.t
  val write_string : ?pos:int -> ?len:int -> t -> buf:string -> unit Lwt.t
  val write_ba : ?pos:int -> ?len:int -> t -> buf:buf -> unit Lwt.t
  val write_raw : ?pos:int -> ?len:int -> t -> buf:bytes -> unit Lwt.t
  val write_raw_string :
    ?pos:int -> ?len:int -> t -> buf:string -> unit Lwt.t
  val write_raw_ba : ?pos:int -> ?len:int -> t -> buf:buf -> unit Lwt.t
  val try_writev : t -> Iovec_write.t list -> Int_result.int
  val writev : t -> Iovec_write.t list -> unit Lwt.t
  val writev_emul : t -> Iovec_write.t list -> unit Lwt.t
  val writev_raw : t -> Iovec_write.t list -> unit Lwt.t
  val listen :
    t -> max:int -> cb:(t -> Int_result.unit -> unit) -> Int_result.unit
  val listen_exn : t -> max:int -> cb:(t -> Int_result.unit -> unit) -> unit
  val shutdown : t -> unit Lwt.t
  val set_blocking : t -> bool -> Int_result.unit
  val fileno : t -> Unix.file_descr uv_result
  val fileno_exn : t -> Unix.file_descr
  val to_stream : Uwt.Tty.t -> Uwt.Stream.t
  val init : file -> read:bool -> Uwt.Tty.t uv_result
  val init_exn : file -> read:bool -> Uwt.Tty.t
  type mode = Normal | Raw | Io
  val set_mode : Uwt.Tty.t -> mode:Uwt.Tty.mode -> Int_result.unit
  val set_mode_exn : Uwt.Tty.t -> mode:Uwt.Tty.mode -> unit
  val reset_mode : unit -> Int_result.unit
  val reset_mode_exn : unit -> unit
  type winsize = { width : int; height : int; }
  val get_winsize : Uwt.Tty.t -> Uwt.Tty.winsize uv_result
  val get_winsize_exn : Uwt.Tty.t -> Uwt.Tty.winsize
end