sig
  type ('a, 'b) page =
      (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
       unit, unit, Eliom_service.registrable, 'b)
      Eliom_service.service
  type options =
      [ `Found
      | `MovedPermanently
      | `NotNodifed
      | `SeeOther
      | `TemporaryRedirect
      | `UseProxy ]
  type 'b return = 'b
  type 'a result = 'Eliom_registration.kind
  val register :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ], 'b)
            Eliom_service.service ->
    ?error_handler:((string * exn) list ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     'post ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    unit
  val register_service :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     unit ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, unit,
     [> `Attached of
          ([> `Internal of [> `Service ] ], [> `Get ]) Eliom_service.a_s ],
     'a, 'gn, unit, [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_coservice :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ],
              'b)
             Eliom_service.service ->
    get_params:('get, [ `WithoutSuffix ], 'gn) Eliom_parameter.params_type ->
    ?error_handler:((string * exn) list ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     unit ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, unit,
     [> `Attached of
          ([> `Internal of [> `Coservice ] ], [> `Get ]) Eliom_service.a_s ],
     [ `WithoutSuffix ], 'gn, unit,
     [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_coservice' :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     unit ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, unit, [> `Nonattached of [> `Get ] Eliom_service.na_s ],
     [ `WithoutSuffix ], 'gn, unit,
     [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_post_service :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ],
              'b)
             Eliom_service.service ->
    post_params:('post, [ `WithoutSuffix ], 'pn) Eliom_parameter.params_type ->
    ?error_handler:((string * exn) list ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     'post ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, 'post,
     [> `Attached of
          ([> `Internal of [ `Coservice | `Service ] ], [> `Post ])
          Eliom_service.a_s ],
     'a, 'gn, 'pn, [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_post_coservice :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ],
              'b)
             Eliom_service.service ->
    post_params:('post, [ `WithoutSuffix ], 'pn) Eliom_parameter.params_type ->
    ?error_handler:((string * exn) list ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     'post ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, 'post,
     [> `Attached of
          ([> `Internal of [> `Coservice ] ], [> `Post ]) Eliom_service.a_s ],
     'a, 'gn, 'pn, [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_post_coservice' :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    (unit ->
     'post ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    (unit, 'post, [> `Nonattached of [> `Post ] Eliom_service.na_s ],
     [ `WithoutSuffix ], unit, 'pn,
     [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_put_service :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     Eliom_parameter.raw_post_data ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, Eliom_parameter.raw_post_data,
     [> `Attached of
          ([> `Internal of [> `Service ] ], [> `Put ]) Eliom_service.a_s ],
     'a, 'gn, Eliom_parameter.no_param_name,
     [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_put_coservice :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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, Eliom_parameter.raw_post_data,
              [ `Attached of
                  ([ `Internal of [ `Service ] ], [ `Put ]) Eliom_service.a_s ],
              [ `WithoutSuffix ], unit, Eliom_parameter.no_param_name,
              [< Eliom_service.registrable ], 'b)
             Eliom_service.service ->
    get_params:('get, [ `WithoutSuffix ], 'gn) Eliom_parameter.params_type ->
    ?error_handler:((string * exn) list ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     Eliom_parameter.raw_post_data ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, Eliom_parameter.raw_post_data,
     [> `Attached of
          ([> `Internal of [> `Coservice ] ], [> `Put ]) Eliom_service.a_s ],
     [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
     [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_put_coservice' :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     Eliom_parameter.raw_post_data ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, Eliom_parameter.raw_post_data,
     [> `Nonattached of [> `Put ] Eliom_service.na_s ], [ `WithoutSuffix ],
     'gn, Eliom_parameter.no_param_name,
     [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_delete_service :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     Eliom_parameter.raw_post_data ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, Eliom_parameter.raw_post_data,
     [> `Attached of
          ([> `Internal of [> `Service ] ], [> `Delete ]) Eliom_service.a_s ],
     'a, 'gn, Eliom_parameter.no_param_name,
     [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_delete_coservice :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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, Eliom_parameter.raw_post_data,
              [ `Attached of
                  ([ `Internal of [ `Service ] ], [ `Delete ])
                  Eliom_service.a_s ],
              [ `WithoutSuffix ], unit, Eliom_parameter.no_param_name,
              [< Eliom_service.registrable ], 'b)
             Eliom_service.service ->
    get_params:('get, [ `WithoutSuffix ], 'gn) Eliom_parameter.params_type ->
    ?error_handler:((string * exn) list ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     Eliom_parameter.raw_post_data ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, Eliom_parameter.raw_post_data,
     [> `Attached of
          ([> `Internal of [> `Coservice ] ], [> `Delete ]) Eliom_service.a_s ],
     [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
     [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val register_delete_coservice' :
    ?scope:[< Eliom_common.scope ] ->
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?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 ->
                    (unit, unit, Eliom_service.get_service_kind,
                     [ `WithoutSuffix ], unit, unit,
                     Eliom_service.registrable, 'b)
                    Eliom_service.service Lwt.t) ->
    ('get ->
     Eliom_parameter.raw_post_data ->
     (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
      unit, unit, Eliom_service.registrable, 'b)
     Eliom_service.service Lwt.t) ->
    ('get, Eliom_parameter.raw_post_data,
     [> `Nonattached of [> `Delete ] Eliom_service.na_s ],
     [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
     [< Eliom_service.registrable > `Registrable ], 'b)
    Eliom_service.service
  val send :
    ?options:[ `Found
             | `MovedPermanently
             | `NotNodifed
             | `SeeOther
             | `TemporaryRedirect
             | `UseProxy ] ->
    ?charset:string ->
    ?code:int ->
    ?content_type:string ->
    ?headers:Http_headers.t ->
    (unit, unit, Eliom_service.get_service_kind, [ `WithoutSuffix ], 
     unit, unit, Eliom_service.registrable, 'b)
    Eliom_service.service -> 'Eliom_registration.kind Lwt.t
end