sig
  module Packages :
    sig
      exception IgnorePackage of string
      val parse_name : Common.Format822.field -> Packages_types.name
      val parse_version : Common.Format822.field -> Packages_types.version
      val parse_vpkg : Common.Format822.field -> Packages_types.vpkg
      val parse_vpkglist : Common.Format822.field -> Packages_types.vpkglist
      val parse_vpkgformula :
        Common.Format822.field -> Packages_types.vpkgformula
      val parse_archlist :
        Common.Format822.field -> Packages_types.architecture list
      val parse_builddepslist :
        Common.Format822.field -> Packages_types.builddepslist
      val parse_builddepsformula :
        Common.Format822.field -> Packages_types.builddepsformula
      val parse_string : Common.Format822.field -> string
      val parse_string_opt : Common.Format822.field -> string option
      val parse_string_list :
        ?rex:Re.re -> Common.Format822.field -> string list
      val parse_int : Common.Format822.field -> int
      val parse_int_s : Common.Format822.field -> string
      val parse_bool : Common.Format822.field -> bool
      val parse_bool_s : Common.Format822.field -> string
      val lexbuf_wrapper :
        ((Lexing.lexbuf -> Packages_parser.token) -> Lexing.lexbuf -> 'a) ->
        Common.Format822.field -> 'a
      val assoc : string -> Common.Format822.stanza -> Common.Format822.value
      val blank_regexp : Re.re
      val comma_regexp : Re.re
      type parse_extras_f = string -> Common.Format822.stanza -> string
      val parse_e :
        (string * Pef.Packages.parse_extras_f option) list ->
        Common.Format822.stanza -> (string * string) list
      val parse_s :
        ?default:'->
        ?required:bool ->
        (Common.Format822.field -> 'a) ->
        string -> Common.Format822.stanza -> 'a
      val get_field_value :
        parse:(string -> Common.Format822.stanza -> 'a) ->
        par:Common.Format822.stanza ->
        field:string * 'a option -> string * 'a
      class package :
        ?name:string * Packages_types.name option ->
        ?version:string * Packages_types.version option ->
        ?installed:string * Packages_types.installed option ->
        ?depends:string * Packages_types.vpkgformula option ->
        ?conflicts:string * Packages_types.vpkglist option ->
        ?provides:string * Packages_types.vpkglist option ->
        ?recommends:string * Packages_types.vpkgformula option ->
        ?extras:(string * Pef.Packages.parse_extras_f option) list *
                (string * string) list option ->
        Common.Format822.stanza ->
        object ('a)
          val conflicts : string * Packages_types.vpkglist
          val depends : string * Packages_types.vpkgformula
          val installed : string * Packages_types.installed
          val name : string * Packages_types.name
          val provides : string * Packages_types.vpkglist
          val recommends : string * Packages_types.vpkgformula
          val version : string * Packages_types.version
          method add_extra : string -> string -> 'a
          method conflicts : Packages_types.vpkglist
          method depends : Packages_types.vpkgformula
          method extras : (string * string) list
          method get_extra : string -> string
          method installed : Packages_types.installed
          method name : Packages_types.name
          method pp : Pervasives.out_channel -> unit
          method provides : Packages_types.vpkglist
          method recommends : Packages_types.vpkgformula
          method set_extras : (string * string) list -> 'a
          method set_installed : Packages_types.installed -> 'a
          method version : Packages_types.version
        end
      val parse_package_stanza :
        filter:(Common.Format822.stanza -> bool) option ->
        extras:(string * (string -> Common.Format822.stanza -> string) option)
               list ->
        Common.Format822.stanza -> Pef.Packages.package option
      val input_raw :
        ?extras:(string *
                 (string -> Common.Format822.stanza -> string) option)
                list ->
        string list -> Pef.Packages.package list
      val parse_packages_in :
        ?filter:(Common.Format822.stanza -> bool) ->
        ?extras:(string *
                 (string -> Common.Format822.stanza -> string) option)
                list ->
        string -> IO.input -> Pef.Packages.package list
      val input_raw_in :
        ?extras:(string *
                 (string -> Common.Format822.stanza -> string) option)
                list ->
        IO.input -> Pef.Packages.package list
      val packages_parser :
        string ->
        (Common.Format822.stanza -> 'package option) ->
        Common.Format822.f822_parser -> 'package list
    end
  module Printer :
    sig
      val string_of_vpkg : Packages_types.vpkg -> string
      val string_of_vpkglist : Packages_types.vpkglist -> string
      val string_of_vpkgformula : Packages_types.vpkgformula -> string
      val string_of_builddep : Packages_types.builddep -> string
      val string_of_builddeplist : Packages_types.builddepslist -> string
      val string_of_builddepformula :
        Packages_types.builddepsformula -> string
      val string_of_vpkgreq : Packages_types.vpkgreq -> string
      val pp_vpkg : Pervasives.out_channel -> Packages_types.vpkg -> unit
      val pp_vpkglist :
        Pervasives.out_channel -> Packages_types.vpkglist -> unit
      val pp_vpkgformula :
        Pervasives.out_channel -> Packages_types.vpkgformula -> unit
      val pp_builddep :
        Pervasives.out_channel -> Packages_types.builddep -> unit
      val pp_builddepformula :
        Pervasives.out_channel -> Packages_types.builddepsformula -> unit
      val pp_builddeplist :
        Pervasives.out_channel -> Packages_types.builddepslist -> unit
      val pp_string_list :
        ?sep:string -> Pervasives.out_channel -> string * string list -> unit
      val pp_function :
        Pervasives.out_channel ->
        tostring:('-> string) -> string * '-> unit
      val pp_string_wl : Pervasives.out_channel -> string * string -> unit
      val pp_bool_wl : Pervasives.out_channel -> string * bool -> unit
      val pp_yes_wl : Pervasives.out_channel -> string * bool -> unit
      val pp_vpkglist_wl :
        Pervasives.out_channel -> string * Packages_types.vpkglist -> unit
      val pp_vpkgformula_wl :
        Pervasives.out_channel -> string * Packages_types.vpkgformula -> unit
      val pp_builddepformula_wl :
        Pervasives.out_channel ->
        string * Packages_types.builddepsformula -> unit
      val pp_builddeplist_wl :
        Pervasives.out_channel ->
        string * Packages_types.builddepslist -> unit
      val pp_function_wl :
        Pervasives.out_channel ->
        tostring:('-> string) -> string * '-> unit
      val pp_string_list_wl :
        ?sep:string -> Pervasives.out_channel -> string * string list -> unit
    end
end