sig
  module Make :
    functor
      (Pages : sig
                 type page
                 type options
                 type result
                 val send :
                   ?options:options ->
                   ?charset:string ->
                   ?code:int ->
                   ?content_type:string ->
                   ?headers:Cohttp.Header.t ->
                   page -> Ocsigen_response.t Lwt.t
                 val send_appl_content : Eliom_service.send_appl_content
                 val result_of_http_result : Ocsigen_response.t -> result
               end)
      ->
      sig
        type page = Pages.page
        type options = Pages.options
        type return = Eliom_service.non_ocaml
        type result = Pages.result
        val register :
          ?app:string ->
          ?scope:[< Eliom_common.scope ] ->
          ?options:options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Cohttp.Header.t ->
          ?secure_session:bool ->
          service:('get, 'post, 'a, 'b, 'c, Eliom_service.non_ext,
                   Eliom_service.reg, [< `WithSuffix | `WithoutSuffix ], 'd,
                   'e, return)
                  Eliom_service.t ->
          ?error_handler:((string * exn) list -> page Lwt.t) ->
          ('get -> 'post -> page Lwt.t) -> unit
        val send :
          ?options:options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Cohttp.Header.t -> page -> result Lwt.t
        val create :
          ?app:string ->
          ?scope:[< Eliom_common.scope ] ->
          ?options:options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Cohttp.Header.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          meth:('m, 'gp, 'gn, 'pp, 'pn,
                [< `WithSuffix | `WithoutSuffix ] as 'a, 'gp_)
               Eliom_service.meth ->
          path:('att, 'co, 'gp_) Eliom_service.path_option ->
          ?error_handler:((string * exn) list -> page Lwt.t) ->
          ('gp -> 'pp -> page Lwt.t) ->
          ('gp, 'pp, 'm, 'att, 'co, Eliom_service.non_ext, Eliom_service.reg,
           'a, 'gn, 'pn, return)
          Eliom_service.t
        val create_attached_get :
          ?app:string ->
          ?scope:[< Eliom_common.scope ] ->
          ?options:options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Cohttp.Header.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:(unit, unit, Eliom_service.get, Eliom_service.att,
                    Eliom_service.non_co, Eliom_service.non_ext, 'a,
                    [ `WithoutSuffix ], unit, unit, return)
                   Eliom_service.t ->
          get_params:('gp, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> page Lwt.t) ->
          ('gp -> unit -> page Lwt.t) ->
          ('gp, unit, Eliom_service.get, Eliom_service.att, Eliom_service.co,
           Eliom_service.non_ext, Eliom_service.reg, [ `WithoutSuffix ], 'gn,
           unit, return)
          Eliom_service.t
        val create_attached_post :
          ?app:string ->
          ?scope:[< Eliom_common.scope ] ->
          ?options:options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Cohttp.Header.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:('gp, unit, Eliom_service.get, Eliom_service.att,
                    Eliom_service.non_co, Eliom_service.non_ext, 'a,
                    [ `WithoutSuffix ], 'gn, unit, return)
                   Eliom_service.t ->
          post_params:('pp, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> page Lwt.t) ->
          ('gp -> 'pp -> page Lwt.t) ->
          ('gp, 'pp, Eliom_service.post, Eliom_service.att, Eliom_service.co,
           Eliom_service.non_ext, Eliom_service.reg, [ `WithoutSuffix ], 'gn,
           'pn, return)
          Eliom_service.t
      end
  module Make_poly :
    functor
      (Pages : sig
                 type _ page
                 type options
                 type _ return
                 val send :
                   ?options:options ->
                   ?charset:string ->
                   ?code:int ->
                   ?content_type:string ->
                   ?headers:Cohttp.Header.t ->
                   'a page -> Ocsigen_response.t Lwt.t
                 val send_appl_content : Eliom_service.send_appl_content
               end)
      ->
      sig
        type 'a page = 'Pages.page
        type options = Pages.options
        type 'a return = 'Pages.return
        val register :
          ?app:string ->
          ?scope:[< Eliom_common.scope ] ->
          ?options:options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Cohttp.Header.t ->
          ?secure_session:bool ->
          service:('get, 'post, 'b, 'c, 'd, Eliom_service.non_ext,
                   Eliom_service.reg, [< `WithSuffix | `WithoutSuffix ], 'e,
                   'f, 'a return)
                  Eliom_service.t ->
          ?error_handler:((string * exn) list -> 'a page Lwt.t) ->
          ('get -> 'post -> 'a page Lwt.t) -> unit
        val create :
          ?app:string ->
          ?scope:[< Eliom_common.scope ] ->
          ?options:options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Cohttp.Header.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          meth:('m, 'gp, 'gn, 'pp, 'pn,
                [< `WithSuffix | `WithoutSuffix ] as 'b, 'gp_)
               Eliom_service.meth ->
          path:('att, 'co, 'gp_) Eliom_service.path_option ->
          ?error_handler:((string * exn) list -> 'a page Lwt.t) ->
          ('gp -> 'pp -> 'a page Lwt.t) ->
          ('gp, 'pp, 'm, 'att, 'co, Eliom_service.non_ext, Eliom_service.reg,
           'b, 'gn, 'pn, 'a return)
          Eliom_service.t
        val create_attached_get :
          ?app:string ->
          ?scope:[< Eliom_common.scope ] ->
          ?options:options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Cohttp.Header.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:(unit, unit, Eliom_service.get, Eliom_service.att,
                    Eliom_service.non_co, Eliom_service.non_ext, 'b,
                    [ `WithoutSuffix ], unit, unit, 'a return)
                   Eliom_service.t ->
          get_params:('gp, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> 'a page Lwt.t) ->
          ('gp -> unit -> 'a page Lwt.t) ->
          ('gp, unit, Eliom_service.get, Eliom_service.att, Eliom_service.co,
           Eliom_service.non_ext, Eliom_service.reg, [ `WithoutSuffix ], 'gn,
           unit, 'a return)
          Eliom_service.t
        val create_attached_post :
          ?app:string ->
          ?scope:[< Eliom_common.scope ] ->
          ?options:options ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Cohttp.Header.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          fallback:('gp, unit, Eliom_service.get, Eliom_service.att,
                    Eliom_service.non_co, Eliom_service.non_ext, 'b,
                    [ `WithoutSuffix ], 'gn, unit, 'a return)
                   Eliom_service.t ->
          post_params:('pp, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list -> 'a page Lwt.t) ->
          ('gp -> 'pp -> 'a page Lwt.t) ->
          ('gp, 'pp, Eliom_service.post, Eliom_service.att, Eliom_service.co,
           Eliom_service.non_ext, Eliom_service.reg, [ `WithoutSuffix ], 'gn,
           'pn, 'a return)
          Eliom_service.t
      end
  val suffix_redir_uri_key : string Polytables.key
end