sig
  type t = OpamTypes.dirname
  val default : unit -> OpamPath.t
  val root : OpamPath.t -> OpamTypes.dirname
  val state_cache : OpamPath.t -> OpamTypes.filename
  val lock : OpamPath.t -> OpamTypes.filename
  val config : OpamPath.t -> OpamTypes.filename
  val aliases : OpamPath.t -> OpamTypes.filename
  val opam : OpamPath.t -> OpamTypes.package -> OpamTypes.filename
  val compiler : OpamPath.t -> OpamTypes.compiler -> OpamTypes.filename
  val compiler_descr : OpamPath.t -> OpamTypes.compiler -> OpamTypes.filename
  val compilers_dir : OpamPath.t -> OpamTypes.dirname
  val descr : OpamPath.t -> OpamTypes.package -> OpamTypes.filename
  val archive : OpamPath.t -> OpamTypes.package -> OpamTypes.filename
  val opam_dir : OpamPath.t -> OpamTypes.dirname
  val descr_dir : OpamPath.t -> OpamTypes.dirname
  val archives_dir : OpamPath.t -> OpamTypes.dirname
  val repo_index : OpamPath.t -> OpamTypes.filename
  val init : OpamPath.t -> OpamTypes.dirname
  module Switch :
    sig
      val root : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val lock : 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 man_dir :
        ?num:string -> OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val bin : 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 pinned_cache : OpamPath.t -> OpamTypes.switch -> OpamTypes.dirname
      val pinned_dir :
        OpamPath.t -> OpamTypes.switch -> OpamTypes.name -> OpamTypes.dirname
    end
  module Repository :
    sig
      val root : OpamTypes.repository_root -> OpamTypes.dirname
      val prefix : OpamTypes.repository_root -> OpamTypes.filename
      val create :
        OpamTypes.repository_root ->
        OpamTypes.repository_name -> OpamTypes.repository_root
      val version : OpamTypes.repository_root -> OpamTypes.filename
      val config : OpamTypes.repository_root -> OpamTypes.filename
      val packages_dir : OpamTypes.repository_root -> OpamTypes.dirname
      val package :
        OpamTypes.repository_root ->
        string option -> OpamTypes.package -> OpamTypes.dirname
      val opam :
        OpamTypes.repository_root ->
        string option -> OpamTypes.package -> OpamTypes.filename
      val descr :
        OpamTypes.repository_root ->
        string option -> OpamTypes.package -> OpamTypes.filename
      val url :
        OpamTypes.repository_root ->
        string option -> OpamTypes.package -> OpamTypes.filename
      val files :
        OpamTypes.repository_root ->
        string option -> OpamTypes.package -> OpamTypes.dirname
      val archive :
        OpamTypes.repository_root -> OpamTypes.package -> OpamTypes.filename
      val archives_dir : OpamTypes.repository_root -> OpamTypes.dirname
      val updated : OpamTypes.repository_root -> OpamTypes.filename
      val upload_dir : OpamTypes.repository_root -> OpamTypes.dirname
      val compiler :
        OpamTypes.repository_root -> OpamTypes.compiler -> OpamTypes.filename
      val compiler_descr :
        OpamTypes.repository_root -> OpamTypes.compiler -> OpamTypes.filename
      val compilers_dir : OpamTypes.repository_root -> OpamTypes.dirname
      val tmp : OpamTypes.repository_root -> OpamTypes.dirname
      val tmp_dir :
        OpamTypes.repository_root -> OpamTypes.package -> OpamTypes.dirname
    end
end