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