functor (T : sig type content end->
  sig
    type page = T.content XHTML.M.elt list
    val send :
      ?cookies:Extensions.cookieslist ->
      ?charset:string ->
      ?code:int -> server_params -> page -> Eliommod.result_to_send
    val register :
      ?sp:server_params ->
      service:('a, 'b, [< internal_service_kind ], [< suff ], 'c, 'd,
               [ `Registrable ])
              service ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> '-> page Lwt.t) -> unit
    val register_for_session :
      server_params ->
      service:('a, 'b, [< internal_service_kind ], [< suff ], 'c, 'd,
               [ `Registrable ])
              service ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> '-> page Lwt.t) -> unit
    val register_new_service :
      ?sp:server_params ->
      url:url_path ->
      get_params:('a, [< suff ] as 'b, 'c) params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit,
       [> `Attached of [> `Internal of [> `Service ] * [> `Get ] ] a_s ], 'b,
       'c, unit param_name, [> `Registrable ])
      service
    val register_new_coservice :
      ?sp:server_params ->
      ?max_use:int ->
      ?timeout:float ->
      fallback:(unit, unit,
                [ `Attached of [ `Internal of [ `Service ] * [ `Get ] ] a_s ],
                [ `WithoutSuffix ], unit param_name, unit param_name,
                [< registrable ])
               service ->
      get_params:('a, [ `WithoutSuffix ], 'b) params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit,
       [> `Attached of [> `Internal of [> `Coservice ] * [> `Get ] ] a_s ],
       [ `WithoutSuffix ], 'b, unit param_name, [> `Registrable ])
      service
    val register_new_coservice' :
      ?sp:server_params ->
      ?max_use:int ->
      ?timeout:float ->
      get_params:('a, [ `WithoutSuffix ], 'b) params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit, [> `Nonattached of [> `Get ] na_s ], [ `WithoutSuffix ], 'b,
       unit param_name, [> `Registrable ])
      service
    val register_new_coservice_for_session :
      server_params ->
      ?max_use:int ->
      ?timeout:float ->
      fallback:(unit, unit,
                [ `Attached of [ `Internal of [ `Service ] * [ `Get ] ] a_s ],
                [ `WithoutSuffix ], unit param_name, unit param_name,
                [< registrable ])
               service ->
      get_params:('a, [ `WithoutSuffix ], 'b) params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit,
       [> `Attached of [> `Internal of [> `Coservice ] * [> `Get ] ] a_s ],
       [ `WithoutSuffix ], 'b, unit param_name, [> `Registrable ])
      service
    val register_new_coservice_for_session' :
      server_params ->
      ?max_use:int ->
      ?timeout:float ->
      get_params:('a, [ `WithoutSuffix ], 'b) params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit, [> `Nonattached of [> `Get ] na_s ], [ `WithoutSuffix ], 'b,
       unit param_name, [> `Registrable ])
      service
    val register_new_post_service :
      ?sp:server_params ->
      fallback:('a, unit,
                [ `Attached of
                    [ `Internal of [ `Coservice | `Service ] * [ `Get ] ] a_s ],
                [< suff ] as 'b, 'c, unit param_name, [< `Registrable ])
               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,
       [> `Attached of
            [> `Internal of [ `Coservice | `Service ] * [> `Post ] ] a_s ],
       'b, 'c, 'e, [> `Registrable ])
      service
    val register_new_post_coservice :
      ?sp:server_params ->
      ?max_use:int ->
      ?timeout:float ->
      fallback:('a, unit,
                [ `Attached of
                    [ `Internal of [< `Coservice | `Service ] * [ `Get ] ]
                    a_s ],
                [< suff ] as 'b, 'c, unit param_name, [< `Registrable ])
               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,
       [> `Attached of [> `Internal of [> `Coservice ] * [> `Post ] ] a_s ],
       'b, 'c, 'e, [> `Registrable ])
      service
    val register_new_post_coservice' :
      ?sp:server_params ->
      ?max_use:int ->
      ?timeout:float ->
      post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> unit -> '-> page Lwt.t) ->
      (unit, 'a, [> `Nonattached of [> `Post ] na_s ], [ `WithoutSuffix ],
       unit param_name, 'b, [> `Registrable ])
      service
    val register_new_post_coservice_for_session :
      server_params ->
      ?max_use:int ->
      ?timeout:float ->
      fallback:('a, unit,
                [< `Attached of
                     [< `Internal of [< `Coservice | `Service ] * [ `Get ] ]
                     a_s ],
                [< suff ] as 'b, 'c, unit param_name, [< `Registrable ])
               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,
       [> `Attached of [> `Internal of [> `Coservice ] * [> `Post ] ] a_s ],
       'b, 'c, 'e, [> `Registrable ])
      service
    val register_new_post_coservice_for_session' :
      server_params ->
      ?max_use:int ->
      ?timeout:float ->
      post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
      ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
      (server_params -> unit -> '-> page Lwt.t) ->
      (unit, 'a, [> `Nonattached of [> `Post ] na_s ], [ `WithoutSuffix ],
       unit param_name, 'b, [> `Registrable ])
      service
    module Cookies :
      sig
        type page = page * Extensions.cookieslist
        val send :
          ?cookies:Extensions.cookieslist ->
          ?charset:string ->
          ?code:int -> server_params -> page -> Eliommod.result_to_send
        val register :
          ?sp:server_params ->
          service:('a, 'b, [< internal_service_kind ], [< suff ], 'c, 'd,
                   [ `Registrable ])
                  service ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> '-> page Lwt.t) -> unit
        val register_for_session :
          server_params ->
          service:('a, 'b, [< internal_service_kind ], [< suff ], 'c, 'd,
                   [ `Registrable ])
                  service ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> '-> page Lwt.t) -> unit
        val register_new_service :
          ?sp:server_params ->
          url:url_path ->
          get_params:('a, [< suff ] as 'b, 'c) params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit,
           [> `Attached of [> `Internal of [> `Service ] * [> `Get ] ] a_s ],
           'b, 'c, unit param_name, [> `Registrable ])
          service
        val register_new_coservice :
          ?sp:server_params ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:(unit, unit,
                    [ `Attached of
                        [ `Internal of [ `Service ] * [ `Get ] ] a_s ],
                    [ `WithoutSuffix ], unit param_name, unit param_name,
                    [< registrable ])
                   service ->
          get_params:('a, [ `WithoutSuffix ], 'b) params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit,
           [> `Attached of [> `Internal of [> `Coservice ] * [> `Get ] ] a_s ],
           [ `WithoutSuffix ], 'b, unit param_name, [> `Registrable ])
          service
        val register_new_coservice' :
          ?sp:server_params ->
          ?max_use:int ->
          ?timeout:float ->
          get_params:('a, [ `WithoutSuffix ], 'b) params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit, [> `Nonattached of [> `Get ] na_s ], [ `WithoutSuffix ],
           'b, unit param_name, [> `Registrable ])
          service
        val register_new_coservice_for_session :
          server_params ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:(unit, unit,
                    [ `Attached of
                        [ `Internal of [ `Service ] * [ `Get ] ] a_s ],
                    [ `WithoutSuffix ], unit param_name, unit param_name,
                    [< registrable ])
                   service ->
          get_params:('a, [ `WithoutSuffix ], 'b) params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit,
           [> `Attached of [> `Internal of [> `Coservice ] * [> `Get ] ] a_s ],
           [ `WithoutSuffix ], 'b, unit param_name, [> `Registrable ])
          service
        val register_new_coservice_for_session' :
          server_params ->
          ?max_use:int ->
          ?timeout:float ->
          get_params:('a, [ `WithoutSuffix ], 'b) params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit, [> `Nonattached of [> `Get ] na_s ], [ `WithoutSuffix ],
           'b, unit param_name, [> `Registrable ])
          service
        val register_new_post_service :
          ?sp:server_params ->
          fallback:('a, unit,
                    [ `Attached of
                        [ `Internal of [ `Coservice | `Service ] * [ `Get ] ]
                        a_s ],
                    [< suff ] as 'b, 'c, unit param_name, [< `Registrable ])
                   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,
           [> `Attached of
                [> `Internal of [ `Coservice | `Service ] * [> `Post ] ] a_s ],
           'b, 'c, 'e, [> `Registrable ])
          service
        val register_new_post_coservice :
          ?sp:server_params ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:('a, unit,
                    [ `Attached of
                        [ `Internal of [< `Coservice | `Service ] * [ `Get ] ]
                        a_s ],
                    [< suff ] as 'b, 'c, unit param_name, [< `Registrable ])
                   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,
           [> `Attached of [> `Internal of [> `Coservice ] * [> `Post ] ] a_s ],
           'b, 'c, 'e, [> `Registrable ])
          service
        val register_new_post_coservice' :
          ?sp:server_params ->
          ?max_use:int ->
          ?timeout:float ->
          post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> unit -> '-> page Lwt.t) ->
          (unit, 'a, [> `Nonattached of [> `Post ] na_s ],
           [ `WithoutSuffix ], unit param_name, 'b, [> `Registrable ])
          service
        val register_new_post_coservice_for_session :
          server_params ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:('a, unit,
                    [< `Attached of
                         [< `Internal of
                              [< `Coservice | `Service ] * [ `Get ] ]
                         a_s ],
                    [< suff ] as 'b, 'c, unit param_name, [< `Registrable ])
                   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,
           [> `Attached of [> `Internal of [> `Coservice ] * [> `Post ] ] a_s ],
           'b, 'c, 'e, [> `Registrable ])
          service
        val register_new_post_coservice_for_session' :
          server_params ->
          ?max_use:int ->
          ?timeout:float ->
          post_params:('a, [ `WithoutSuffix ], 'b) params_type ->
          ?error_handler:(server_params -> (string * exn) list -> page Lwt.t) ->
          (server_params -> unit -> '-> page Lwt.t) ->
          (unit, 'a, [> `Nonattached of [> `Post ] na_s ],
           [ `WithoutSuffix ], unit param_name, 'b, [> `Registrable ])
          service
      end
    val a :
      ?a:Xhtmltypes.a_attrib XHTML.M.attrib list ->
      ('a, unit, [< get_service_kind ], [< suff ], 'b, unit param_name,
       [< registrable ])
      service ->
      server_params ->
      Xhtmltypes.a_content XHTML.M.elt list ->
      '-> [> Xhtmltypes.a ] XHTML.M.elt
    val css_link :
      ?a:Xhtmltypes.link_attrib XHTML.M.attrib list ->
      XHTML.M.uri -> [> Xhtmltypes.link ] XHTML.M.elt
    val js_script :
      ?a:Xhtmltypes.script_attrib XHTML.M.attrib list ->
      XHTML.M.uri -> [> Xhtmltypes.script ] XHTML.M.elt
    val make_uri :
      ('a, unit, [< get_service_kind ], [< suff ], 'b, unit param_name,
       [< registrable ])
      service -> server_params -> '-> XHTML.M.uri
    val get_form :
      ?a:Xhtmltypes.form_attrib XHTML.M.attrib list ->
      ('a, unit, [< get_service_kind ], [< suff ], 'b, unit param_name,
       [< registrable ])
      service ->
      server_params ->
      ('-> Xhtmltypes.form_content XHTML.M.elt list) ->
      [> Xhtmltypes.form ] XHTML.M.elt
    val post_form :
      ?a:Xhtmltypes.form_attrib XHTML.M.attrib list ->
      ('a, 'b, [< post_service_kind ], [< suff ], 'c, 'd, [< registrable ])
      service ->
      server_params ->
      ('-> Xhtmltypes.form_content XHTML.M.elt list) ->
      '-> [> Xhtmltypes.form ] XHTML.M.elt
    val int_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?value:int -> int param_name -> [> Xhtmltypes.input ] XHTML.M.elt
    val float_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?value:float -> float param_name -> [> Xhtmltypes.input ] XHTML.M.elt
    val string_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?value:string -> string param_name -> [> Xhtmltypes.input ] XHTML.M.elt
    val user_type_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?value:'->
      ('-> string) -> 'a param_name -> [> Xhtmltypes.input ] XHTML.M.elt
    val int_password_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?value:int -> int param_name -> [> Xhtmltypes.input ] XHTML.M.elt
    val float_password_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?value:float -> float param_name -> [> Xhtmltypes.input ] XHTML.M.elt
    val string_password_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?value:string -> string param_name -> [> Xhtmltypes.input ] XHTML.M.elt
    val user_type_password_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?value:'->
      ('-> string) -> 'a param_name -> [> Xhtmltypes.input ] XHTML.M.elt
    val hidden_int_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      int param_name -> int -> [> Xhtmltypes.input ] XHTML.M.elt
    val hidden_float_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      float param_name -> float -> [> Xhtmltypes.input ] XHTML.M.elt
    val hidden_string_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      string param_name -> string -> [> Xhtmltypes.input ] XHTML.M.elt
    val hidden_user_type_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ('-> string) ->
      'a param_name -> '-> [> Xhtmltypes.input ] XHTML.M.elt
    val bool_checkbox :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?checked:bool -> bool param_name -> [> Xhtmltypes.input ] XHTML.M.elt
    val string_radio :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?checked:bool ->
      string option param_name -> string -> [> Xhtmltypes.input ] XHTML.M.elt
    val int_radio :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?checked:bool ->
      int option param_name -> int -> [> Xhtmltypes.input ] XHTML.M.elt
    val float_radio :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?checked:bool ->
      float option param_name -> float -> [> Xhtmltypes.input ] XHTML.M.elt
    val user_type_radio :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?checked:bool ->
      ('-> string) ->
      'a option param_name -> '-> [> Xhtmltypes.input ] XHTML.M.elt
    val textarea :
      ?a:Xhtmltypes.textarea_attrib XHTML.M.attrib list ->
      string param_name ->
      rows:XHTML.M.number ->
      cols:XHTML.M.number ->
      [ `PCDATA ] XHTML.M.elt -> [> Xhtmltypes.textarea ] XHTML.M.elt
    val select :
      ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
      ?selected:(string option * string) option ->
      string option * string ->
      (string option * string) list ->
      string param_name -> [> Xhtmltypes.select ] XHTML.M.elt
    val submit_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      string -> [> Xhtmltypes.input ] XHTML.M.elt
    val file_input :
      ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
      ?value:string ->
      Extensions.file_info param_name -> [> Xhtmltypes.input ] XHTML.M.elt
  end