sig
  module type PARAM =
    sig
      type page
      type options
      type result
      type frame
      val send :
        ?options:Eliom_registration_sigs.PARAM.options ->
        ?charset:string ->
        ?code:int ->
        ?content_type:string ->
        ?headers:Cohttp.Header.t ->
        Eliom_registration_sigs.PARAM.page ->
        Eliom_registration_sigs.PARAM.frame Lwt.t
      val send_appl_content : Eliom_service.send_appl_content
      val result_of_http_result :
        Eliom_registration_sigs.PARAM.frame ->
        Eliom_registration_sigs.PARAM.result
    end
  module type PARAM_POLY =
    sig
      type _ page
      type options
      type _ return
      type frame
      val send :
        ?options:Eliom_registration_sigs.PARAM_POLY.options ->
        ?charset:string ->
        ?code:int ->
        ?content_type:string ->
        ?headers:Cohttp.Header.t ->
        'Eliom_registration_sigs.PARAM_POLY.page ->
        Eliom_registration_sigs.PARAM_POLY.frame Lwt.t
      val send_appl_content : Eliom_service.send_appl_content
    end
  module type APP_PARAM =
    sig
      val application_name : string
      val global_data_path : string list option
    end
  module type S =
    sig
      type page
      type options
      type return = Eliom_service.non_ocaml
      type result
      val register :
        ?app:string ->
        ?scope:[< Eliom_common.scope ] ->
        ?options:Eliom_registration_sigs.S.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, Eliom_registration_sigs.S.return)
                Eliom_service.t ->
        ?error_handler:((string * exn) list ->
                        Eliom_registration_sigs.S.page Lwt.t) ->
        ('get -> 'post -> Eliom_registration_sigs.S.page Lwt.t) -> unit
      val send :
        ?options:Eliom_registration_sigs.S.options ->
        ?charset:string ->
        ?code:int ->
        ?content_type:string ->
        ?headers:Cohttp.Header.t ->
        Eliom_registration_sigs.S.page ->
        Eliom_registration_sigs.S.result Lwt.t
    end
  module type S_with_create =
    sig
      type page
      type options
      type return = Eliom_service.non_ocaml
      type 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 type S_poly =
    sig
      type _ page
      type options
      type _ return
      val register :
        ?app:string ->
        ?scope:[< Eliom_common.scope ] ->
        ?options:Eliom_registration_sigs.S_poly.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, 'Eliom_registration_sigs.S_poly.return)
                Eliom_service.t ->
        ?error_handler:((string * exn) list ->
                        'Eliom_registration_sigs.S_poly.page Lwt.t) ->
        ('get -> 'post -> 'Eliom_registration_sigs.S_poly.page Lwt.t) ->
        unit
    end
  module type S_poly_with_create =
    sig
      type _ page
      type options
      type _ 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
  module type S_poly_with_send =
    sig
      type _ page
      type options
      type _ 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
      type 'a result
      val send :
        ?options:options ->
        ?charset:string ->
        ?code:int ->
        ?content_type:string ->
        ?headers:Cohttp.Header.t ->
        'a page -> 'Eliom_registration_sigs.S_poly_with_send.result Lwt.t
    end
  module type S_poly_with_create_with_send =
    sig
      type _ page
      type options
      type _ 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
      type 'a result
      val send :
        ?options:options ->
        ?charset:string ->
        ?code:int ->
        ?content_type:string ->
        ?headers:Cohttp.Header.t ->
        'a page ->
        'Eliom_registration_sigs.S_poly_with_create_with_send.result Lwt.t
    end
end