# Module OpamRepository

    module OpamRepository: sig .. end

    val log : ('a, Pervasives.out_channel, unit) Pervasives.format -> 'a

    val slog : ('a -> string) -> Pervasives.out_channel -> 'a -> unit

    val compare : OpamTypes.repository -> OpamTypes.repository -> int

    val to_string : OpamTypes.repository -> string

    val default_address : string * 'a option

    val default : unit -> OpamTypes.repository

    val local : OpamTypes.repository_root -> OpamTypes.repository

    val to_json : OpamTypes.repository -> [> `O of (string * OpamJson.t) list ]

    module O: sig .. end

    val of_string : 'a -> 'b

    module Set: OpamMisc.Set.Make(O)

    module Map: OpamMisc.Map.Make(O)

    module type BACKEND = sig .. end

    exception Unknown_backend

    val backends : (OpamTypes.repository_kind, (module OpamRepository.BACKEND)) Hashtbl.t

    val find_backend : OpamTypes.repository_kind -> (module OpamRepository.BACKEND)

    val find_backend_by_kind : OpamTypes.repository_kind -> (module OpamRepository.BACKEND)

    val register_backend : OpamTypes.repository_kind -> (module OpamRepository.BACKEND) -> unit

    val init : OpamFile.Repo_config.t -> unit OpamProcess.Job.Op.job

    val pull_url : OpamTypes.repository_kind ->
           OpamTypes.package ->
           OpamTypes.dirname ->
           string option ->
           OpamTypes.address list ->
           OpamTypes.generic_file OpamTypes.download OpamProcess.job

    val revision : OpamTypes.repository -> OpamTypes.version option OpamProcess.job

    val pull_url_and_fix_digest : OpamTypes.repository_kind ->
           OpamTypes.package ->
           OpamTypes.dirname ->
           string ->
           OpamTypes.filename ->
           OpamTypes.address list ->
           OpamTypes.generic_file OpamTypes.download OpamProcess.Job.Op.job

    val check_digest : OpamFilename.t -> string option -> bool

    val pull_archive : OpamTypes.repository ->
           OpamTypes.package -> OpamTypes.filename OpamTypes.download OpamProcess.job

    val check_version : OpamTypes.repository -> unit OpamProcess.Job.Op.job

    val extract_prefix : OpamTypes.repository -> OpamFilename.Dir.t -> OpamPackage.t -> string

    val file : OpamFilename.t -> OpamFilename.t list

    val dir : OpamFilename.Dir.t -> OpamFilename.t list

    val compilers_with_prefixes : OpamTypes.repository -> string option OpamCompiler.Map.t

    val compilers : OpamTypes.repository -> OpamCompiler.Set.t

    val compiler_files : OpamTypes.repository ->
           string option -> OpamTypes.compiler -> OpamTypes.filename list

    val compiler_state : OpamTypes.repository -> string option -> OpamTypes.compiler -> string list

    val packages : OpamTypes.repository -> OpamPackage.Set.t

    val packages_with_prefixes : OpamTypes.repository -> string option OpamPackage.Map.t

    val url_checksum : OpamTypes.filename -> Digest.t list

    val package_files : OpamTypes.repository ->
           string option -> OpamTypes.package -> archive:bool -> OpamTypes.filename list

    val package_important_files : OpamTypes.repository ->
           string option -> OpamTypes.package -> archive:bool -> OpamTypes.filename list

    val package_state : OpamTypes.repository ->
           string option ->
           OpamTypes.package -> [< `all | `partial of bool > `all ] -> Digest.t list

    val sort : OpamTypes.repository OpamRepositoryName.Map.t -> OpamTypes.repository list

    val package_index : OpamTypes.repository OpamRepositoryName.Map.t ->
           (OpamTypes.repository_name * string option) OpamPackage.Map.t

    val compiler_index : OpamTypes.repository OpamRepositoryName.Map.t ->
           (OpamTypes.repository_name * string option) OpamCompiler.Map.t

    val update : OpamTypes.repository -> unit OpamProcess.job

    val make_archive : ?gener_digest:bool ->
           OpamTypes.repository ->
           string option -> OpamTypes.package -> unit OpamProcess.job

    module Graph: OpamParallel.MakeGraph(O)

    module Parallel: Graph.Parallel

    val find_backend : OpamTypes.repository_kind -> (module OpamRepository.BACKEND)