sig
  type page = Xhtmltypes.body_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