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 get_send_buffer_size : t -> Int_result.int
  val get_send_buffer_size_exn : t -> int
  val get_recv_buffer_size : t -> Int_result.int
  val get_recv_buffer_size_exn : t -> int
  val set_send_buffer_size : t -> int -> Int_result.unit
  val set_send_buffer_size_exn : t -> int -> unit
  val set_recv_buffer_size : t -> int -> Int_result.unit
  val set_recv_buffer_size_exn : t -> int -> unit
  val fileno : t -> Unix.file_descr uv_result
  val fileno_exn : t -> Unix.file_descr
  val to_stream : Uwt.Pipe.t -> Uwt.Stream.t
  val init : ?ipc:bool -> unit -> Uwt.Pipe.t
  val openpipe : ?ipc:bool -> Unix.file_descr -> Uwt.Pipe.t uv_result
  val openpipe_exn : ?ipc:bool -> Unix.file_descr -> Uwt.Pipe.t
  val bind : Uwt.Pipe.t -> path:string -> Int_result.unit
  val bind_exn : Uwt.Pipe.t -> path:string -> unit
  val getsockname : Uwt.Pipe.t -> string uv_result
  val getsockname_exn : Uwt.Pipe.t -> string
  val getpeername : Uwt.Pipe.t -> string uv_result
  val getpeername_exn : Uwt.Pipe.t -> string
  val pending_instances : Uwt.Pipe.t -> int -> Int_result.unit
  val pending_instances_exn : Uwt.Pipe.t -> int -> unit
  val accept : Uwt.Pipe.t -> Uwt.Pipe.t uv_result
  val accept_exn : Uwt.Pipe.t -> Uwt.Pipe.t
  val accept_raw : server:Uwt.Pipe.t -> client:Uwt.Pipe.t -> Int_result.unit
  val accept_raw_exn : server:Uwt.Pipe.t -> client:Uwt.Pipe.t -> unit
  val pending_count : Uwt.Pipe.t -> Int_result.int
  val pending_count_exn : Uwt.Pipe.t -> int
  type ipc_result =
      Ipc_error of error
    | Ipc_none
    | Ipc_tcp of Uwt.Tcp.t
    | Ipc_udp of Uwt.Udp.t
    | Ipc_pipe of Uwt.Pipe.t
  val accept_ipc : Uwt.Pipe.t -> Uwt.Pipe.ipc_result
  val write2 :
    ?pos:int ->
    ?len:int -> buf:bytes -> send:Uwt.Tcp.t -> Uwt.Pipe.t -> unit Lwt.t
  val write2_ba :
    ?pos:int ->
    ?len:int -> buf:buf -> send:Uwt.Tcp.t -> Uwt.Pipe.t -> unit Lwt.t
  val write2_string :
    ?pos:int ->
    ?len:int -> buf:string -> send:Uwt.Tcp.t -> Uwt.Pipe.t -> unit Lwt.t
  val write2_pipe :
    ?pos:int ->
    ?len:int -> buf:bytes -> send:Uwt.Pipe.t -> Uwt.Pipe.t -> unit Lwt.t
  val write2_pipe_ba :
    ?pos:int ->
    ?len:int -> buf:buf -> send:Uwt.Pipe.t -> Uwt.Pipe.t -> unit Lwt.t
  val write2_pipe_string :
    ?pos:int ->
    ?len:int -> buf:string -> send:Uwt.Pipe.t -> Uwt.Pipe.t -> unit Lwt.t
  val write2_udp :
    ?pos:int ->
    ?len:int -> buf:bytes -> send:Uwt.Udp.t -> Uwt.Pipe.t -> unit Lwt.t
  val write2_udp_ba :
    ?pos:int ->
    ?len:int -> buf:buf -> send:Uwt.Udp.t -> Uwt.Pipe.t -> unit Lwt.t
  val write2_udp_string :
    ?pos:int ->
    ?len:int -> buf:string -> send:Uwt.Udp.t -> Uwt.Pipe.t -> unit Lwt.t
  val connect : Uwt.Pipe.t -> path:string -> unit Lwt.t
  val with_pipe : ?ipc:bool -> (Uwt.Pipe.t -> 'Lwt.t) -> 'Lwt.t
  val with_connect : path:string -> (Uwt.Pipe.t -> 'Lwt.t) -> 'Lwt.t
  val with_open :
    ?ipc:bool -> Unix.file_descr -> (Uwt.Pipe.t -> 'Lwt.t) -> 'Lwt.t
  type chmod = Pipe_readable | Pipe_writeable | Pipe_readable_writeable
  val chmod : Uwt.Pipe.t -> Uwt.Pipe.chmod -> Int_result.unit
  val chmod_exn : Uwt.Pipe.t -> Uwt.Pipe.chmod -> unit
end