functor (Pages : PAGES->
  sig
    type page = Pages.page
    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 select_elt = Pages.select_elt
    type input_elt = Pages.input_elt
    type pcdata_elt = Pages.pcdata_elt
    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 input_type_t = Pages.input_type_t
    val new_external_service :
      url:url_path ->
      ?prefix:bool ->
      get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                 params_type ->
      post_params:('d, [ `WithoutSuffix ], 'e) params_type ->
      unit -> ('a, 'd, [ `External_Service ], 'b, 'c, 'e) service
    val new_service :
      url:url_path ->
      ?prefix:bool ->
      get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                 params_type ->
      unit ->
      ('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c,
       unit param_name)
      service
    val new_auxiliary_service :
      fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b,
                'c, 'd)
               service ->
      ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
      service
    val register_service :
      service:('a, 'b, [ `Internal_Service of 'c ],
               [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
              service ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> '-> page Lwt.t) -> unit
    val register_service_for_session :
      server_params ->
      service:('a, 'b, [ `Internal_Service of 'c ],
               [< `WithSuffix | `WithoutSuffix ], 'd, 'e)
              service ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> '-> page Lwt.t) -> unit
    val register_new_service :
      url:url_path ->
      ?prefix:bool ->
      get_params:('a, [< `WithSuffix | `WithoutSuffix ] as 'b, 'c)
                 params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c,
       unit param_name)
      service
    val register_new_auxiliary_service :
      fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, 'd)
               service ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
      service
    val register_new_auxiliary_service_for_session :
      server_params ->
      fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, 'd)
               service ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit, [ `Internal_Service of [ `Local_Service ] ], 'b, 'c, 'd)
      service
    val new_post_service :
      fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ], 'b,
                'c, unit param_name)
               service ->
      post_params:('d, [ `WithoutSuffix ], 'e) params_type ->
      ('a, 'd, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c, 'e)
      service
    val new_post_auxiliary_service :
      fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ], 'c, 'd,
                'e)
               service ->
      post_params:('f, [ `WithoutSuffix ], 'g) params_type ->
      ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
      service
    val register_new_post_service :
      fallback:('a, unit, [ `Internal_Service of [ `Public_Service ] ],
                [< `WithSuffix | `WithoutSuffix ] as 'b, 'c, unit param_name)
               service ->
      post_params:('d, [ `WithoutSuffix ], 'e) params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> '-> page Lwt.t) ->
      ('a, 'd, [ `Internal_Service of [ `Public_Service ] ], 'b, 'c, 'e)
      service
    val register_new_post_auxiliary_service :
      fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ],
                [< `WithSuffix | `WithoutSuffix ] as 'c, 'd, 'e)
               service ->
      post_params:('f, [ `WithoutSuffix ], 'g) params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> '-> page Lwt.t) ->
      ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
      service
    val register_new_post_auxiliary_service_for_session :
      server_params ->
      fallback:('a, 'b, [ `Internal_Service of [ `Public_Service ] ],
                [< `WithSuffix | `WithoutSuffix ] as 'c, 'd, 'e)
               service ->
      post_params:('f, [ `WithoutSuffix ], 'g) params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> '-> page Lwt.t) ->
      ('a, 'f, [ `Internal_Service of [ `Local_Service ] ], 'c, 'd, 'g)
      service
    type ('a, 'b) action
    val new_action :
      post_params:('a, [ `WithoutSuffix ], 'b) params_type -> ('a, 'b) action
    val register_action :
      action:('a, 'b) action -> (server_params -> '-> unit Lwt.t) -> unit
    val register_new_action :
      post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
      (server_params -> '-> unit Lwt.t) -> ('a, 'b) action
    val register_action_for_session :
      server_params ->
      action:('a, 'b) action -> (server_params -> '-> unit Lwt.t) -> unit
    val register_new_action_for_session :
      server_params ->
      post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
      (server_params -> '-> unit Lwt.t) -> ('a, 'b) action
    val static_dir :
      server_params ->
      (string, unit, [ `Internal_Service of [ `Public_Service ] ],
       [ `WithSuffix ], string param_name, unit param_name)
      service
    val close_session : server_params -> unit
    val a :
      ?a:a_attrib_t ->
      ('a, unit, 'b, [< `WithSuffix | `WithoutSuffix ], 'c, 'd) service ->
      server_params -> a_content_elt_list -> '-> a_elt
    val get_form :
      ?a:form_attrib_t ->
      ('a, unit, 'b, 'c, 'd, unit param_name) service ->
      server_params -> ('-> form_content_elt_list) -> form_elt
    val post_form :
      ?a:form_attrib_t ->
      ('a, 'b, 'c, [< `WithSuffix | `WithoutSuffix ], 'd, 'e) service ->
      server_params -> ('-> form_content_elt_list) -> '-> form_elt
    val make_uri :
      ('a, unit, 'b, [< `WithSuffix | `WithoutSuffix ], 'c, 'd) service ->
      server_params -> '-> uri
    val action_a :
      ?a:a_attrib_t ->
      ?reload:bool ->
      ('a, 'b) action -> server_params -> a_content_elt_list -> form_elt
    val action_form :
      ?a:form_attrib_t ->
      ?reload:bool ->
      ('a, 'b) action ->
      server_params -> ('-> form_content_elt_list) -> form_elt
    val js_script : ?a:script_attrib_t -> uri -> script_elt
    val css_link : ?a:link_attrib_t -> uri -> link_elt
    val int_input :
      ?a:input_attrib_t -> ?value:int -> int param_name -> input_elt
    val float_input :
      ?a:input_attrib_t -> ?value:float -> float param_name -> input_elt
    val string_input :
      ?a:input_attrib_t -> ?value:string -> string param_name -> input_elt
    val user_type_input :
      ?a:input_attrib_t ->
      ?value:'-> ('-> string) -> 'a param_name -> input_elt
    val int_password_input :
      ?a:input_attrib_t -> ?value:int -> int param_name -> input_elt
    val float_password_input :
      ?a:input_attrib_t -> ?value:float -> float param_name -> input_elt
    val string_password_input :
      ?a:input_attrib_t -> ?value:string -> string param_name -> input_elt
    val user_type_password_input :
      ?a:input_attrib_t ->
      ?value:'-> ('-> string) -> 'a param_name -> input_elt
    val hidden_int_input :
      ?a:input_attrib_t -> int param_name -> int -> input_elt
    val hidden_float_input :
      ?a:input_attrib_t -> float param_name -> float -> input_elt
    val hidden_string_input :
      ?a:input_attrib_t -> string param_name -> string -> input_elt
    val hidden_user_type_input :
      ?a:input_attrib_t -> ('-> string) -> 'a param_name -> '-> input_elt
    val bool_checkbox :
      ?a:input_attrib_t -> ?checked:bool -> bool param_name -> input_elt
    val string_radio :
      ?a:input_attrib_t ->
      ?checked:bool -> string option param_name -> string -> input_elt
    val int_radio :
      ?a:input_attrib_t ->
      ?checked:bool -> int option param_name -> int -> input_elt
    val float_radio :
      ?a:input_attrib_t ->
      ?checked:bool -> float option param_name -> float -> input_elt
    val user_type_radio :
      ?a:input_attrib_t ->
      ?checked:bool ->
      ('-> string) -> 'a option param_name -> '-> input_elt
    val textarea :
      ?a:textarea_attrib_t ->
      string param_name -> rows:int -> cols:int -> pcdata_elt -> textarea_elt
    val select :
      ?a:select_attrib_t ->
      ?selected:(string option * string) option ->
      string option * string ->
      (string option * string) list -> string param_name -> select_elt
    val submit_input : ?a:input_attrib_t -> string -> input_elt
    val file_input :
      ?a:input_attrib_t ->
      ?value:string -> Extensions.file_info param_name -> input_elt
  end