sig
  type 'a t
  val ( >>= ) :
    'a Irc_transport.IO.t ->
    ('a -> 'b Irc_transport.IO.t) -> 'b Irc_transport.IO.t
  val return : 'a -> 'a Irc_transport.IO.t
  type file_descr
  type inet_addr
  type config
  val open_socket :
    ?config:Irc_transport.IO.config ->
    Irc_transport.IO.inet_addr ->
    int -> Irc_transport.IO.file_descr Irc_transport.IO.t
  val close_socket : Irc_transport.IO.file_descr -> unit Irc_transport.IO.t
  val read :
    Irc_transport.IO.file_descr ->
    Bytes.t -> int -> int -> int Irc_transport.IO.t
  val write :
    Irc_transport.IO.file_descr ->
    Bytes.t -> int -> int -> int Irc_transport.IO.t
  val read_with_timeout :
    timeout:int ->
    Irc_transport.IO.file_descr ->
    Bytes.t -> int -> int -> int option Irc_transport.IO.t
  val gethostbyname :
    string -> Irc_transport.IO.inet_addr list Irc_transport.IO.t
  val iter :
    ('a -> unit Irc_transport.IO.t) -> 'a list -> unit Irc_transport.IO.t
  val sleep : int -> unit Irc_transport.IO.t
  val pick : ('a Irc_transport.IO.t list -> 'a Irc_transport.IO.t) option
end