sig
  type t = JSOO.obj
  val document : JSOO.obj
  val text : string -> JSOO.obj
  val element : string -> JSOO.obj
  val get_attribute : JSOO.obj -> string -> string
  val set_attribute : JSOO.obj -> string -> string -> unit
  val remove_attribute : JSOO.obj -> string -> unit
  val get_element_by_id : JSOO.obj -> string -> JSOO.obj
  val register_event : JSOO.obj -> string -> ('-> 'b) -> '-> unit
  val clear_event : JSOO.obj -> string -> '-> unit
  val append : JSOO.obj -> JSOO.obj -> unit
  val remove : JSOO.obj -> JSOO.obj -> unit
  external children : Js.Node.t -> Js.Node.t list = "caml_js_node_children"
  external n_children : Js.Node.t -> int = "caml_js_node_n_children"
  external child : Js.Node.t -> int -> Js.Node.t = "caml_js_node_child"
  val iter : (Js.Node.t -> 'a) -> Js.Node.t -> unit
  val fold_left : ('-> Js.Node.t -> 'a) -> '-> Js.Node.t -> 'a
  val empty : Js.Node.t -> unit
  val replace_all : Js.Node.t -> JSOO.obj -> unit
end