sig
  type 'a t
  val return : '-> 'PGOCaml_generic.THREAD.t
  val ( >>= ) :
    'PGOCaml_generic.THREAD.t ->
    ('-> 'PGOCaml_generic.THREAD.t) -> 'PGOCaml_generic.THREAD.t
  val fail : exn -> 'PGOCaml_generic.THREAD.t
  type in_channel
  type out_channel
  val open_connection :
    Unix.sockaddr ->
    (PGOCaml_generic.THREAD.in_channel * PGOCaml_generic.THREAD.out_channel)
    PGOCaml_generic.THREAD.t
  val output_char :
    PGOCaml_generic.THREAD.out_channel ->
    char -> unit PGOCaml_generic.THREAD.t
  val output_binary_int :
    PGOCaml_generic.THREAD.out_channel ->
    int -> unit PGOCaml_generic.THREAD.t
  val output_string :
    PGOCaml_generic.THREAD.out_channel ->
    string -> unit PGOCaml_generic.THREAD.t
  val flush :
    PGOCaml_generic.THREAD.out_channel -> unit PGOCaml_generic.THREAD.t
  val input_char :
    PGOCaml_generic.THREAD.in_channel -> char PGOCaml_generic.THREAD.t
  val input_binary_int :
    PGOCaml_generic.THREAD.in_channel -> int PGOCaml_generic.THREAD.t
  val really_input :
    PGOCaml_generic.THREAD.in_channel ->
    string -> int -> int -> unit PGOCaml_generic.THREAD.t
  val close_in :
    PGOCaml_generic.THREAD.in_channel -> unit PGOCaml_generic.THREAD.t
end