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