sig
  val window : JSOO.obj
  val document : JSOO.obj
  val body : JSOO.obj
  val text : string -> JSOO.obj
  val element : string -> JSOO.obj
  val get_attribute : string -> JSOO.obj -> string
  val set_attribute : string -> string -> JSOO.obj -> unit
  val remove_attribute : string -> JSOO.obj -> unit
  val get_element_by_id : string -> JSOO.obj -> JSOO.obj
  val get_element_by_tag : string -> JSOO.obj -> JSOO.obj
  external children : AXOJs.obj -> AXOJs.obj list = "caml_js_node_children"
  external n_children : AXOJs.obj -> int = "caml_js_node_n_children"
  external child : AXOJs.obj -> int -> AXOJs.obj = "caml_js_node_child"
  val child : int -> AXOJs.obj -> AXOJs.obj
  val get_parent : JSOO.obj -> JSOO.obj
  val copy : bool -> JSOO.obj -> JSOO.obj
  val get_value : JSOO.obj -> JSOO.obj
  val register_event : string -> ('-> 'b) -> '-> JSOO.obj -> unit
  val clear_event : string -> '-> JSOO.obj -> unit
  val append : JSOO.obj -> JSOO.obj -> unit
  val remove : JSOO.obj -> JSOO.obj -> unit
  val insert_before : JSOO.obj -> JSOO.obj -> JSOO.obj -> unit
  val iter : (AXOJs.obj -> 'a) -> AXOJs.obj -> unit
  val iter_rec : (AXOJs.obj -> 'a) -> AXOJs.obj -> unit
  val fold_left : ('-> AXOJs.obj -> 'a) -> '-> AXOJs.obj -> 'a
  val empty : AXOJs.obj -> unit
  val replace_all : AXOJs.obj -> JSOO.obj -> unit
  val iter_width : (AXOJs.obj -> 'a) -> AXOJs.obj -> unit
  val iter_depth : (AXOJs.obj -> 'a) -> AXOJs.obj -> unit
end