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 string
  val bad_format : ('a, unit, string, 'b) Pervasives.format4 -> 'a
  val parse_bool : OpamTypes.value -> bool
  val parse_int : OpamTypes.value -> int
  val parse_ident : OpamTypes.value -> string
  val parse_symbol : 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 parse_sequence :
    (string * (OpamTypes.value -> 'a)) list -> OpamTypes.value -> 'a list
  val make_bool : bool -> OpamTypes.value
  val make_int : int -> OpamTypes.value
  val make_ident : string -> OpamTypes.value
  val make_symbol : 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 string_of_value : OpamTypes.value -> string
  val string_of_values : OpamTypes.value list -> string
  type indent_variable = string -> bool
  val string_of_item :
    simplify:bool ->
    ?indent_variable:OpamFormat.indent_variable ->
    OpamTypes.file_item -> string option
  val string_of_items :
    simplify:bool ->
    ?indent_variable:OpamFormat.indent_variable ->
    OpamTypes.file_item list -> string
  val string_of_file :
    simplify:bool ->
    ?indent_variable:OpamFormat.indent_variable -> 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_formula : OpamTypes.value -> OpamTypes.formula
  val make_formula : OpamTypes.formula -> OpamTypes.value
  val parse_opt_formula : OpamTypes.value -> OpamTypes.formula
  val make_opt_formula : OpamTypes.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 parse_tags : OpamTypes.value -> OpamTypes.tags
  val make_tags : OpamTypes.tags -> OpamTypes.value
end