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