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 opam_version : t -> OpamTypes.opam_version
  val name : t -> OpamTypes.name
  val version : t -> OpamTypes.version
  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 remove : t -> OpamTypes.command list
  val depends : t -> OpamTypes.formula
  val depopts : t -> OpamTypes.formula
  val depexts : t -> OpamTypes.tags option
  val conflicts : t -> OpamTypes.formula
  val libraries : t -> OpamTypes.section list
  val syntax : t -> OpamTypes.section 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 with_name : t -> OpamTypes.name -> t
  val with_version : t -> OpamTypes.version -> t
  val with_depends : t -> OpamTypes.formula -> t
  val with_depopts : t -> OpamTypes.formula -> t
  val with_build : t -> OpamTypes.command list -> t
  val with_remove : t -> OpamTypes.command list -> t
  val with_libraries : t -> OpamTypes.section list -> t
  val with_substs : t -> OpamTypes.basename list -> t
  val with_ocaml_version : t -> OpamTypes.compiler_constraint option -> 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 to_1_0 : OpamTypes.file -> OpamTypes.file
end