`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.package -> t
val template : OpamTypes.package -> t
val validate : t -> string list
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 conflicts : t -> OpamTypes.formula
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 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_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_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`