sig
  val empty : OpamTypes.file
  val map :
    (string -> OpamTypes.value -> (string * OpamTypes.value) option) ->
    OpamTypes.file -> OpamTypes.file
  val variables : OpamTypes.file_item list -> (string * OpamTypes.value) list
  val sections :
    OpamTypes.file_item list -> (string * OpamTypes.file_section) list
  val is_valid : OpamTypes.file_item list -> string list -> bool
  val invalid_fields : OpamTypes.file_item list -> string list -> string list
  exception Bad_format of OpamTypes.pos option * string list * string
  val bad_format :
    ?pos:OpamTypes.pos -> ('a, unit, string, 'b) Pervasives.format4 -> 'a
  val add_pos : OpamTypes.pos -> exn -> exn
  val value_pos : OpamTypes.value -> OpamTypes.pos
  val values_pos : OpamTypes.value list -> OpamTypes.pos option
  val parse_bool : OpamTypes.value -> bool
  val parse_int : OpamTypes.value -> int
  val parse_ident : OpamTypes.value -> string
  val parse_string : OpamTypes.value -> string
  val parse_list : (OpamTypes.value -> 'a) -> OpamTypes.value -> 'a list
  val parse_list_list : (OpamTypes.value -> 'a) -> OpamTypes.value -> 'a list
  val parse_group : (OpamTypes.value -> 'a) -> OpamTypes.value -> 'a list
  val parse_option :
    (OpamTypes.value -> 'a) ->
    (OpamTypes.value list -> 'b) -> OpamTypes.value -> 'a * 'b option
  val parse_single_option :
    (OpamTypes.value -> 'a) ->
    (OpamTypes.value -> 'b) -> OpamTypes.value -> 'a * 'b option
  val parse_string_option :
    (OpamTypes.value list -> 'a) -> OpamTypes.value -> string * 'a option
  val parse_string_list : OpamTypes.value -> string list
  val parse_single_string : OpamTypes.value list -> string
  val parse_pair :
    (OpamTypes.value -> 'a) ->
    (OpamTypes.value -> 'b) -> OpamTypes.value -> 'a * 'b
  val parse_or :
    (string * (OpamTypes.value -> 'a)) list -> OpamTypes.value -> 'a
  val make_bool : bool -> OpamTypes.value
  val make_int : int -> OpamTypes.value
  val make_ident : string -> OpamTypes.value
  val make_string : string -> OpamTypes.value
  val make_list : ('-> OpamTypes.value) -> 'a list -> OpamTypes.value
  val make_string_list : string list -> OpamTypes.value
  val make_group : ('-> OpamTypes.value) -> 'a list -> OpamTypes.value
  val make_option :
    ('-> OpamTypes.value) ->
    ('-> OpamTypes.value list) -> 'a * 'b option -> OpamTypes.value
  val make_pair :
    ('-> OpamTypes.value) ->
    ('-> OpamTypes.value) -> 'a * '-> OpamTypes.value
  val make_string_pair : string * string -> OpamTypes.value
  val make_section : OpamTypes.file_section -> OpamTypes.file_item
  val make_variable : string * OpamTypes.value -> OpamTypes.file_item
  val string_of_value : OpamTypes.value -> string
  val string_of_values : OpamTypes.value list -> string
  val string_of_file :
    simplify:bool ->
    indent:bool -> ?ignore:string list -> OpamTypes.file -> string
  val assoc :
    OpamTypes.file_item list -> string -> (OpamTypes.value -> 'a) -> 'a
  val assoc_option :
    OpamTypes.file_item list ->
    string -> (OpamTypes.value -> 'a) -> 'a option
  val assoc_default :
    '-> OpamTypes.file_item list -> string -> (OpamTypes.value -> 'a) -> 'a
  val assoc_list :
    OpamTypes.file_item list ->
    string -> (OpamTypes.value -> 'a list) -> 'a list
  val assoc_string_list : OpamTypes.file_item list -> string -> string list
  val get_section_by_kind :
    OpamTypes.file_item list -> string -> OpamTypes.file_section
  val get_all_section_by_kind :
    OpamTypes.file_item list -> string -> OpamTypes.file_section list
  val assoc_sections :
    OpamTypes.file_item list ->
    string -> (OpamTypes.file_section -> 'a) -> 'a list
  val parse_package_name : OpamTypes.value -> OpamTypes.name
  val parse_formula : OpamTypes.value -> OpamTypes.formula
  val make_formula : OpamTypes.formula -> OpamTypes.value
  val parse_ext_formula : OpamTypes.value -> OpamTypes.ext_formula
  val make_ext_formula : OpamTypes.ext_formula -> OpamTypes.value
  val parse_opt_formula : OpamTypes.value -> OpamTypes.ext_formula
  val make_opt_formula : OpamTypes.ext_formula -> OpamTypes.value
  val parse_compiler_constraint :
    OpamTypes.value -> OpamTypes.compiler_constraint
  val make_compiler_constraint :
    OpamTypes.compiler_constraint -> OpamTypes.value
  val parse_os_constraint :
    OpamTypes.value -> (bool * string) OpamTypes.generic_formula
  val make_os_constraint :
    (bool * string) OpamTypes.generic_formula -> OpamTypes.value
  val parse_env_variable : OpamTypes.value -> string * string * string
  val make_env_variable : string * string * string -> OpamTypes.value
  val parse_filter : OpamTypes.value list -> OpamTypes.filter
  val make_filter : OpamTypes.filter -> OpamTypes.value list
  val parse_command : OpamTypes.value -> OpamTypes.command
  val make_command : OpamTypes.command -> OpamTypes.value
  val parse_commands : OpamTypes.value -> OpamTypes.command list
  val make_commands : OpamTypes.command list -> OpamTypes.value
  val parse_messages :
    OpamTypes.value -> (string * OpamTypes.filter option) list
  val make_libraries :
    (string * OpamTypes.filter option) list -> OpamTypes.value
  val parse_libraries :
    OpamTypes.value -> (string * OpamTypes.filter option) list
  val make_flag : OpamTypes.package_flag -> OpamTypes.value
  val parse_flag : OpamTypes.value -> OpamTypes.package_flag option
  val parse_tags : OpamTypes.value -> OpamTypes.tags
  val make_tags : OpamTypes.tags -> OpamTypes.value
end