sig
  module Packages :
    sig
      val parse_multiarch :
        string * ('a * string) -> Pef.Packages_types.multiarch
      val parse_source : Common.Format822.field -> Pef.Packages_types.source
      val parse_binarylist :
        Common.Format822.field -> Pef.Packages_types.vpkglist
      class package :
        ?name:string * Pef.Packages_types.name option ->
        ?version:string * Pef.Packages_types.version option ->
        ?depends:string * Pef.Packages_types.vpkgformula option ->
        ?conflicts:string * Pef.Packages_types.vpkglist option ->
        ?provides:string * Pef.Packages_types.vpkglist option ->
        ?recommends:string * Pef.Packages_types.vpkgformula option ->
        ?architecture:string * Pef.Packages_types.architecture option ->
        ?multiarch:string * Pef.Packages_types.multiarch option ->
        ?source:string * Pef.Packages_types.source option ->
        ?essential:string * bool option ->
        ?extra_source_only:string * bool option ->
        ?priority:string * string option ->
        ?pre_depends:string * Pef.Packages_types.vpkgformula option ->
        ?suggests:string * Pef.Packages_types.vpkgformula option ->
        ?enhances:string * Pef.Packages_types.vpkgformula option ->
        ?breaks:string * Pef.Packages_types.vpkglist option ->
        ?replaces:string * Pef.Packages_types.vpkglist option ->
        ?extras:(string * Pef.Packages.parse_extras_f option) list *
                (string * string) list option ->
        Common.Format822.stanza ->
        object ('a)
          val architecture : string * Pef.Packages_types.architecture
          val breaks : string * Pef.Packages_types.vpkglist
          val conflicts : string * Pef.Packages_types.vpkglist
          val depends : string * Pef.Packages_types.vpkgformula
          val enhances : string * Pef.Packages_types.vpkgformula
          val essential : string * bool
          val extra_source_only : string * bool
          val installed : string * Pef.Packages_types.installed
          val multiarch : string * Pef.Packages_types.multiarch
          val name : string * Pef.Packages_types.name
          val pre_depends : string * Pef.Packages_types.vpkgformula
          val priority : string * string
          val provides : string * Pef.Packages_types.vpkglist
          val recommends : string * Pef.Packages_types.vpkgformula
          val replaces : string * Pef.Packages_types.vpkglist
          val source :
            string *
            (Pef.Packages_types.name * Pef.Packages_types.version option)
          val suggests : string * Pef.Packages_types.vpkgformula
          val version : string * Pef.Packages_types.version
          method add_extra : string -> string -> 'a
          method architecture : Pef.Packages_types.architecture
          method breaks : Pef.Packages_types.vpkglist
          method conflicts : Pef.Packages_types.vpkglist
          method depends : Pef.Packages_types.vpkgformula
          method enhances : Pef.Packages_types.vpkgformula
          method essential : bool
          method extra_source_only : bool
          method extras : (string * string) list
          method get_extra : string -> string
          method installed : Pef.Packages_types.installed
          method multiarch : Pef.Packages_types.multiarch
          method name : Pef.Packages_types.name
          method pp : Stdlib.out_channel -> unit
          method pre_depends : Pef.Packages_types.vpkgformula
          method priority : string
          method provides : Pef.Packages_types.vpkglist
          method recommends : Pef.Packages_types.vpkgformula
          method replaces : Pef.Packages_types.vpkglist
          method set_essential : bool -> 'a
          method set_extras : (string * string) list -> 'a
          method set_installed : Pef.Packages_types.installed -> 'a
          method set_multiarch : Pef.Packages_types.multiarch -> 'a
          method source :
            Pef.Packages_types.name * Pef.Packages_types.version option
          method suggests : Pef.Packages_types.vpkgformula
          method version : Pef.Packages_types.version
        end
      val parse_package_stanza :
        (Common.Format822.stanza -> bool) option ->
        Pef.Packages_types.architecture list ->
        (string * Pef.Packages.parse_extras_f option) list ->
        Common.Format822.stanza -> Debian.Packages.package option
      val parse_packages_in :
        ?filter:(Common.Format822.stanza -> bool) ->
        ?archs:Pef.Packages_types.architecture list ->
        ?extras:(string * Pef.Packages.parse_extras_f option) list ->
        string -> IO.input -> Debian.Packages.package list
      val merge :
        Debian.Packages.package list ->
        Debian.Packages.package list -> Debian.Packages.package list
      val is_installed : Debian.Packages.package -> bool
      val is_on_hold : Debian.Packages.package -> bool
      val default_extras : (string * 'a option) list
      val input_raw :
        ?filter:(Common.Format822.stanza -> bool) ->
        ?archs:Pef.Packages_types.architecture list ->
        ?extras:(string * Pef.Packages.parse_extras_f option) list ->
        string list -> Debian.Packages.package list
      val input_raw_in :
        ?filter:(Common.Format822.stanza -> bool) ->
        ?archs:Pef.Packages_types.architecture list ->
        ?extras:(string * Pef.Packages.parse_extras_f option) list ->
        IO.input -> Debian.Packages.package list
    end
  module Debcudf :
    sig
      type tables
      type extramap = (string * (string * Cudf_types.typedecl1)) list
      type options = {
        extras_opt : Debian.Debcudf.extramap;
        native : string option;
        foreign : string list;
        host : string option;
        ignore_essential : bool;
        builds_from : bool;
        drop_bd_indep : bool;
        drop_bd_arch : bool;
        profiles : string list;
      }
      val default_options : Debian.Debcudf.options
      val init_tables :
        ?options:Debian.Debcudf.options ->
        ?step:int ->
        ?versionlist:Pef.Packages_types.version list ->
        Debian.Packages.package list -> Debian.Debcudf.tables
      val clear : Debian.Debcudf.tables -> unit
      val get_cudf_version :
        Debian.Debcudf.tables ->
        Pef.Packages_types.name * Pef.Packages_types.version -> int
      val get_real_name : Cudf_types.pkgname -> string * string option
      val get_real_version :
        Debian.Debcudf.tables ->
        Cudf_types.pkgname * Cudf_types.version ->
        Pef.Packages_types.name * Pef.Packages_types.architecture option *
        Pef.Packages_types.version
      val get_essential :
        ?options:Debian.Debcudf.options ->
        Debian.Debcudf.tables ->
        (Cudf_types.vpkglist * Cudf.package list) list
      val tocudf :
        Debian.Debcudf.tables ->
        ?options:Debian.Debcudf.options ->
        ?inst:bool -> Debian.Packages.package -> Cudf.package
      val preamble : Cudf.preamble
      val load_universe :
        ?options:Debian.Debcudf.options ->
        Debian.Packages.package list -> Cudf.universe
      val load_list :
        ?options:Debian.Debcudf.options ->
        Debian.Packages.package list -> Cudf.package list
    end
  module Release :
    sig
      type release = {
        fname : string;
        origin : string;
        label : string;
        suite : string;
        version : string;
        codename : string;
        date : string;
        architecture : string;
        component : string;
        notauto : bool;
        autoup : bool;
        description : string;
        md5sums : (string * string * string) list;
        sha1 : (string * string * string) list;
        sha256 : (string * string * string) list;
      }
      val parse_release_in :
        string -> IO.input -> Debian.Release.release option
    end
  module Architecture :
    sig
      val src_matches_arch : string -> string -> bool
      val read_tupletable :
        ?ttfile:string option -> ?ctfile:string option -> unit -> unit
    end
  module Debutil :
    sig
      val get_source :
        Debian.Packages.package ->
        Pef.Packages_types.name * Pef.Packages_types.version
      val cluster :
        Debian.Packages.package list ->
        (Pef.Packages_types.name * Pef.Packages_types.version,
         (Pef.Packages_types.version * Pef.Packages_types.version *
          Debian.Packages.package list)
         list)
        ExtLib.Hashtbl.t
    end
end