sig
  type srv =
      Srv :
        (unit, unit, Eliom_service.get, 'a, 'b, 'c, 'd, [ `WithoutSuffix ],
         unit, unit, Eliom_service.non_ocaml)
        Eliom_service.t -> Eliom_tools.srv
  type 'a hierarchical_site =
      Eliom_tools.main_page *
      ('a * 'Eliom_tools.hierarchical_site_item) list
  and 'a hierarchical_site_item =
      Disabled
    | Site_tree of 'Eliom_tools.hierarchical_site
  and main_page =
      Main_page of Eliom_tools.srv
    | Default_page of Eliom_tools.srv
    | Not_clickable
  module type HTML5_TOOLS =
    sig
      val menu :
        ?classe:Html_types.nmtoken list ->
        ?id:string ->
        ((unit, unit, Eliom_service.get, 'a, 'b, 'c, 'd, [ `WithoutSuffix ],
          unit, unit, Eliom_service.non_ocaml)
         Eliom_service.t *
         [< Html_types.flow5_without_interactive ] Eliom_content.Html.elt
         list)
        list ->
        ?service:(unit, unit, Eliom_service.get, 'e, 'f, 'g, 'h,
                  [ `WithoutSuffix ], unit, unit, Eliom_service.non_ocaml)
                 Eliom_service.t ->
        unit -> [> `Ul ] Eliom_content.Html.elt
      val hierarchical_menu_depth_first :
        ?classe:Html_types.nmtoken list ->
        ?id:string ->
        ?whole_tree:bool ->
        [< Html_types.a_content ] Eliom_content.Html.elt list
        Eliom_tools.hierarchical_site ->
        ?service:(unit, unit, Eliom_service.get, 'a, 'b, 'c, 'd,
                  [ `WithoutSuffix ], unit, unit, Eliom_service.non_ocaml)
                 Eliom_service.t ->
        unit -> [> `Ul ] Eliom_content.Html.elt list
      val hierarchical_menu_breadth_first :
        ?classe:Html_types.nmtoken list ->
        ?id:string ->
        [< Html_types.a_content ] Eliom_content.Html.elt list
        Eliom_tools.hierarchical_site ->
        ?service:(unit, unit, Eliom_service.get, 'a, 'b, 'c, 'd,
                  [ `WithoutSuffix ], unit, unit, Eliom_service.non_ocaml)
                 Eliom_service.t ->
        unit -> [> `Ul ] Eliom_content.Html.elt list
      val structure_links :
        [< Html_types.a_content ] Eliom_content.Html.elt list
        Eliom_tools.hierarchical_site ->
        ?service:(unit, unit, Eliom_service.get, 'a, 'b, 'c, 'd,
                  [ `WithoutSuffix ], unit, unit, Eliom_service.non_ocaml)
                 Eliom_service.t ->
        unit -> [> `Link ] Eliom_content.Html.elt list
      val head :
        title:string ->
        ?css:string list list ->
        ?js:string list list ->
        ?other:[< Html_types.head_content_fun ] Eliom_content.Html.elt list ->
        unit -> [ `Head ] Eliom_content.Html.elt
      val html :
        title:string ->
        ?a:[< Html_types.html_attrib ] Eliom_content.Html.attrib list ->
        ?css:string list list ->
        ?js:string list list ->
        ?other_head:[< Html_types.head_content_fun ] Eliom_content.Html.elt
                    list ->
        [ `Body ] Eliom_content.Html.elt -> [ `Html ] Eliom_content.Html.elt
    end
  module F : HTML5_TOOLS
  module D : HTML5_TOOLS
  val with_js_file : string list -> unit
  val with_css_file : string list -> unit
  val wrap_handler :
    (unit -> 'a option Lwt.t) ->
    ('get -> 'post -> 'res Lwt.t) ->
    ('-> 'get -> 'post -> 'res Lwt.t) -> 'get -> 'post -> 'res Lwt.t
  val menu_class : string
  val last_class : string
  val current_class : string
  val current_path_class : string
  val disabled_class : string
  val first_class : string
  val level_class : string
end