sig
  exception Unknown_backend
  val to_string : OpamTypes.repository -> string
  val compare : OpamTypes.repository -> OpamTypes.repository -> int
  val default : OpamTypes.repository
  val default_address : OpamTypes.address
  val repository_address : string -> OpamTypes.address
  val local_repo : unit -> OpamTypes.repository_root
  val init : OpamTypes.repository -> unit
  val update : OpamTypes.repository -> unit
  val download : OpamTypes.repository -> OpamTypes.package -> unit
  val upload : OpamTypes.repository -> unit
  module type BACKEND =
    sig
      val init : address:OpamTypes.address -> unit
      val update : address:OpamTypes.address -> OpamFilename.Set.t
      val download_archive :
        address:OpamTypes.address ->
        OpamTypes.package -> OpamTypes.filename OpamTypes.download
      val download_file :
        ?checksum:string ->
        OpamTypes.package ->
        OpamTypes.filename -> OpamTypes.filename OpamTypes.download
      val download_dir :
        OpamTypes.package ->
        ?dst:OpamTypes.dirname ->
        OpamTypes.address -> OpamTypes.dirname OpamTypes.download
      val upload_dir :
        address:OpamTypes.dirname -> OpamTypes.address -> OpamFilename.Set.t
    end
  val register_backend :
    OpamTypes.repository_kind -> (module OpamRepository.BACKEND-> unit
  val find_backend :
    OpamTypes.repository_kind -> (module OpamRepository.BACKEND)
  val copy_files :
    OpamTypes.repository_root -> OpamTypes.package -> OpamFilename.Set.t
  val make_archive :
    ?gener_digest:bool ->
    ?local_path:OpamTypes.dirname -> OpamTypes.package -> unit
  val packages :
    OpamTypes.repository_root ->
    string OpamTypes.name_map * OpamTypes.package_set
  val compilers :
    OpamTypes.repository_root ->
    (OpamTypes.filename * OpamTypes.filename option) OpamTypes.compiler_map
  val files :
    OpamTypes.repository_root -> OpamTypes.package -> OpamTypes.filename_set
  val prefix :
    OpamTypes.repository_root -> OpamTypes.package -> string option
  val find_prefix :
    string OpamTypes.name_map -> OpamTypes.package -> string option
  val invalid_checksum :
    OpamTypes.filename -> actual:string -> expected:string -> 'a
end