sig
  type -'a chan
  exception Exit
  val exit_hook : unit -> unit
  type 'a debug = string -> ('a, unit, string, unit) Pervasives.format4 -> 'a
  val debug : 'Join.debug
  module Site :
    sig
      type t
      val here : Join.Site.t
      val there : Unix.sockaddr -> Join.Site.t
      val listen : Unix.sockaddr -> unit
      val connect : Unix.file_descr -> unit
      val where_from : 'Join.chan -> Join.Site.t
      val equal : Join.Site.t -> Join.Site.t -> bool
      val compare : Join.Site.t -> Join.Site.t -> int
      val at_fail : Join.Site.t -> unit Join.chan -> unit
      val get_local_addr : unit -> Unix.inet_addr
    end
  module Ns :
    sig
      type t
      val here : Join.Ns.t
      val of_site : Join.Site.t -> Join.Ns.t
      val to_site : Join.Ns.t -> Join.Site.t
      val there : Unix.sockaddr -> Join.Ns.t
      val of_sockaddr : Unix.sockaddr -> Join.Ns.t
      val lookup : Join.Ns.t -> string -> 'a
      val register : Join.Ns.t -> string -> '-> unit
    end
end