functor (Pages : FORMS_PARAM->
  sig
    type uri = Pages.uri
    val make_uri :
      ?absolute:bool ->
      ?absolute_path:bool ->
      ?https:bool ->
      service:('a, unit, [< Eliom_service.get_service_kind ],
               [< Eliom_service.suff ], 'b, unit,
               [< Eliom_service.registrable ], 'c)
              Eliom_service.service ->
      ?hostname:string ->
      ?port:int ->
      ?fragment:string ->
      ?keep_nl_params:[ `All | `None | `Persistent ] ->
      ?nl_params:Eliom_parameter.nl_params_set -> '-> Pages.uri
    val make_string_uri :
      ?absolute:bool ->
      ?absolute_path:bool ->
      ?https:bool ->
      service:('a, unit, [< Eliom_service.get_service_kind ],
               [< Eliom_service.suff ], 'b, unit,
               [< Eliom_service.registrable ], 'c)
              Eliom_service.service ->
      ?hostname:string ->
      ?port:int ->
      ?fragment:string ->
      ?keep_nl_params:[ `All | `None | `Persistent ] ->
      ?nl_params:Eliom_parameter.nl_params_set -> '-> string
    val uri_of_string : (unit -> string) -> Pages.uri
    val make_uri_components :
      ?absolute:bool ->
      ?absolute_path:bool ->
      ?https:bool ->
      service:('a, unit, [< Eliom_service.get_service_kind ],
               [< Eliom_service.suff ], 'b, unit,
               [< Eliom_service.registrable ], 'c)
              Eliom_service.service ->
      ?hostname:string ->
      ?port:int ->
      ?fragment:string ->
      ?keep_nl_params:[ `All | `None | `Persistent ] ->
      ?nl_params:Eliom_parameter.nl_params_set ->
      '-> string * (string * string) list * string option
    val make_post_uri_components :
      ?absolute:bool ->
      ?absolute_path:bool ->
      ?https:bool ->
      service:('a, 'b, [< Eliom_service.post_service_kind ],
               [< Eliom_service.suff ], 'c, 'd,
               [< Eliom_service.registrable ], 'e)
              Eliom_service.service ->
      ?hostname:string ->
      ?port:int ->
      ?fragment:string ->
      ?keep_nl_params:[ `All | `None | `Persistent ] ->
      ?nl_params:Eliom_parameter.nl_params_set ->
      ?keep_get_na_params:bool ->
      '->
      '->
      string * (string * string) list * string option *
      (string * string) list
    val make_proto_prefix : ?hostname:string -> ?port:int -> bool -> string
    val a :
      ?absolute:bool ->
      ?absolute_path:bool ->
      ?https:bool ->
      ?a:Pages.a_attrib_t ->
      service:('a, unit, [< Eliom_service.get_service_kind ],
               [< Eliom_service.suff ], 'b, unit,
               [< Eliom_service.registrable ], 'c)
              Eliom_service.service ->
      ?hostname:string ->
      ?port:int ->
      ?fragment:string ->
      ?keep_nl_params:[ `All | `None | `Persistent ] ->
      ?nl_params:Eliom_parameter.nl_params_set ->
      ?xhr:bool -> 'Pages.a_content_elt_list -> '-> 'Pages.a_elt
    val css_link :
      ?a:Pages.link_attrib_t -> uri:Pages.uri -> unit -> Pages.link_elt
    val js_script :
      ?a:Pages.script_attrib_t -> uri:Pages.uri -> unit -> Pages.script_elt
    val get_form :
      ?absolute:bool ->
      ?absolute_path:bool ->
      ?https:bool ->
      ?a:Pages.form_attrib_t ->
      service:('a, unit, [< Eliom_service.get_service_kind ],
               [< Eliom_service.suff ], 'b, 'c,
               [< Eliom_service.registrable ], 'd)
              Eliom_service.service ->
      ?hostname:string ->
      ?port:int ->
      ?fragment:string ->
      ?keep_nl_params:[ `All | `None | `Persistent ] ->
      ?nl_params:Eliom_parameter.nl_params_set ->
      ?xhr:bool -> ('-> Pages.form_content_elt_list) -> Pages.form_elt
    val lwt_get_form :
      ?absolute:bool ->
      ?absolute_path:bool ->
      ?https:bool ->
      ?a:Pages.form_attrib_t ->
      service:('a, unit, [< Eliom_service.get_service_kind ],
               [< Eliom_service.suff ], 'b, 'c,
               [< Eliom_service.registrable ], 'd)
              Eliom_service.service ->
      ?hostname:string ->
      ?port:int ->
      ?fragment:string ->
      ?keep_nl_params:[ `All | `None | `Persistent ] ->
      ?nl_params:Eliom_parameter.nl_params_set ->
      ?xhr:bool ->
      ('-> Pages.form_content_elt_list Lwt.t) -> Pages.form_elt Lwt.t
    val post_form :
      ?absolute:bool ->
      ?absolute_path:bool ->
      ?https:bool ->
      ?a:Pages.form_attrib_t ->
      service:('a, 'b, [< Eliom_service.post_service_kind ],
               [< Eliom_service.suff ], 'c, 'd,
               [< Eliom_service.registrable ], 'e)
              Eliom_service.service ->
      ?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 ->
      ('-> Pages.form_content_elt_list) -> '-> Pages.form_elt
    val lwt_post_form :
      ?absolute:bool ->
      ?absolute_path:bool ->
      ?https:bool ->
      ?a:Pages.form_attrib_t ->
      service:('a, 'b, [< Eliom_service.post_service_kind ],
               [< Eliom_service.suff ], 'c, 'd,
               [< Eliom_service.registrable ], 'e)
              Eliom_service.service ->
      ?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 ->
      ('-> Pages.form_content_elt_list Lwt.t) -> '-> Pages.form_elt Lwt.t
    val int_input :
      ?a:Pages.input_attrib_t ->
      input_type:Pages.input_type_t ->
      ?name:[< int Eliom_parameter.setoneradio ] Eliom_parameter.param_name ->
      ?value:int -> unit -> Pages.input_elt
    val int32_input :
      ?a:Pages.input_attrib_t ->
      input_type:Pages.input_type_t ->
      ?name:[< int32 Eliom_parameter.setoneradio ] Eliom_parameter.param_name ->
      ?value:int32 -> unit -> Pages.input_elt
    val int64_input :
      ?a:Pages.input_attrib_t ->
      input_type:Pages.input_type_t ->
      ?name:[< int64 Eliom_parameter.setoneradio ] Eliom_parameter.param_name ->
      ?value:int64 -> unit -> Pages.input_elt
    val float_input :
      ?a:Pages.input_attrib_t ->
      input_type:Pages.input_type_t ->
      ?name:[< float Eliom_parameter.setoneradio ] Eliom_parameter.param_name ->
      ?value:float -> unit -> Pages.input_elt
    val string_input :
      ?a:Pages.input_attrib_t ->
      input_type:Pages.input_type_t ->
      ?name:[< string Eliom_parameter.setoneradio ]
            Eliom_parameter.param_name ->
      ?value:string -> unit -> Pages.input_elt
    val user_type_input :
      ('-> string) ->
      ?a:Pages.input_attrib_t ->
      input_type:Pages.input_type_t ->
      ?name:[< 'Eliom_parameter.setoneradio ] Eliom_parameter.param_name ->
      ?value:'-> unit -> Pages.input_elt
    val raw_input :
      ?a:Pages.input_attrib_t ->
      input_type:Pages.input_type_t ->
      ?name:string -> ?value:string -> unit -> Pages.input_elt
    val file_input :
      ?a:Pages.input_attrib_t ->
      name:[< Eliom_lib.file_info Eliom_parameter.setoneradio ]
           Eliom_parameter.param_name ->
      unit -> Pages.input_elt
    val image_input :
      ?a:Pages.input_attrib_t ->
      name:[< Eliom_parameter.coordinates Eliom_parameter.oneradio ]
           Eliom_parameter.param_name ->
      ?src:Pages.uri -> unit -> Pages.input_elt
    val int_image_input :
      ?a:Pages.input_attrib_t ->
      name:[< (int * Eliom_parameter.coordinates) Eliom_parameter.oneradio ]
           Eliom_parameter.param_name ->
      value:int -> ?src:Pages.uri -> unit -> Pages.input_elt
    val int32_image_input :
      ?a:Pages.input_attrib_t ->
      name:[< (int32 * Eliom_parameter.coordinates) Eliom_parameter.oneradio ]
           Eliom_parameter.param_name ->
      value:int32 -> ?src:Pages.uri -> unit -> Pages.input_elt
    val int64_image_input :
      ?a:Pages.input_attrib_t ->
      name:[< (int64 * Eliom_parameter.coordinates) Eliom_parameter.oneradio ]
           Eliom_parameter.param_name ->
      value:int64 -> ?src:Pages.uri -> unit -> Pages.input_elt
    val float_image_input :
      ?a:Pages.input_attrib_t ->
      name:[< (float * Eliom_parameter.coordinates) Eliom_parameter.oneradio ]
           Eliom_parameter.param_name ->
      value:float -> ?src:Pages.uri -> unit -> Pages.input_elt
    val string_image_input :
      ?a:Pages.input_attrib_t ->
      name:[< (string * Eliom_parameter.coordinates) Eliom_parameter.oneradio ]
           Eliom_parameter.param_name ->
      value:string -> ?src:Pages.uri -> unit -> Pages.input_elt
    val user_type_image_input :
      ('-> string) ->
      ?a:Pages.input_attrib_t ->
      name:[< ('a * Eliom_parameter.coordinates) Eliom_parameter.oneradio ]
           Eliom_parameter.param_name ->
      value:'-> ?src:Pages.uri -> unit -> Pages.input_elt
    val raw_image_input :
      ?a:Pages.input_attrib_t ->
      name:string ->
      value:string -> ?src:Pages.uri -> unit -> Pages.input_elt
    val bool_checkbox :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `One of bool ] Eliom_parameter.param_name ->
      unit -> Pages.input_elt
    val int_checkbox :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Set of int ] Eliom_parameter.param_name ->
      value:int -> unit -> Pages.input_elt
    val int32_checkbox :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Set of int32 ] Eliom_parameter.param_name ->
      value:int32 -> unit -> Pages.input_elt
    val int64_checkbox :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Set of int64 ] Eliom_parameter.param_name ->
      value:int64 -> unit -> Pages.input_elt
    val float_checkbox :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Set of float ] Eliom_parameter.param_name ->
      value:float -> unit -> Pages.input_elt
    val string_checkbox :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Set of string ] Eliom_parameter.param_name ->
      value:string -> unit -> Pages.input_elt
    val user_type_checkbox :
      ('-> string) ->
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Set of 'a ] Eliom_parameter.param_name ->
      value:'-> unit -> Pages.input_elt
    val raw_checkbox :
      ?a:Pages.input_attrib_t ->
      ?checked:bool -> name:string -> value:string -> unit -> Pages.input_elt
    val string_radio :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Radio of string ] Eliom_parameter.param_name ->
      value:string -> unit -> Pages.input_elt
    val int_radio :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Radio of int ] Eliom_parameter.param_name ->
      value:int -> unit -> Pages.input_elt
    val int32_radio :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Radio of int32 ] Eliom_parameter.param_name ->
      value:int32 -> unit -> Pages.input_elt
    val int64_radio :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Radio of int64 ] Eliom_parameter.param_name ->
      value:int64 -> unit -> Pages.input_elt
    val float_radio :
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Radio of float ] Eliom_parameter.param_name ->
      value:float -> unit -> Pages.input_elt
    val user_type_radio :
      ('-> string) ->
      ?a:Pages.input_attrib_t ->
      ?checked:bool ->
      name:[ `Radio of 'a ] Eliom_parameter.param_name ->
      value:'-> unit -> Pages.input_elt
    val raw_radio :
      ?a:Pages.input_attrib_t ->
      ?checked:bool -> name:string -> value:string -> unit -> Pages.input_elt
    val string_button :
      ?a:Pages.button_attrib_t ->
      name:[< string Eliom_parameter.setone ] Eliom_parameter.param_name ->
      value:string -> Pages.button_content_elt_list -> Pages.button_elt
    val int_button :
      ?a:Pages.button_attrib_t ->
      name:[< int Eliom_parameter.setone ] Eliom_parameter.param_name ->
      value:int -> Pages.button_content_elt_list -> Pages.button_elt
    val int32_button :
      ?a:Pages.button_attrib_t ->
      name:[< int32 Eliom_parameter.setone ] Eliom_parameter.param_name ->
      value:int32 -> Pages.button_content_elt_list -> Pages.button_elt
    val int64_button :
      ?a:Pages.button_attrib_t ->
      name:[< int64 Eliom_parameter.setone ] Eliom_parameter.param_name ->
      value:int64 -> Pages.button_content_elt_list -> Pages.button_elt
    val float_button :
      ?a:Pages.button_attrib_t ->
      name:[< float Eliom_parameter.setone ] Eliom_parameter.param_name ->
      value:float -> Pages.button_content_elt_list -> Pages.button_elt
    val user_type_button :
      ('-> string) ->
      ?a:Pages.button_attrib_t ->
      name:[< 'Eliom_parameter.setone ] Eliom_parameter.param_name ->
      value:'-> Pages.button_content_elt_list -> Pages.button_elt
    val raw_button :
      ?a:Pages.button_attrib_t ->
      button_type:Pages.button_type_t ->
      name:string ->
      value:string -> Pages.button_content_elt_list -> Pages.button_elt
    val button :
      ?a:Pages.button_attrib_t ->
      button_type:Pages.button_type_t ->
      Pages.button_content_elt_list -> Pages.button_elt
    val textarea :
      ?a:Pages.textarea_attrib_t ->
      name:[< string Eliom_parameter.setoneradio ] Eliom_parameter.param_name ->
      ?value:string -> unit -> Pages.textarea_elt
    val raw_textarea :
      ?a:Pages.textarea_attrib_t ->
      name:string -> ?value:string -> unit -> Pages.textarea_elt
    type 'a soption =
        Pages.option_attrib_t * 'a * Pages.pcdata_elt option * bool
    type 'a select_opt =
        Optgroup of Pages.optgroup_attrib_t * string *
          'Eliom_mkforms.MakeForms.soption *
          'Eliom_mkforms.MakeForms.soption list
      | Option of 'Eliom_mkforms.MakeForms.soption
    val int_select :
      ?a:Pages.select_attrib_t ->
      name:[< `One of int ] Eliom_parameter.param_name ->
      int Eliom_mkforms.MakeForms.select_opt ->
      int Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val int32_select :
      ?a:Pages.select_attrib_t ->
      name:[< `One of int32 ] Eliom_parameter.param_name ->
      int32 Eliom_mkforms.MakeForms.select_opt ->
      int32 Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val int64_select :
      ?a:Pages.select_attrib_t ->
      name:[< `One of int64 ] Eliom_parameter.param_name ->
      int64 Eliom_mkforms.MakeForms.select_opt ->
      int64 Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val float_select :
      ?a:Pages.select_attrib_t ->
      name:[< `One of float ] Eliom_parameter.param_name ->
      float Eliom_mkforms.MakeForms.select_opt ->
      float Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val string_select :
      ?a:Pages.select_attrib_t ->
      name:[< `One of string ] Eliom_parameter.param_name ->
      string Eliom_mkforms.MakeForms.select_opt ->
      string Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val user_type_select :
      ('-> string) ->
      ?a:Pages.select_attrib_t ->
      name:[< `One of 'a ] Eliom_parameter.param_name ->
      'Eliom_mkforms.MakeForms.select_opt ->
      'Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val raw_select :
      ?a:Pages.select_attrib_t ->
      name:string ->
      string Eliom_mkforms.MakeForms.select_opt ->
      string Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val int_multiple_select :
      ?a:Pages.select_attrib_t ->
      name:[< `Set of int ] Eliom_parameter.param_name ->
      int Eliom_mkforms.MakeForms.select_opt ->
      int Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val int32_multiple_select :
      ?a:Pages.select_attrib_t ->
      name:[< `Set of int32 ] Eliom_parameter.param_name ->
      int32 Eliom_mkforms.MakeForms.select_opt ->
      int32 Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val int64_multiple_select :
      ?a:Pages.select_attrib_t ->
      name:[< `Set of int64 ] Eliom_parameter.param_name ->
      int64 Eliom_mkforms.MakeForms.select_opt ->
      int64 Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val float_multiple_select :
      ?a:Pages.select_attrib_t ->
      name:[< `Set of float ] Eliom_parameter.param_name ->
      float Eliom_mkforms.MakeForms.select_opt ->
      float Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val string_multiple_select :
      ?a:Pages.select_attrib_t ->
      name:[< `Set of string ] Eliom_parameter.param_name ->
      string Eliom_mkforms.MakeForms.select_opt ->
      string Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val user_type_multiple_select :
      ('-> string) ->
      ?a:Pages.select_attrib_t ->
      name:[< `Set of 'a ] Eliom_parameter.param_name ->
      'Eliom_mkforms.MakeForms.select_opt ->
      'Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val raw_multiple_select :
      ?a:Pages.select_attrib_t ->
      name:string ->
      string Eliom_mkforms.MakeForms.select_opt ->
      string Eliom_mkforms.MakeForms.select_opt list -> Pages.select_elt
    val a_for : 'Eliom_parameter.param_name -> Pages.for_attrib
  end