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