sig
  type t
  val mk_jid : string option -> string -> string option -> Jid.t
  exception Bad_jid
  val of_string : string -> Jid.t
  val to_string : Jid.t -> string
  val node : Jid.t -> string option
  val domain : Jid.t -> string
  val resource : Jid.t -> string option
  val set_node : Jid.t -> string option -> unit
  val set_domain : Jid.t -> string -> unit
  val set_resource : Jid.t -> string option -> unit
  val strip_resource : Jid.t -> Jid.t
end