sig
  val set_attrs : JSOO.obj -> (string * string) list -> unit
  val set_attr_opt : JSOO.obj -> string -> string option -> unit
  val register_event_opt : JSOO.obj -> string -> (unit -> 'a) option -> unit
  val create : string -> ?attrs:(string * string) list -> unit -> JSOO.obj
  val img :
    ?src:string ->
    ?alt:string ->
    ?style:string -> ?attrs:(string * string) list -> unit -> JSOO.obj
  val div :
    ?style:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val li :
    ?style:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val ol :
    ?style:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val ul :
    ?style:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val span :
    ?style:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val table :
    ?style:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val tr :
    ?style:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val td :
    ?style:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val map_table :
    ?style:string ->
    ?attrs:(string * string) list ->
    ?tr_style:string ->
    ?tr_attrs:(string * string) list ->
    ?td_style:string ->
    ?td_attrs:(string * string) list ->
    (int -> int -> '-> JSOO.obj) -> 'a array array -> JSOO.obj
  val h1 :
    ?style:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val select :
    ?style:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val option :
    ?style:string ->
    ?onclick:(unit -> 'a) ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  val a :
    ?style:string ->
    ?onclick:(unit -> 'a) ->
    ?href:string ->
    ?name:string ->
    ?attrs:(string * string) list -> JSOO.obj list -> JSOO.obj
  type 'a input = {
    get : unit -> 'a;
    set : '-> unit;
    editable : bool -> unit;
    node : Js.Node.t;
    mutable callback : 'Js.Html.input -> unit;
  }
  val input :
    ('-> string) ->
    (string -> 'a) ->
    '-> int -> bool -> ('Js.Html.input -> unit) -> 'Js.Html.input
  val int_input :
    ?editable:bool ->
    ?size:int ->
    ?value:int ->
    ?callback:(int Js.Html.input -> unit) -> unit -> int Js.Html.input
  val string : string -> JSOO.obj
  val int : int -> JSOO.obj
  val br : ?attrs:(string * string) list -> unit -> JSOO.obj
end