sig
  type +'a elt
  type +'a attrib
  type uri
  type (_, _, _) star
  type 'a form_param
  type ('a, 'b, 'c) lazy_star =
      ?a:'Eliom_content_sigs.LINKS_AND_FORMS.attrib list ->
      'Eliom_content_sigs.LINKS_AND_FORMS.elt list Eliom_lazy.request ->
      'Eliom_content_sigs.LINKS_AND_FORMS.elt
  val lazy_form :
    ([< Html_types.form_attrib ], [< Html_types.form_content_fun ],
     [> Html_types.form ])
    Eliom_content_sigs.LINKS_AND_FORMS.lazy_star
  val make_uri :
    ?absolute:bool ->
    ?absolute_path:bool ->
    ?https:bool ->
    service:('get, unit, Eliom_service.get, 'a, 'b, 'c, 'd,
             [< `WithSuffix | `WithoutSuffix ], 'e, unit, 'f)
            Eliom_service.t ->
    ?hostname:string ->
    ?port:int ->
    ?fragment:string ->
    ?keep_nl_params:[ `All | `None | `Persistent ] ->
    ?nl_params:Eliom_parameter.nl_params_set -> 'get -> uri
  val uri_of_string : (unit -> string) -> uri
  val css_link :
    ?a:[< Html_types.link_attrib ] attrib list ->
    uri:uri -> unit -> [> Html_types.link ] elt
  val js_script :
    ?a:[< Html_types.script_attrib ] attrib list ->
    uri:uri -> unit -> [> Html_types.script ] elt
  val a :
    ?absolute:bool ->
    ?absolute_path:bool ->
    ?https:bool ->
    ?a:[< Html_types.a_attrib ] attrib list ->
    service:('get, unit, Eliom_service.get, 'b, 'c, 'd, 'e,
             [< `WithSuffix | `WithoutSuffix ], 'f, unit,
             Eliom_service.non_ocaml)
            Eliom_service.t ->
    ?hostname:string ->
    ?port:int ->
    ?fragment:string ->
    ?keep_nl_params:[ `All | `None | `Persistent ] ->
    ?nl_params:Eliom_parameter.nl_params_set ->
    ?xhr:bool -> 'a elt list -> 'get -> [> 'Html_types.a ] elt
  module Form :
    sig
      type 'a param = 'a form_param
      val float : float param
      val int : int param
      val int32 : int32 param
      val int64 : int64 param
      val nativeint : nativeint param
      val bool : bool param
      val string : string param
      val user : ('-> string) -> 'a param
      val make_post_uri_components :
        ?absolute:bool ->
        ?absolute_path:bool ->
        ?https:bool ->
        service:('get, 'post, Eliom_service.post, 'a, 'b, 'c, 'd,
                 [< `WithSuffix | `WithoutSuffix ], 'e, 'f, 'g)
                Eliom_service.t ->
        ?hostname:string ->
        ?port:int ->
        ?fragment:string ->
        ?keep_nl_params:[ `All | `None | `Persistent ] ->
        ?nl_params:Eliom_parameter.nl_params_set ->
        ?keep_get_na_params:bool ->
        'get ->
        'post ->
        string * (string * Eliommod_parameters.param) list * string option *
        (string * Eliommod_parameters.param) list
      val get_form :
        ?absolute:bool ->
        ?absolute_path:bool ->
        ?https:bool ->
        ?a:[< Html_types.form_attrib ] attrib list ->
        service:('a, unit, Eliom_service.get, 'b, 'c, 'd, 'e,
                 [< `WithSuffix | `WithoutSuffix ], 'gn, 'f,
                 Eliom_service.non_ocaml)
                Eliom_service.t ->
        ?hostname:string ->
        ?port:int ->
        ?fragment:string ->
        ?keep_nl_params:[ `All | `None | `Persistent ] ->
        ?nl_params:Eliom_parameter.nl_params_set ->
        ?xhr:bool ->
        ('gn -> [< Html_types.form_content ] elt list) ->
        [> Html_types.form ] elt
      val lwt_get_form :
        ?absolute:bool ->
        ?absolute_path:bool ->
        ?https:bool ->
        ?a:[< Html_types.form_attrib ] attrib list ->
        service:('a, unit, Eliom_service.get, 'b, 'c, 'd, 'e,
                 [< `WithSuffix | `WithoutSuffix ], 'gn, 'f,
                 Eliom_service.non_ocaml)
                Eliom_service.t ->
        ?hostname:string ->
        ?port:int ->
        ?fragment:string ->
        ?keep_nl_params:[ `All | `None | `Persistent ] ->
        ?nl_params:Eliom_parameter.nl_params_set ->
        ?xhr:bool ->
        ('gn -> [< Html_types.form_content ] elt list Lwt.t) ->
        [> Html_types.form ] elt Lwt.t
      val post_form :
        ?absolute:bool ->
        ?absolute_path:bool ->
        ?https:bool ->
        ?a:[< Html_types.form_attrib ] attrib list ->
        service:('get, 'a, Eliom_service.post, 'b, 'c, 'd, 'e,
                 [< `WithSuffix | `WithoutSuffix ], 'f, 'pn,
                 Eliom_service.non_ocaml)
                Eliom_service.t ->
        ?hostname:string ->
        ?port:int ->
        ?fragment:string ->
        ?keep_nl_params:[ `All | `None | `Persistent ] ->
        ?keep_get_na_params:bool ->
        ?nl_params:Eliom_parameter.nl_params_set ->
        ?xhr:bool ->
        ('pn -> [< Html_types.form_content ] elt list) ->
        'get -> [> Html_types.form ] elt
      val lwt_post_form :
        ?absolute:bool ->
        ?absolute_path:bool ->
        ?https:bool ->
        ?a:[< Html_types.form_attrib ] attrib list ->
        service:('get, 'a, Eliom_service.post, 'b, 'c, 'd, 'e,
                 [< `WithSuffix | `WithoutSuffix ], 'f, 'pn,
                 Eliom_service.non_ocaml)
                Eliom_service.t ->
        ?hostname:string ->
        ?port:int ->
        ?fragment:string ->
        ?keep_nl_params:[ `All | `None | `Persistent ] ->
        ?keep_get_na_params:bool ->
        ?nl_params:Eliom_parameter.nl_params_set ->
        ?xhr:bool ->
        ('pn -> [< Html_types.form_content ] elt list Lwt.t) ->
        'get -> [> Html_types.form ] elt Lwt.t
      val input :
        ?a:[< Html_types.input_attrib ] attrib list ->
        input_type:[< Html_types.input_type ] ->
        ?name:[< 'Eliom_parameter.setoneradio ] Eliom_parameter.param_name ->
        ?value:'-> 'a param -> [> Html_types.input ] elt
      val file_input :
        ?a:[< Html_types.input_attrib ] attrib list ->
        name:[< Eliom_lib.file_info Eliom_parameter.setoneradio ]
             Eliom_parameter.param_name ->
        unit -> [> Html_types.input ] elt
      val image_input :
        ?a:[< Html_types.input_attrib ] attrib list ->
        name:[< Eliom_parameter.coordinates Eliom_parameter.oneradio ]
             Eliom_parameter.param_name ->
        ?src:uri -> unit -> [> Html_types.input ] elt
      val checkbox :
        ?a:[< Html_types.input_attrib ] attrib list ->
        ?checked:bool ->
        name:[ `Set of 'a ] Eliom_parameter.param_name ->
        value:'-> 'a param -> [> Html_types.input ] elt
      val bool_checkbox_one :
        ?a:[< Html_types.input_attrib ] attrib list ->
        ?checked:bool ->
        name:[ `One of bool ] Eliom_parameter.param_name ->
        unit -> [> Html_types.input ] elt
      val radio :
        ?a:[< Html_types.input_attrib ] attrib list ->
        ?checked:bool ->
        name:[ `Radio of 'a ] Eliom_parameter.param_name ->
        value:'-> 'a param -> [> Html_types.input ] elt
      val string_radio_required :
        ?a:[< Html_types.input_attrib ] attrib list ->
        ?checked:bool ->
        name:[ `One of string ] Eliom_parameter.param_name ->
        value:string -> unit -> [> Html_types.input ] elt
      val button :
        ?a:[< Html_types.button_attrib ] attrib list ->
        button_type:[< Eliom_form_sigs.button_type ] ->
        name:[< 'Eliom_parameter.setone ] Eliom_parameter.param_name ->
        value:'->
        'a param ->
        Html_types.button_content elt list -> [> Html_types.button ] elt
      val button_no_value :
        ?a:[< Html_types.button_attrib ] attrib list ->
        button_type:[< Eliom_form_sigs.button_type ] ->
        Html_types.button_content elt list -> [> Html_types.button ] elt
      val textarea :
        ?a:[< Html_types.textarea_attrib ] attrib list ->
        name:[< string Eliom_parameter.setoneradio ]
             Eliom_parameter.param_name ->
        ?value:string -> unit -> [> Html_types.textarea ] elt
      type 'a soption =
          Html_types.option_attrib attrib list * 'a *
          Html_types.pcdata elt option * bool
      type 'a select_opt =
          Optgroup of
            [ `Accesskey
            | `Aria
            | `Class
            | `Contenteditable
            | `Contextmenu
            | `Dir
            | `Disabled
            | `Draggable
            | `Hidden
            | `Id
            | `Lang
            | `OnAbort
            | `OnBlur
            | `OnCanPlay
            | `OnCanPlayThrough
            | `OnChange
            | `OnClick
            | `OnContextMenu
            | `OnDblClick
            | `OnDrag
            | `OnDragEnd
            | `OnDragEnter
            | `OnDragLeave
            | `OnDragOver
            | `OnDragStart
            | `OnDrop
            | `OnDurationChange
            | `OnEmptied
            | `OnEnded
            | `OnError
            | `OnFocus
            | `OnFormChange
            | `OnFormInput
            | `OnInput
            | `OnInvalid
            | `OnKeyDown
            | `OnKeyPress
            | `OnKeyUp
            | `OnLoad
            | `OnLoadStart
            | `OnLoadedData
            | `OnLoadedMetaData
            | `OnMouseDown
            | `OnMouseMove
            | `OnMouseOut
            | `OnMouseOver
            | `OnMouseUp
            | `OnMouseWheel
            | `OnPause
            | `OnPlay
            | `OnPlaying
            | `OnProgress
            | `OnRateChange
            | `OnReadyStateChange
            | `OnScroll
            | `OnSeeked
            | `OnSeeking
            | `OnSelect
            | `OnShow
            | `OnStalled
            | `OnSubmit
            | `OnSuspend
            | `OnTimeUpdate
            | `OnTouchCancel
            | `OnTouchEnd
            | `OnTouchMove
            | `OnTouchStart
            | `OnVolumeChange
            | `OnWaiting
            | `Role
            | `Spellcheck
            | `Style_Attr
            | `Tabindex
            | `Title
            | `Translate
            | `User_data
            | `XML_lang
            | `XMLns ] attrib list * string * 'a soption * 'a soption list
        | Option of 'a soption
      val select :
        ?a:[< Html_types.select_attrib ] attrib list ->
        ?required:Html_types.pcdata elt ->
        name:[ `One of 'a ] Eliom_parameter.param_name ->
        'a param ->
        'a select_opt -> 'a select_opt list -> [> Html_types.select ] elt
      val multiple_select :
        ?a:[< Html_types.select_attrib ] attrib list ->
        ?required:Html_types.pcdata elt ->
        name:[ `Set of 'a ] Eliom_parameter.param_name ->
        'a param ->
        'a select_opt -> 'a select_opt list -> [> Html_types.select ] elt
    end
end