`sig module type IO_FILE = sig type t val empty : OpamFile.IO_FILE.t val write : OpamTypes.filename -> OpamFile.IO_FILE.t -> unit val read : OpamTypes.filename -> OpamFile.IO_FILE.t val safe_read : OpamTypes.filename -> OpamFile.IO_FILE.t val read_from_channel : Pervasives.in_channel -> OpamFile.IO_FILE.t val write_to_channel : Pervasives.out_channel -> OpamFile.IO_FILE.t -> unit end module Lines : sig type t = string list list val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Config : sig type t val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit val create : OpamTypes.switch -> OpamTypes.repository_name list -> ?criteria:(OpamTypes.solver_criteria * string) list -> ?solver:OpamTypes.arg list -> int -> ?download_tool:OpamTypes.arg list -> int -> t val with_switch : t -> OpamTypes.switch -> t val with_repositories : t -> OpamTypes.repository_name list -> t val with_current_opam_version : t -> t val with_criteria : t -> (OpamTypes.solver_criteria * string) list -> t val with_solver : t -> OpamTypes.arg list option -> t val opam_version : t -> OpamTypes.opam_version val repositories : t -> OpamTypes.repository_name list val switch : t -> OpamTypes.switch val jobs : t -> int val dl_tool : t -> OpamTypes.arg list option val dl_jobs : t -> int val criteria : t -> (OpamTypes.solver_criteria * string) list val solver : t -> OpamTypes.arg list option end module OPAM : sig type t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit val empty : t val create : OpamTypes.package -> t val template : OpamTypes.package -> t val validate : t -> (int * [ `Error | `Warning ] * string) list val validate_file : OpamTypes.filename -> (int * [ `Error | `Warning ] * string) list * t option val warns_to_string : (int * [ `Error | `Warning ] * string) list -> string val is_explicit : OpamTypes.filename -> bool val opam_version : t -> OpamTypes.opam_version val name : t -> OpamTypes.name val name_opt : t -> OpamTypes.name option val version : t -> OpamTypes.version val version_opt : t -> OpamTypes.version option val ocaml_version : t -> OpamTypes.compiler_constraint option val os : t -> (bool * string) OpamTypes.generic_formula val available : t -> OpamTypes.filter val maintainer : t -> string list val substs : t -> OpamTypes.basename list val build_env : t -> (string * string * string) list val build : t -> OpamTypes.command list val install : t -> OpamTypes.command list val remove : t -> OpamTypes.command list val depends : t -> OpamTypes.ext_formula val depopts : t -> OpamTypes.ext_formula val depexts : t -> OpamTypes.tags option val with_messages : t -> (string * OpamTypes.filter option) list -> t val with_post_messages : t -> (string * OpamTypes.filter option) list -> t val conflicts : t -> OpamTypes.formula val features : t -> (OpamVariable.t * string * OpamTypes.filter) list val libraries : t -> (string * OpamTypes.filter option) list val syntax : t -> (string * OpamTypes.filter option) list val patches : t -> (OpamTypes.basename * OpamTypes.filter option) list val homepage : t -> string list val author : t -> string list val license : t -> string list val doc : t -> string list val tags : t -> string list val build_test : t -> OpamTypes.command list val build_doc : t -> OpamTypes.command list val messages : t -> (string * OpamTypes.filter option) list val post_messages : t -> (string * OpamTypes.filter option) list val bug_reports : t -> string list val flags : t -> OpamTypes.package_flag list val has_flag : OpamTypes.package_flag -> t -> bool val with_opam_version : t -> OpamTypes.opam_version -> t val dev_repo : t -> OpamTypes.pin_option option val with_name : t -> OpamTypes.name -> t val with_name_opt : t -> OpamTypes.name option -> t val with_version : t -> OpamTypes.version -> t val with_version_opt : t -> OpamTypes.version option -> t val with_depends : t -> OpamTypes.ext_formula -> t val with_depopts : t -> OpamTypes.ext_formula -> t val with_conflicts : t -> OpamTypes.formula -> t val with_features : t -> (OpamVariable.t * string * OpamTypes.filter) list -> t val with_build : t -> OpamTypes.command list -> t val with_install : t -> OpamTypes.command list -> t val with_remove : t -> OpamTypes.command list -> t val with_libraries : t -> (string * OpamTypes.filter option) list -> t val with_syntax : t -> (string * OpamTypes.filter option) list -> t val with_substs : t -> OpamTypes.basename list -> t val with_ocaml_version : t -> OpamTypes.compiler_constraint option -> t val with_os : t -> (bool * string) OpamTypes.generic_formula -> t val with_available : t -> OpamTypes.filter -> t val with_maintainer : t -> string list -> t val with_patches : t -> (OpamTypes.basename * OpamTypes.filter option) list -> t val with_bug_reports : t -> string list -> t val with_depexts : t -> OpamTypes.tags option -> t val with_flags : t -> OpamTypes.package_flag list -> t val with_dev_repo : t -> OpamTypes.pin_option option -> t val to_1_0 : OpamTypes.file -> OpamTypes.file end module Descr : sig type t val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit val of_string : string -> t val synopsis : t -> string val body : t -> string val full : t -> string end module Aliases : sig type t = OpamTypes.compiler OpamTypes.switch_map val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Export : sig type t = OpamTypes.package_set * OpamTypes.package_set * OpamTypes.pin_option OpamPackage.Name.Map.t val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Installed : sig type t = OpamTypes.package_set val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Installed_roots : sig type t = OpamTypes.package_set val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Reinstall : sig type t = OpamTypes.package_set val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Comp : sig type t val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit val create_preinstalled : OpamTypes.compiler -> OpamTypes.compiler_version -> OpamTypes.name list -> (string * string * string) list -> t val preinstalled : t -> bool val opam_version : t -> OpamTypes.opam_version val name : t -> OpamTypes.compiler val version : t -> OpamTypes.compiler_version val src : t -> OpamTypes.address option val kind : t -> OpamTypes.repository_kind val patches : t -> OpamTypes.filename list val configure : t -> string list val make : t -> string list val build : t -> OpamTypes.command list val packages : t -> OpamTypes.formula val env : t -> (string * string * string) list val with_src : t -> OpamTypes.address option -> t val with_patches : t -> OpamTypes.filename list -> t val with_configure : t -> string list -> t val with_make : t -> string list -> t val with_build : t -> OpamTypes.command list -> t val with_packages : t -> OpamTypes.formula -> t val to_1_0 : OpamTypes.file -> OpamTypes.file end module Dot_install : sig type t val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit val bin : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val sbin : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val lib : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val toplevel : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val stublibs : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val share : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val share_root : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val etc : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val doc : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val man : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val libexec : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.basename option) list val misc : t -> (OpamTypes.basename OpamTypes.optional * OpamTypes.filename) list end module Dot_config : sig type t val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit val create : (OpamTypes.variable * OpamTypes.variable_contents) list -> t val variable : t -> OpamTypes.variable -> OpamTypes.variable_contents option val variables : t -> OpamTypes.variable list end module Package_index : sig type t = (OpamTypes.repository_name * string option) OpamTypes.package_map val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Compiler_index : sig type t = (OpamTypes.repository_name * string option) OpamTypes.compiler_map val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Repo_config : sig type t = OpamTypes.repository val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Pinned : sig type t = OpamTypes.pin_option OpamTypes.name_map val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Repo : sig type t val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit val create : ?browse:string -> ?upstream:string -> ?opam_version:string -> ?redirect:(string * OpamTypes.filter option) list -> unit -> t val opam_version : t -> OpamVersion.t val browse : t -> string option val upstream : t -> string option val redirect : t -> (string * OpamTypes.filter option) list end module URL : sig type t val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit val create : OpamTypes.repository_kind -> ?mirrors:OpamTypes.address list -> OpamTypes.address -> t val url : t -> OpamTypes.address val mirrors : t -> OpamTypes.address list val kind : t -> OpamTypes.repository_kind val checksum : t -> string option val with_checksum : t -> string -> t end module File_attributes : sig type t = OpamTypes.file_attribute_set val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Filenames : sig type t = OpamTypes.filename_set val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end module Prefix : sig type t = string OpamTypes.name_map val empty : t val write : OpamTypes.filename -> t -> unit val read : OpamTypes.filename -> t val safe_read : OpamTypes.filename -> t val read_from_channel : in_channel -> t val write_to_channel : out_channel -> t -> unit end val print_stats : unit -> unit end`