`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`