sig
  module Packages :
    sig
      type request = {
        install : Pef.Packages_types.vpkg list;
        remove : Pef.Packages_types.vpkg list;
        upgrade : Pef.Packages_types.vpkg list;
        dist_upgrade : bool;
        switch : string;
        switches : string list;
        profiles : string list;
        preferences : string;
      }
      type options =
          Pef.Packages_types.architecture *
          Pef.Packages_types.architecture list *
          Pef.Packages_types.buildprofile list
      val default_request : Opam.Packages.request
      val parse_request_stanza :
        Common.Format822.stanza -> Opam.Packages.request
      val vpkglist_filter :
        Opam.Packages.options ->
        Pef.Packages_types.builddepslist -> Pef.Packages_types.vpkglist
      val vpkgformula_filter :
        Opam.Packages.options ->
        Pef.Packages_types.builddepsformula -> Pef.Packages_types.vpkgformula
      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 ->
        ?depopts:string * Pef.Packages_types.vpkgformula option ->
        ?switch:string * string list option ->
        ?installedlist:string * string list option ->
        ?pinnedlist:string * string list option ->
        ?baselist:string * string list option ->
        ?extras:(string * Pef.Packages.parse_extras_f option) list *
                (string * string) list option ->
        Common.Format822.stanza ->
        object ('a)
          method add_extra : string -> string -> 'a
          method baselist : string list
          method conflicts : Pef.Packages_types.vpkglist
          method depends : Pef.Packages_types.vpkgformula
          method depopts : Pef.Packages_types.vpkgformula
          method extras : (string * string) list
          method get_extra : string -> string
          method installed : Pef.Packages_types.installed
          method installedlist : string list
          method name : Pef.Packages_types.name
          method pinnedlist : string list
          method pp : Pervasives.out_channel -> unit
          method provides : Pef.Packages_types.vpkglist
          method recommends : Pef.Packages_types.vpkgformula
          method set_extras : (string * string) list -> 'a
          method set_installed : Pef.Packages_types.installed -> 'a
          method switch : string list
          method version : Pef.Packages_types.version
        end
      val parse_package_stanza :
        Opam.Packages.options ->
        ?extras:(string * Pef.Packages.parse_extras_f option) list ->
        Common.Format822.stanza -> Opam.Packages.package option
      val packages_parser :
        ?request:bool ->
        Opam.Packages.request * Opam.Packages.package list ->
        Common.Format822.f822_parser ->
        Opam.Packages.request * Opam.Packages.package list
      val input_raw_in :
        IO.input -> Opam.Packages.request * Opam.Packages.package list
      val input_raw :
        string -> Opam.Packages.request * Opam.Packages.package list
    end
end