sig
  type t = OpamTypes.dirname
  val root : unit -> OpamPath.t
  val state_cache : OpamPath.t -> OpamTypes.filename
  val update_cache : OpamPath.t -> OpamTypes.filename
  val lock : OpamPath.t -> OpamTypes.filename
  val config : OpamPath.t -> OpamTypes.filename
  val aliases : OpamPath.t -> OpamTypes.filename
  val packages_dir : OpamPath.t -> OpamTypes.dirname
  val packages : OpamPath.t -> OpamTypes.package -> OpamTypes.dirname
  val opam : OpamPath.t -> OpamTypes.package -> OpamTypes.filename
  val url : OpamPath.t -> OpamTypes.package -> OpamTypes.filename
  val files : OpamPath.t -> OpamTypes.package -> OpamTypes.dirname
  val dev_packages_dir : OpamPath.t -> OpamTypes.dirname
  val dev_package : OpamPath.t -> OpamTypes.package -> OpamTypes.dirname
  val descr : OpamPath.t -> OpamTypes.package -> OpamTypes.filename
  val archives_dir : OpamPath.t -> OpamTypes.dirname
  val archive : OpamPath.t -> OpamTypes.package -> OpamTypes.filename
  val compiler_comp : OpamPath.t -> OpamTypes.compiler -> OpamTypes.filename
  val compiler_descr : OpamPath.t -> OpamTypes.compiler -> OpamTypes.filename
  val compilers_dir : OpamPath.t -> OpamTypes.dirname
  val compilers : OpamPath.t -> OpamTypes.compiler -> OpamTypes.dirname
  val package_index : OpamPath.t -> OpamTypes.filename
  val compiler_index : OpamPath.t -> OpamTypes.filename
  val init : OpamPath.t -> OpamTypes.dirname
  val log : OpamPath.t -> OpamTypes.dirname
  val backup_dir : OpamPath.t -> OpamTypes.dirname
  val backup : OpamPath.t -> OpamTypes.filename
  module Switch :
    sig
      val root : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val lock : OpamPath.t -> OpamTypes.switch -> OpamTypes.filename
      val backup_dir : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val backup : OpamPath.t -> OpamTypes.switch -> OpamTypes.filename
      val lib :
        OpamPath.t -> OpamTypes.switch -> OpamTypes.name -> OpamTypes.dirname
      val lib_dir : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val stublibs : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val toplevel : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val doc :
        OpamPath.t -> OpamTypes.switch -> OpamTypes.name -> OpamTypes.dirname
      val doc_dir : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val share_dir : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val share :
        OpamPath.t -> OpamTypes.switch -> OpamTypes.name -> OpamTypes.dirname
      val etc_dir : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val etc :
        OpamPath.t -> OpamTypes.switch -> OpamTypes.name -> OpamTypes.dirname
      val man_dir :
        ?num:string -> OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val bin : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val sbin : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val installed : OpamPath.t -> OpamTypes.switch -> OpamTypes.filename
      val installed_roots :
        OpamPath.t -> OpamTypes.switch -> OpamTypes.filename
      val build :
        OpamPath.t ->
        OpamTypes.switch -> OpamTypes.package -> OpamTypes.dirname
      val build_ocaml : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val build_dir : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val build_install :
        OpamPath.t ->
        OpamTypes.switch -> OpamTypes.package -> OpamTypes.filename
      val build_config :
        OpamPath.t ->
        OpamTypes.switch -> OpamTypes.package -> OpamTypes.filename
      val install :
        OpamPath.t ->
        OpamTypes.switch -> OpamTypes.name -> OpamTypes.filename
      val install_dir : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val reinstall : OpamPath.t -> OpamTypes.switch -> OpamTypes.filename
      val config :
        OpamPath.t ->
        OpamTypes.switch -> OpamTypes.name -> OpamTypes.filename
      val config_dir : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val pinned : OpamPath.t -> OpamTypes.switch -> OpamTypes.filename
      val dev_packages_dir :
        OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val dev_package :
        OpamPath.t ->
        OpamTypes.switch -> OpamTypes.package -> OpamTypes.dirname
      module Overlay :
        sig
          val dir : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
          val package :
            OpamPath.t ->
            OpamTypes.switch -> OpamTypes.package -> OpamTypes.dirname
          val opam :
            OpamPath.t ->
            OpamTypes.switch -> OpamTypes.package -> OpamTypes.filename
          val url :
            OpamPath.t ->
            OpamTypes.switch -> OpamTypes.package -> OpamTypes.filename
          val descr :
            OpamPath.t ->
            OpamTypes.switch -> OpamTypes.package -> OpamTypes.filename
          val files :
            OpamPath.t ->
            OpamTypes.switch -> OpamTypes.package -> OpamTypes.dirname
        end
    end
  module Repository :
    sig
      val create :
        OpamPath.t -> OpamTypes.repository_name -> OpamTypes.dirname
      val update_cache : OpamTypes.repository -> OpamTypes.filename
      val repo : OpamTypes.repository -> OpamTypes.filename
      val remote_repo : OpamTypes.repository -> OpamTypes.filename
      val raw_config :
        OpamTypes.dirname -> OpamTypes.repository_name -> OpamTypes.filename
      val config : OpamTypes.repository -> OpamTypes.filename
      val packages_dir : OpamTypes.repository -> OpamTypes.dirname
      val remote_packages_dir : OpamTypes.repository -> OpamTypes.dirname
      val packages :
        OpamTypes.repository ->
        string option -> OpamTypes.package -> OpamTypes.dirname
      val opam :
        OpamTypes.repository ->
        string option -> OpamTypes.package -> OpamTypes.filename
      val descr :
        OpamTypes.repository ->
        string option -> OpamTypes.package -> OpamTypes.filename
      val url :
        OpamTypes.repository ->
        string option -> OpamTypes.package -> OpamTypes.filename
      val files :
        OpamTypes.repository ->
        string option -> OpamTypes.package -> OpamTypes.dirname
      val archive :
        OpamTypes.repository -> OpamTypes.package -> OpamTypes.filename
      val remote_archive :
        OpamTypes.repository -> OpamTypes.package -> OpamTypes.filename
      val archives_dir : OpamTypes.repository -> OpamTypes.dirname
      val upload_dir : OpamTypes.repository -> OpamTypes.dirname
      val compilers_dir : OpamTypes.repository -> OpamTypes.dirname
      val compiler_comp :
        OpamTypes.repository ->
        string option -> OpamTypes.compiler -> OpamTypes.filename
      val compiler_descr :
        OpamTypes.repository ->
        string option -> OpamTypes.compiler -> OpamTypes.filename
      val remote_compilers_dir : OpamTypes.repository -> OpamTypes.dirname
    end
end