functor (Pages : REGCREATE->
  sig
    type page = Pages.page
    val send :
      ?cookies:Eliomservices.cookie list ->
      ?charset:string ->
      ?code:int ->
      sp:Eliomsessions.server_params ->
      page -> Eliomservices.result_to_send Lwt.t
    val register :
      ?sp:Eliomsessions.server_params ->
      service:('a, 'b, [< Eliomservices.internal_service_kind ],
               [< Eliomservices.suff ], 'c, 'd, [ `Registrable ])
              Eliomservices.service ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> '-> '-> page Lwt.t) -> unit
    val register_for_session :
      ?session_name:string ->
      sp:Eliomsessions.server_params ->
      service:('a, 'b, [< Eliomservices.internal_service_kind ],
               [< Eliomservices.suff ], 'c, 'd, [ `Registrable ])
              Eliomservices.service ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> '-> '-> page Lwt.t) -> unit
    val register_new_service :
      ?sp:Eliomsessions.server_params ->
      path:Extensions.url_path ->
      get_params:('a, [< Eliomservices.suff ] as 'b, 'c)
                 Eliomparameters.params_type ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit,
       [> `Attached of
            [> `Internal of [> `Service ] * [> `Get ] ] Eliomservices.a_s ],
       'b, 'c, unit, [> `Registrable ])
      Eliomservices.service
    val register_new_coservice :
      ?sp:Eliomsessions.server_params ->
      ?max_use:int ->
      ?timeout:float ->
      fallback:(unit, unit,
                [ `Attached of
                    [ `Internal of [ `Service ] * [ `Get ] ]
                    Eliomservices.a_s ],
                [ `WithoutSuffix ], unit, unit,
                [< Eliomservices.registrable ])
               Eliomservices.service ->
      get_params:('a, [ `WithoutSuffix ], 'b) Eliomparameters.params_type ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit,
       [> `Attached of
            [> `Internal of [> `Coservice ] * [> `Get ] ] Eliomservices.a_s ],
       [ `WithoutSuffix ], 'b, unit, [> `Registrable ])
      Eliomservices.service
    val register_new_coservice' :
      ?sp:Eliomsessions.server_params ->
      ?max_use:int ->
      ?timeout:float ->
      get_params:('a, [ `WithoutSuffix ], 'b) Eliomparameters.params_type ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit, [> `Nonattached of [> `Get ] Eliomservices.na_s ],
       [ `WithoutSuffix ], 'b, unit, [> `Registrable ])
      Eliomservices.service
    val register_new_coservice_for_session :
      ?session_name:string ->
      sp:Eliomsessions.server_params ->
      ?max_use:int ->
      ?timeout:float ->
      fallback:(unit, unit,
                [ `Attached of
                    [ `Internal of [ `Service ] * [ `Get ] ]
                    Eliomservices.a_s ],
                [ `WithoutSuffix ], unit, unit,
                [< Eliomservices.registrable ])
               Eliomservices.service ->
      get_params:('a, [ `WithoutSuffix ], 'b) Eliomparameters.params_type ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit,
       [> `Attached of
            [> `Internal of [> `Coservice ] * [> `Get ] ] Eliomservices.a_s ],
       [ `WithoutSuffix ], 'b, unit, [> `Registrable ])
      Eliomservices.service
    val register_new_coservice_for_session' :
      ?session_name:string ->
      sp:Eliomsessions.server_params ->
      ?max_use:int ->
      ?timeout:float ->
      get_params:('a, [ `WithoutSuffix ], 'b) Eliomparameters.params_type ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> '-> unit -> page Lwt.t) ->
      ('a, unit, [> `Nonattached of [> `Get ] Eliomservices.na_s ],
       [ `WithoutSuffix ], 'b, unit, [> `Registrable ])
      Eliomservices.service
    val register_new_post_service :
      ?sp:Eliomsessions.server_params ->
      fallback:('a, unit,
                [ `Attached of
                    [ `Internal of [ `Coservice | `Service ] * [ `Get ] ]
                    Eliomservices.a_s ],
                [< Eliomservices.suff ] as 'b, 'c, unit, [< `Registrable ])
               Eliomservices.service ->
      post_params:('d, [ `WithoutSuffix ], 'e) Eliomparameters.params_type ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> '-> '-> page Lwt.t) ->
      ('a, 'd,
       [> `Attached of
            [> `Internal of [ `Coservice | `Service ] * [> `Post ] ]
            Eliomservices.a_s ],
       'b, 'c, 'e, [> `Registrable ])
      Eliomservices.service
    val register_new_post_coservice :
      ?sp:Eliomsessions.server_params ->
      ?max_use:int ->
      ?timeout:float ->
      fallback:('a, unit,
                [ `Attached of
                    [ `Internal of [< `Coservice | `Service ] * [ `Get ] ]
                    Eliomservices.a_s ],
                [< Eliomservices.suff ] as 'b, 'c, unit, [< `Registrable ])
               Eliomservices.service ->
      post_params:('d, [ `WithoutSuffix ], 'e) Eliomparameters.params_type ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> '-> '-> page Lwt.t) ->
      ('a, 'd,
       [> `Attached of
            [> `Internal of [> `Coservice ] * [> `Post ] ] Eliomservices.a_s ],
       'b, 'c, 'e, [> `Registrable ])
      Eliomservices.service
    val register_new_post_coservice' :
      ?sp:Eliomsessions.server_params ->
      ?max_use:int ->
      ?timeout:float ->
      post_params:('a, [ `WithoutSuffix ], 'b) Eliomparameters.params_type ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> unit -> '-> page Lwt.t) ->
      (unit, 'a, [> `Nonattached of [> `Post ] Eliomservices.na_s ],
       [ `WithoutSuffix ], unit, 'b, [> `Registrable ])
      Eliomservices.service
    val register_new_post_coservice_for_session :
      ?session_name:string ->
      sp:Eliomsessions.server_params ->
      ?max_use:int ->
      ?timeout:float ->
      fallback:('a, unit,
                [ `Attached of
                    [ `Internal of [< `Coservice | `Service ] * [ `Get ] ]
                    Eliomservices.a_s ],
                [< Eliomservices.suff ] as 'b, 'c, unit, [ `Registrable ])
               Eliomservices.service ->
      post_params:('d, [ `WithoutSuffix ], 'e) Eliomparameters.params_type ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> '-> '-> page Lwt.t) ->
      ('a, 'd,
       [> `Attached of
            [> `Internal of [> `Coservice ] * [> `Post ] ] Eliomservices.a_s ],
       'b, 'c, 'e, [> `Registrable ])
      Eliomservices.service
    val register_new_post_coservice_for_session' :
      ?session_name:string ->
      sp:Eliomsessions.server_params ->
      ?max_use:int ->
      ?timeout:float ->
      post_params:('a, [ `WithoutSuffix ], 'b) Eliomparameters.params_type ->
      ?error_handler:(Eliomsessions.server_params ->
                      (string * exn) list -> page Lwt.t) ->
      (Eliomsessions.server_params -> unit -> '-> page Lwt.t) ->
      (unit, 'a, [> `Nonattached of [> `Post ] Eliomservices.na_s ],
       [ `WithoutSuffix ], unit, 'b, [> `Registrable ])
      Eliomservices.service
    module Cookies :
      sig
        type page = page * Eliomservices.cookie list
        val send :
          ?cookies:Eliomservices.cookie list ->
          ?charset:string ->
          ?code:int ->
          sp:Eliomsessions.server_params ->
          page -> Eliomservices.result_to_send Lwt.t
        val register :
          ?sp:Eliomsessions.server_params ->
          service:('a, 'b, [< Eliomservices.internal_service_kind ],
                   [< Eliomservices.suff ], 'c, 'd, [ `Registrable ])
                  Eliomservices.service ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> '-> '-> page Lwt.t) -> unit
        val register_for_session :
          ?session_name:string ->
          sp:Eliomsessions.server_params ->
          service:('a, 'b, [< Eliomservices.internal_service_kind ],
                   [< Eliomservices.suff ], 'c, 'd, [ `Registrable ])
                  Eliomservices.service ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> '-> '-> page Lwt.t) -> unit
        val register_new_service :
          ?sp:Eliomsessions.server_params ->
          path:Extensions.url_path ->
          get_params:('a, [< Eliomservices.suff ] as 'b, 'c)
                     Eliomparameters.params_type ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit,
           [> `Attached of
                [> `Internal of [> `Service ] * [> `Get ] ] Eliomservices.a_s ],
           'b, 'c, unit, [> `Registrable ])
          Eliomservices.service
        val register_new_coservice :
          ?sp:Eliomsessions.server_params ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:(unit, unit,
                    [ `Attached of
                        [ `Internal of [ `Service ] * [ `Get ] ]
                        Eliomservices.a_s ],
                    [ `WithoutSuffix ], unit, unit,
                    [< Eliomservices.registrable ])
                   Eliomservices.service ->
          get_params:('a, [ `WithoutSuffix ], 'b) Eliomparameters.params_type ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit,
           [> `Attached of
                [> `Internal of [> `Coservice ] * [> `Get ] ]
                Eliomservices.a_s ],
           [ `WithoutSuffix ], 'b, unit, [> `Registrable ])
          Eliomservices.service
        val register_new_coservice' :
          ?sp:Eliomsessions.server_params ->
          ?max_use:int ->
          ?timeout:float ->
          get_params:('a, [ `WithoutSuffix ], 'b) Eliomparameters.params_type ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit, [> `Nonattached of [> `Get ] Eliomservices.na_s ],
           [ `WithoutSuffix ], 'b, unit, [> `Registrable ])
          Eliomservices.service
        val register_new_coservice_for_session :
          ?session_name:string ->
          sp:Eliomsessions.server_params ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:(unit, unit,
                    [ `Attached of
                        [ `Internal of [ `Service ] * [ `Get ] ]
                        Eliomservices.a_s ],
                    [ `WithoutSuffix ], unit, unit,
                    [< Eliomservices.registrable ])
                   Eliomservices.service ->
          get_params:('a, [ `WithoutSuffix ], 'b) Eliomparameters.params_type ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit,
           [> `Attached of
                [> `Internal of [> `Coservice ] * [> `Get ] ]
                Eliomservices.a_s ],
           [ `WithoutSuffix ], 'b, unit, [> `Registrable ])
          Eliomservices.service
        val register_new_coservice_for_session' :
          ?session_name:string ->
          sp:Eliomsessions.server_params ->
          ?max_use:int ->
          ?timeout:float ->
          get_params:('a, [ `WithoutSuffix ], 'b) Eliomparameters.params_type ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> '-> unit -> page Lwt.t) ->
          ('a, unit, [> `Nonattached of [> `Get ] Eliomservices.na_s ],
           [ `WithoutSuffix ], 'b, unit, [> `Registrable ])
          Eliomservices.service
        val register_new_post_service :
          ?sp:Eliomsessions.server_params ->
          fallback:('a, unit,
                    [ `Attached of
                        [ `Internal of [ `Coservice | `Service ] * [ `Get ] ]
                        Eliomservices.a_s ],
                    [< Eliomservices.suff ] as 'b, 'c, unit,
                    [< `Registrable ])
                   Eliomservices.service ->
          post_params:('d, [ `WithoutSuffix ], 'e)
                      Eliomparameters.params_type ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> '-> '-> page Lwt.t) ->
          ('a, 'd,
           [> `Attached of
                [> `Internal of [ `Coservice | `Service ] * [> `Post ] ]
                Eliomservices.a_s ],
           'b, 'c, 'e, [> `Registrable ])
          Eliomservices.service
        val register_new_post_coservice :
          ?sp:Eliomsessions.server_params ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:('a, unit,
                    [ `Attached of
                        [ `Internal of [< `Coservice | `Service ] * [ `Get ] ]
                        Eliomservices.a_s ],
                    [< Eliomservices.suff ] as 'b, 'c, unit,
                    [< `Registrable ])
                   Eliomservices.service ->
          post_params:('d, [ `WithoutSuffix ], 'e)
                      Eliomparameters.params_type ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> '-> '-> page Lwt.t) ->
          ('a, 'd,
           [> `Attached of
                [> `Internal of [> `Coservice ] * [> `Post ] ]
                Eliomservices.a_s ],
           'b, 'c, 'e, [> `Registrable ])
          Eliomservices.service
        val register_new_post_coservice' :
          ?sp:Eliomsessions.server_params ->
          ?max_use:int ->
          ?timeout:float ->
          post_params:('a, [ `WithoutSuffix ], 'b)
                      Eliomparameters.params_type ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> unit -> '-> page Lwt.t) ->
          (unit, 'a, [> `Nonattached of [> `Post ] Eliomservices.na_s ],
           [ `WithoutSuffix ], unit, 'b, [> `Registrable ])
          Eliomservices.service
        val register_new_post_coservice_for_session :
          ?session_name:string ->
          sp:Eliomsessions.server_params ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:('a, unit,
                    [ `Attached of
                        [ `Internal of [< `Coservice | `Service ] * [ `Get ] ]
                        Eliomservices.a_s ],
                    [< Eliomservices.suff ] as 'b, 'c, unit,
                    [ `Registrable ])
                   Eliomservices.service ->
          post_params:('d, [ `WithoutSuffix ], 'e)
                      Eliomparameters.params_type ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> '-> '-> page Lwt.t) ->
          ('a, 'd,
           [> `Attached of
                [> `Internal of [> `Coservice ] * [> `Post ] ]
                Eliomservices.a_s ],
           'b, 'c, 'e, [> `Registrable ])
          Eliomservices.service
        val register_new_post_coservice_for_session' :
          ?session_name:string ->
          sp:Eliomsessions.server_params ->
          ?max_use:int ->
          ?timeout:float ->
          post_params:('a, [ `WithoutSuffix ], 'b)
                      Eliomparameters.params_type ->
          ?error_handler:(Eliomsessions.server_params ->
                          (string * exn) list -> page Lwt.t) ->
          (Eliomsessions.server_params -> unit -> '-> page Lwt.t) ->
          (unit, 'a, [> `Nonattached of [> `Post ] Eliomservices.na_s ],
           [ `WithoutSuffix ], unit, 'b, [> `Registrable ])
          Eliomservices.service
      end
  end