sig
  type socket
  type context
  val init : Unix.sockaddr -> Utp_lwt.context
  val connect : Utp_lwt.context -> Unix.sockaddr -> Utp_lwt.socket Lwt.t
  val accept : Utp_lwt.context -> (Unix.sockaddr * Utp_lwt.socket) Lwt.t
  val read : Utp_lwt.socket -> bytes Lwt.t
  val write : Utp_lwt.socket -> bytes -> int -> int -> unit Lwt.t
  val close : Utp_lwt.socket -> unit Lwt.t
  val destroy : Utp_lwt.context -> unit Lwt.t
end