sig
  module Reg :
    sig
      type page = Atom_feed.feed
      type options = unit
      type return = Eliom_registration.http_service
      type result =
          Eliom_registration.browser_content Eliom_registration.kind
      val register :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?charset:string ->
        ?code:int ->
        ?content_type:string ->
        ?headers:Http_headers.t ->
        ?secure_session:bool ->
        service:('get, 'post, [< Eliom_service.service_method ],
                 [< Eliom_service.attached ],
                 [< Eliom_service.internal_service_kind ],
                 [< Eliom_service.suff ], 'gn, 'pn, [ `Registrable ],
                 [< Eliom_registration.http_service ])
                Eliom_service.service ->
        ?error_handler:((string * exn) list -> Atom_feed.feed Lwt.t) ->
        ('get -> 'post -> Atom_feed.feed Lwt.t) -> unit
      val register_service :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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 -> Atom_feed.feed Lwt.t) ->
        ('get -> unit -> Atom_feed.feed Lwt.t) ->
        ('get, unit, [< Eliom_service.service_method > `Get ],
         [< Eliom_service.attached > `Attached ],
         [< Eliom_service.service_kind > `Service ], 'a, 'gn, unit,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_coservice :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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, [ `Get ], Eliom_service.attached_kind,
                  [ `Service ], [ `WithoutSuffix ], unit, unit,
                  [< Eliom_service.registrable ],
                  [< Eliom_registration.http_service ])
                 Eliom_service.service ->
        get_params:('get, [ `WithoutSuffix ], 'gn)
                   Eliom_parameter.params_type ->
        ?error_handler:((string * exn) list -> Atom_feed.feed Lwt.t) ->
        ('get -> unit -> Atom_feed.feed Lwt.t) ->
        ('get, unit, [< Eliom_service.service_method > `Get ],
         [< Eliom_service.attached > `Attached ],
         [< Eliom_service.service_kind > `AttachedCoservice ],
         [ `WithoutSuffix ], 'gn, unit,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_coservice' :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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 -> Atom_feed.feed Lwt.t) ->
        ('get -> unit -> Atom_feed.feed Lwt.t) ->
        ('get, unit, [< Eliom_service.service_method > `Get ],
         [< Eliom_service.attached > `Nonattached ],
         [< Eliom_service.service_kind > `NonattachedCoservice ],
         [ `WithoutSuffix ], 'gn, unit,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_post_service :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?charset:string ->
        ?code:int ->
        ?content_type:string ->
        ?headers:Http_headers.t ->
        ?secure_session:bool ->
        ?https:bool ->
        ?priority:int ->
        fallback:('get, unit, [ `Get ], Eliom_service.attached_kind,
                  [ `AttachedCoservice | `Service ],
                  [< Eliom_service.suff ] as 'a, 'gn, unit,
                  [< `Registrable ], [< Eliom_registration.http_service ])
                 Eliom_service.service ->
        post_params:('post, [ `WithoutSuffix ], 'pn)
                    Eliom_parameter.params_type ->
        ?error_handler:((string * exn) list -> Atom_feed.feed Lwt.t) ->
        ('get -> 'post -> Atom_feed.feed Lwt.t) ->
        ('get, 'post, [< Eliom_service.service_method > `Post ],
         [< Eliom_service.attached > `Attached ],
         [ `AttachedCoservice | `Service ], 'a, 'gn, 'pn,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_post_coservice :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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, [< `Get ], [< Eliom_service.attached_kind ],
                  [< `AttachedCoservice | `Service ],
                  [< Eliom_service.suff ] as 'a, 'gn, unit,
                  [< `Registrable ], [< Eliom_registration.http_service ])
                 Eliom_service.service ->
        post_params:('post, [ `WithoutSuffix ], 'pn)
                    Eliom_parameter.params_type ->
        ?error_handler:((string * exn) list -> Atom_feed.feed Lwt.t) ->
        ('get -> 'post -> Atom_feed.feed Lwt.t) ->
        ('get, 'post, [< Eliom_service.service_method > `Post ],
         [< Eliom_service.attached > `Attached ],
         [< Eliom_service.service_kind > `AttachedCoservice ], 'a, 'gn, 'pn,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_post_coservice' :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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 -> Atom_feed.feed Lwt.t) ->
        (unit -> 'post -> Atom_feed.feed Lwt.t) ->
        (unit, 'post, [< Eliom_service.service_method > `Post ],
         [< Eliom_service.attached > `Nonattached ],
         [< Eliom_service.service_kind > `NonattachedCoservice ],
         [ `WithoutSuffix ], unit, 'pn,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_put_service :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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 -> Atom_feed.feed Lwt.t) ->
        ('get -> Eliom_parameter.raw_post_data -> Atom_feed.feed Lwt.t) ->
        ('get, Eliom_parameter.raw_post_data,
         [< Eliom_service.service_method > `Put ],
         [< Eliom_service.attached > `Attached ],
         [< Eliom_service.service_kind > `Service ], 'a, 'gn,
         Eliom_parameter.no_param_name,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_put_coservice :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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, [ `Put ],
                  Eliom_service.attached_kind, [ `Service ],
                  [ `WithoutSuffix ], unit, Eliom_parameter.no_param_name,
                  [< Eliom_service.registrable ],
                  [< Eliom_registration.http_service ])
                 Eliom_service.service ->
        get_params:('get, [ `WithoutSuffix ], 'gn)
                   Eliom_parameter.params_type ->
        ?error_handler:((string * exn) list -> Atom_feed.feed Lwt.t) ->
        ('get -> Eliom_parameter.raw_post_data -> Atom_feed.feed Lwt.t) ->
        ('get, Eliom_parameter.raw_post_data,
         [< Eliom_service.service_method > `Put ],
         [< Eliom_service.attached > `Attached ],
         [< Eliom_service.service_kind > `AttachedCoservice ],
         [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_put_coservice' :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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 -> Atom_feed.feed Lwt.t) ->
        ('get -> Eliom_parameter.raw_post_data -> Atom_feed.feed Lwt.t) ->
        ('get, Eliom_parameter.raw_post_data,
         [< Eliom_service.service_method > `Put ],
         [< Eliom_service.attached > `Nonattached ],
         [< Eliom_service.service_kind > `NonattachedCoservice ],
         [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_delete_service :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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 -> Atom_feed.feed Lwt.t) ->
        ('get -> Eliom_parameter.raw_post_data -> Atom_feed.feed Lwt.t) ->
        ('get, Eliom_parameter.raw_post_data,
         [< Eliom_service.service_method > `Delete ],
         [< Eliom_service.attached > `Attached ],
         [< Eliom_service.service_kind > `Service ], 'a, 'gn,
         Eliom_parameter.no_param_name,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_delete_coservice :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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, [ `Delete ],
                  Eliom_service.attached_kind, [ `Service ],
                  [ `WithoutSuffix ], unit, Eliom_parameter.no_param_name,
                  [< Eliom_service.registrable ],
                  [< Eliom_registration.http_service ])
                 Eliom_service.service ->
        get_params:('get, [ `WithoutSuffix ], 'gn)
                   Eliom_parameter.params_type ->
        ?error_handler:((string * exn) list -> Atom_feed.feed Lwt.t) ->
        ('get -> Eliom_parameter.raw_post_data -> Atom_feed.feed Lwt.t) ->
        ('get, Eliom_parameter.raw_post_data,
         [< Eliom_service.service_method > `Delete ],
         [< Eliom_service.attached > `Attached ],
         [< Eliom_service.service_kind > `AttachedCoservice ],
         [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val register_delete_coservice' :
        ?scope:[< Eliom_common.scope ] ->
        ?options:unit ->
        ?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 -> Atom_feed.feed Lwt.t) ->
        ('get -> Eliom_parameter.raw_post_data -> Atom_feed.feed Lwt.t) ->
        ('get, Eliom_parameter.raw_post_data,
         [< Eliom_service.service_method > `Delete ],
         [< Eliom_service.attached > `Nonattached ],
         [< Eliom_service.service_kind > `NonattachedCoservice ],
         [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
         [< Eliom_service.registrable > `Registrable ],
         [> Eliom_registration.http_service ])
        Eliom_service.service
      val send :
        ?options:unit ->
        ?charset:string ->
        ?code:int ->
        ?content_type:string ->
        ?headers:Http_headers.t ->
        Atom_feed.feed ->
        Eliom_registration.browser_content Eliom_registration.kind Lwt.t
    end
  type feed = { notify_updates : unit -> unit; }
  val register_feed :
    path:string list ->
    hubs:Atom_feed.uri list ->
    string -> (unit -> Atom_feed.feed Lwt.t) -> Eliom_atom.feed
end