sig
  module type REG_PARAM =
    sig
      type page
      type options
      type return
      type result
      val send :
        ?options:Eliom_mkreg.REG_PARAM.options ->
        ?charset:string ->
        ?code:int ->
        ?content_type:string ->
        ?headers:Http_headers.t ->
        Eliom_mkreg.REG_PARAM.page -> Ocsigen_http_frame.result Lwt.t
      val send_appl_content : Eliom_service.send_appl_content
      val result_of_http_result :
        Ocsigen_http_frame.result -> Eliom_mkreg.REG_PARAM.result
    end
  module MakeRegister :
    functor (Pages : REG_PARAM->
      sig
        type page = Pages.page
        type options = Pages.options
        type return = Pages.return
        type result = Pages.result
        val register :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          service:('get, 'post, [< Eliom_service.internal_service_kind ],
                   [< Eliom_service.suff ], 'gn, 'pn, [ `Registrable ],
                   Pages.return)
                  Eliom_service.service ->
          ?error_handler:((string * exn) list -> Pages.page Lwt.t) ->
          ('get -> 'post -> Pages.page Lwt.t) -> unit
        val register_service :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?priority:int ->
          path:Eliom_lib.Url.path ->
          get_params:('get, [< Eliom_service.suff ] as 'a, 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> Pages.page Lwt.t) ->
          ('get -> unit -> Pages.page Lwt.t) ->
          ('get, unit,
           [> `Attached of
                ([> `Internal of [> `Service ] ], [> `Get ])
                Eliom_service.a_s ],
           'a, 'gn, unit, [< Eliom_service.registrable > `Registrable ],
           Pages.return)
          Eliom_service.service
        val register_coservice :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          fallback:(unit, unit,
                    [ `Attached of
                        ([ `Internal of [ `Service ] ], [ `Get ])
                        Eliom_service.a_s ],
                    [ `WithoutSuffix ], unit, unit,
                    [< Eliom_service.registrable ], Pages.return)
                   Eliom_service.service ->
          get_params:('get, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> Pages.page Lwt.t) ->
          ('get -> unit -> Pages.page Lwt.t) ->
          ('get, unit,
           [> `Attached of
                ([> `Internal of [> `Coservice ] ], [> `Get ])
                Eliom_service.a_s ],
           [ `WithoutSuffix ], 'gn, unit,
           [< Eliom_service.registrable > `Registrable ], Pages.return)
          Eliom_service.service
        val register_coservice' :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          get_params:('get, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> Pages.page Lwt.t) ->
          ('get -> unit -> Pages.page Lwt.t) ->
          ('get, unit, [> `Nonattached of [> `Get ] Eliom_service.na_s ],
           [ `WithoutSuffix ], 'gn, unit,
           [< Eliom_service.registrable > `Registrable ], Pages.return)
          Eliom_service.service
        val register_post_service :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?priority:int ->
          fallback:('get, unit,
                    [ `Attached of
                        ([ `Internal of [ `Coservice | `Service ] ],
                         [ `Get ])
                        Eliom_service.a_s ],
                    [< Eliom_service.suff ] as 'a, 'gn, unit,
                    [< `Registrable ], 'return2)
                   Eliom_service.service ->
          post_params:('post, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> Pages.page Lwt.t) ->
          ('get -> 'post -> Pages.page Lwt.t) ->
          ('get, 'post,
           [> `Attached of
                ([> `Internal of [ `Coservice | `Service ] ], [> `Post ])
                Eliom_service.a_s ],
           'a, 'gn, 'pn, [< Eliom_service.registrable > `Registrable ],
           Pages.return)
          Eliom_service.service
        val register_post_coservice :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          fallback:('get, unit,
                    [ `Attached of
                        ([ `Internal of [< `Coservice | `Service ] ],
                         [ `Get ])
                        Eliom_service.a_s ],
                    [< Eliom_service.suff ] as 'a, 'gn, unit,
                    [< `Registrable ], Pages.return)
                   Eliom_service.service ->
          post_params:('post, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> Pages.page Lwt.t) ->
          ('get -> 'post -> Pages.page Lwt.t) ->
          ('get, 'post,
           [> `Attached of
                ([> `Internal of [> `Coservice ] ], [> `Post ])
                Eliom_service.a_s ],
           'a, 'gn, 'pn, [< Eliom_service.registrable > `Registrable ],
           Pages.return)
          Eliom_service.service
        val register_post_coservice' :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?keep_get_na_params:bool ->
          ?https:bool ->
          post_params:('post, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> Pages.page Lwt.t) ->
          (unit -> 'post -> Pages.page Lwt.t) ->
          (unit, 'post, [> `Nonattached of [> `Post ] Eliom_service.na_s ],
           [ `WithoutSuffix ], unit, 'pn,
           [< Eliom_service.registrable > `Registrable ], Pages.return)
          Eliom_service.service
        val send :
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t -> Pages.page -> Pages.result Lwt.t
      end
  module type REG_PARAM_ALPHA_RETURN =
    sig
      type ('a, 'b) page
      type 'a return
      type ('a, 'b) result
      type options
      val send :
        ?options:Eliom_mkreg.REG_PARAM_ALPHA_RETURN.options ->
        ?charset:string ->
        ?code:int ->
        ?content_type:string ->
        ?headers:Http_headers.t ->
        ('a, 'b) Eliom_mkreg.REG_PARAM_ALPHA_RETURN.page ->
        Ocsigen_http_frame.result Lwt.t
      val send_appl_content : Eliom_service.send_appl_content
      val result_of_http_result :
        Ocsigen_http_frame.result ->
        ('a, 'b) Eliom_mkreg.REG_PARAM_ALPHA_RETURN.result
    end
  module MakeRegister_AlphaReturn :
    functor (Pages : REG_PARAM_ALPHA_RETURN->
      sig
        type ('a, 'b) page = ('a, 'b) Pages.page
        type options = Pages.options
        type 'b return = 'Pages.return
        type ('a, 'b) result = ('a, 'b) Pages.result
        val register :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          service:('get, 'post, [< Eliom_service.internal_service_kind ],
                   [< Eliom_service.suff ], 'gn, 'pn, [ `Registrable ],
                   'Pages.return)
                  Eliom_service.service ->
          ?error_handler:((string * exn) list -> ('a, 'b) Pages.page Lwt.t) ->
          ('get -> 'post -> ('a, 'b) Pages.page Lwt.t) -> unit
        val register_service :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?priority:int ->
          path:Eliom_lib.Url.path ->
          get_params:('get, [< Eliom_service.suff ] as 'c, 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> ('a, 'b) Pages.page Lwt.t) ->
          ('get -> unit -> ('a, 'b) Pages.page Lwt.t) ->
          ('get, unit,
           [> `Attached of
                ([> `Internal of [> `Service ] ], [> `Get ])
                Eliom_service.a_s ],
           'c, 'gn, unit, [< Eliom_service.registrable > `Registrable ],
           'Pages.return)
          Eliom_service.service
        val register_coservice :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          fallback:(unit, unit,
                    [ `Attached of
                        ([ `Internal of [ `Service ] ], [ `Get ])
                        Eliom_service.a_s ],
                    [ `WithoutSuffix ], unit, unit,
                    [< Eliom_service.registrable ], 'Pages.return)
                   Eliom_service.service ->
          get_params:('get, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> ('a, 'b) Pages.page Lwt.t) ->
          ('get -> unit -> ('a, 'b) Pages.page Lwt.t) ->
          ('get, unit,
           [> `Attached of
                ([> `Internal of [> `Coservice ] ], [> `Get ])
                Eliom_service.a_s ],
           [ `WithoutSuffix ], 'gn, unit,
           [< Eliom_service.registrable > `Registrable ], 'Pages.return)
          Eliom_service.service
        val register_coservice' :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          get_params:('get, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> ('a, 'b) Pages.page Lwt.t) ->
          ('get -> unit -> ('a, 'b) Pages.page Lwt.t) ->
          ('get, unit, [> `Nonattached of [> `Get ] Eliom_service.na_s ],
           [ `WithoutSuffix ], 'gn, unit,
           [< Eliom_service.registrable > `Registrable ], 'Pages.return)
          Eliom_service.service
        val register_post_service :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?priority:int ->
          fallback:('get, unit,
                    [ `Attached of
                        ([ `Internal of [ `Coservice | `Service ] ],
                         [ `Get ])
                        Eliom_service.a_s ],
                    [< Eliom_service.suff ] as 'c, 'gn, unit,
                    [< `Registrable ], 'return2)
                   Eliom_service.service ->
          post_params:('post, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> ('a, 'b) Pages.page Lwt.t) ->
          ('get -> 'post -> ('a, 'b) Pages.page Lwt.t) ->
          ('get, 'post,
           [> `Attached of
                ([> `Internal of [ `Coservice | `Service ] ], [> `Post ])
                Eliom_service.a_s ],
           'c, 'gn, 'pn, [< Eliom_service.registrable > `Registrable ],
           'Pages.return)
          Eliom_service.service
        val register_post_coservice :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          fallback:('get, unit,
                    [ `Attached of
                        ([ `Internal of [< `Coservice | `Service ] ],
                         [ `Get ])
                        Eliom_service.a_s ],
                    [< Eliom_service.suff ] as 'c, 'gn, unit,
                    [< `Registrable ], 'Pages.return)
                   Eliom_service.service ->
          post_params:('post, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> ('a, 'b) Pages.page Lwt.t) ->
          ('get -> 'post -> ('a, 'b) Pages.page Lwt.t) ->
          ('get, 'post,
           [> `Attached of
                ([> `Internal of [> `Coservice ] ], [> `Post ])
                Eliom_service.a_s ],
           'c, 'gn, 'pn, [< Eliom_service.registrable > `Registrable ],
           'Pages.return)
          Eliom_service.service
        val register_post_coservice' :
          ?scope:[< Eliom_common.scope ] ->
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?keep_get_na_params:bool ->
          ?https:bool ->
          post_params:('post, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> ('a, 'b) Pages.page Lwt.t) ->
          (unit -> 'post -> ('a, 'b) Pages.page Lwt.t) ->
          (unit, 'post, [> `Nonattached of [> `Post ] Eliom_service.na_s ],
           [ `WithoutSuffix ], unit, 'pn,
           [< Eliom_service.registrable > `Registrable ], 'Pages.return)
          Eliom_service.service
        val send :
          ?options:Pages.options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ('a, 'b) Pages.page -> ('a, 'b) Pages.result Lwt.t
      end
  val suffix_redir_uri_key : string Polytables.key
end