← Back to team overview

deja-dup-team team mailing list archive

[Merge] lp:~mterry/deja-dup/no-python2 into lp:deja-dup

 

Michael Terry has proposed merging lp:~mterry/deja-dup/no-python2 into lp:deja-dup.

Requested reviews:
  Déjà Dup Developers (deja-dup-hackers)

For more details, see:
https://code.launchpad.net/~mterry/deja-dup/no-python2/+merge/276875

Use packagekit to install duplicity on the fly if needed, removing any dependency on python2 by deja-dup directly.
-- 
Your team Déjà Dup Developers is requested to review the proposed merge of lp:~mterry/deja-dup/no-python2 into lp:deja-dup.
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt	2015-11-04 21:35:23 +0000
+++ CMakeLists.txt	2015-11-06 14:27:23 +0000
@@ -35,8 +35,12 @@
 deja_check_modules(GTK REQUIRED gtk+-3.0>=3.6)
 deja_check_modules(NOTIFY REQUIRED libnotify>=0.7)
 deja_check_modules(PEAS REQUIRED libpeas-1.0)
+deja_check_modules(PK REQUIRED packagekit-glib2)
 deja_check_modules(SECRET REQUIRED libsecret-1)
 
+# This is obnoxious.
+set(PK_CFLAGS "${PK_CFLAGS} -DI_KNOW_THE_PACKAGEKIT_GLIB2_API_IS_SUBJECT_TO_CHANGE")
+
 deja_enable_option(NAUTILUS libnautilus-extension)
 if(ENABLE_NAUTILUS)
   execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=extensiondir libnautilus-extension

=== modified file 'debian/control'
--- debian/control	2015-11-04 21:35:23 +0000
+++ debian/control	2015-11-06 14:27:23 +0000
@@ -29,9 +29,9 @@
 Pre-Depends: ${misc:Pre-Depends},
 Depends: ${misc:Depends},
          ${shlibs:Depends},
-         duplicity (>= 0.6.23),
          gnome-icon-theme-symbolic,
 Recommends: deja-dup-backend-gvfs,
+            duplicity (>= 0.6.23),
             policykit-1,
 Suggests: deja-dup-backend-cloudfiles,
           deja-dup-backend-s3,

=== modified file 'deja-dup/preferences/CMakeLists.txt'
--- deja-dup/preferences/CMakeLists.txt	2015-11-04 21:35:23 +0000
+++ deja-dup/preferences/CMakeLists.txt	2015-11-06 14:27:23 +0000
@@ -27,24 +27,25 @@
                 CUSTOM_VAPIS ${CMAKE_BINARY_DIR}/libdeja/deja.vapi
                              ${CMAKE_BINARY_DIR}/deja-dup/widgets/widgets.vapi
                              ${CMAKE_SOURCE_DIR}/vapi/config.vapi
+                             ${CMAKE_SOURCE_DIR}/vapi/packagekit-glib2.vapi
                 OPTIONS ${COMMON_VFLAGS})
 add_executable(deja-dup-preferences ${VALA_C})
-target_link_libraries(deja-dup-preferences deja widgets ${GTK_LDFLAGS} ${NOTIFY_LDFLAGS} ${PEAS_LDFLAGS} ${SECRET_LDFLAGS})
+target_link_libraries(deja-dup-preferences deja widgets ${GTK_LDFLAGS} ${NOTIFY_LDFLAGS} ${PEAS_LDFLAGS} ${PK_LDFLAGS} ${SECRET_LDFLAGS})
 set_target_properties(deja-dup-preferences PROPERTIES
                       INCLUDE_DIRECTORIES "${CMAKE_BINARY_DIR}/libdeja;${CMAKE_BINARY_DIR}/deja-dup/widgets"
-                      COMPILE_FLAGS "${GTK_CFLAGS} ${PEAS_CFLAGS} ${SECRET_CFLAGS} ${COMMON_CFLAGS}")
+                      COMPILE_FLAGS "${GTK_CFLAGS} ${PEAS_CFLAGS} ${PK_CFLAGS} ${SECRET_CFLAGS} ${COMMON_CFLAGS}")
 install(TARGETS deja-dup-preferences DESTINATION bin)
 
 deja_merge_po(desktop deja-dup-preferences.desktop "${CMAKE_INSTALL_FULL_DATADIR}/applications")
 
 if(ENABLE_UNITY_CCPANEL)
 add_library(deja-dup-unity-ccpanel MODULE Preferences.c PreferencesPanel.c)
-target_link_libraries(deja-dup-unity-ccpanel deja widgets ${UNITY_CCPANEL_LDFLAGS} ${GTK_LDFLAGS} ${PEAS_LDFLAGS} ${SECRET_LDFLAGS})
+target_link_libraries(deja-dup-unity-ccpanel deja widgets ${UNITY_CCPANEL_LDFLAGS} ${GTK_LDFLAGS} ${PEAS_LDFLAGS} ${PK_LDFLAGS} ${SECRET_LDFLAGS})
 set_target_properties(deja-dup-unity-ccpanel PROPERTIES
                       OUTPUT_NAME deja-dup
                       LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/unity-ccpanel"
                       INCLUDE_DIRECTORIES "${CMAKE_BINARY_DIR}/libdeja;${CMAKE_BINARY_DIR}/deja-dup/widgets"
-                      COMPILE_FLAGS "-DUSE_UNITY ${UNITY_CCPANEL_CFLAGS} ${GTK_CFLAGS} ${PEAS_CFLAGS} ${SECRET_CFLAGS} ${COMMON_CFLAGS}")
+                      COMPILE_FLAGS "-DUSE_UNITY ${UNITY_CCPANEL_CFLAGS} ${GTK_CFLAGS} ${PEAS_CFLAGS} ${PK_CFLAGS} ${SECRET_CFLAGS} ${COMMON_CFLAGS}")
 install(TARGETS deja-dup-unity-ccpanel DESTINATION "${UNITY_CCPANEL_EXTENSIONDIR}")
 
 deja_merge_po(desktop unity-deja-dup-panel.desktop "${CMAKE_INSTALL_FULL_DATADIR}/applications")

=== modified file 'deja-dup/preferences/Preferences.vala'
--- deja-dup/preferences/Preferences.vala	2013-10-27 16:41:23 +0000
+++ deja-dup/preferences/Preferences.vala	2015-11-06 14:27:23 +0000
@@ -33,17 +33,26 @@
 
 public class Preferences : Gtk.Grid
 {
-  public bool show_auto_switch {get; construct;}
+  public DejaDup.PreferencesPeriodicSwitch auto_switch {get; set; default = null;}
+  public bool duplicity_installed {get; private set; default = false;}
 
-  Gtk.Widget backup_button;
-  Gtk.Widget restore_button;
+  DejaDup.ConfigLabelDescription backup_desc;
+  Gtk.Button backup_button;
+  Gtk.ProgressBar backup_progress;
+  DejaDup.ConfigLabelDescription restore_desc;
+  Gtk.Button restore_button;
+  Gtk.ProgressBar restore_progress;
   uint bus_watch_id = 0;
   static const int PAGE_HMARGIN = 24;
   static const int PAGE_VMARGIN = 12;
 
-  public Preferences(bool show_auto_switch)
+  public Preferences(DejaDup.PreferencesPeriodicSwitch? auto_switch)
   {
-    Object(show_auto_switch: show_auto_switch);
+    Object(auto_switch: auto_switch);
+
+    // Set initial switch sensitivity, but for some odd reason we can't set
+    // this earlier.  Even if at the end of the constructor, it gets reset...
+    auto_switch.sensitive = duplicity_installed;
   }
 
   ~Preferences() {
@@ -53,6 +62,64 @@
     }
   }
 
+  async void install_duplicity()
+  {
+    backup_button.sensitive = false;
+    restore_button.sensitive = false;
+
+    try {
+      var task = new Pk.Task();
+      var results = yield task.resolve_async(Pk.Filter.NOT_INSTALLED, {"duplicity"}, null, () => {});
+      if (results != null && results.get_error_code () == null) {
+
+        // Convert from List to array (I don't know why the API couldn't be friendlier...)
+        var package_array = results.get_package_array();
+        var package_ids = new string[package_array.length + 1];
+        package_ids[package_array.length] = null;
+        for (var i = 0; i < package_array.length; i++) {
+            package_ids[i] = package_array.data[i].get_id();
+        }
+
+        yield task.install_packages_async(package_ids, null, (p, t) => {
+          backup_progress.fraction = p.percentage / 100.0;
+          restore_progress.fraction = p.percentage / 100.0;
+        });
+
+        duplicity_installed = Environment.find_program_in_path("duplicity") != null;
+        if (duplicity_installed) {
+          backup_desc.everything_installed = true;
+          backup_button.label = _("_Back Up Now…");
+          restore_desc.everything_installed = true;
+          restore_button.label = _("_Restore…");
+          auto_switch.sensitive = true;
+        }
+      }
+    }
+    catch (Error e) {
+      // We don't want to show authorization errors -- either the user clicked
+      // cancel or already entered password several times.  Don't need to warn them.
+      // Oddly enough, I couldn't get error matching to work for this.  Maybe the
+      // policykit bindings I copied are incomplete.
+      if (e.message.contains("org.freedesktop.PolicyKit.Error.NotAuthorized")) {
+        warning("%s\n", e.message);
+      } else {
+        Gtk.MessageDialog dlg = new Gtk.MessageDialog (get_toplevel() as Gtk.Window,
+            Gtk.DialogFlags.DESTROY_WITH_PARENT | Gtk.DialogFlags.MODAL,
+            Gtk.MessageType.ERROR,
+            Gtk.ButtonsType.OK,
+            "%s", _("Could not install"));
+        dlg.format_secondary_text("%s", e.message);
+        dlg.run();
+        destroy_widget(dlg);
+      }
+    }
+
+    backup_progress.visible = false;
+    restore_progress.visible = false;
+    backup_button.sensitive = true;
+    restore_button.sensitive = true;
+  }
+
   Gtk.Widget make_settings_page()
   {
     var settings_page = new Gtk.Grid();
@@ -117,24 +184,38 @@
     w = new DejaDup.ConfigLabelBackupDate(DejaDup.ConfigLabelBackupDate.Kind.LAST);
     w.halign = Gtk.Align.START;
     w.valign = Gtk.Align.START;
-    table.attach(w, 1, row, 1, 1);
+    table.attach(w, 1, row, 2, 1);
     ++row;
 
-    w = new DejaDup.ConfigLabelDescription(DejaDup.ConfigLabelDescription.Kind.RESTORE);
+    w = new DejaDup.ConfigLabelDescription(DejaDup.ConfigLabelDescription.Kind.RESTORE, duplicity_installed);
     w.halign = Gtk.Align.START;
     w.valign = Gtk.Align.START;
-    table.attach(w, 1, row, 1, 1);
+    restore_desc = w as DejaDup.ConfigLabelDescription;
+    table.attach(w, 1, row, 2, 1);
     ++row;
 
-    w = new Gtk.Button.with_mnemonic(_("_Restore…"));
+    w = new Gtk.Button.with_mnemonic(duplicity_installed ? _("_Restore…") : _("_Install…"));
     w.margin_top = 6;
     w.halign = Gtk.Align.START;
+    w.expand = false;
     (w as Gtk.Button).clicked.connect((b) => {
-      run_deja_dup("--restore", b.get_display().get_app_launch_context());
+      if (duplicity_installed) {
+        run_deja_dup("--restore", b.get_display().get_app_launch_context());
+      } else {
+        restore_progress.visible = true;
+        install_duplicity.begin();
+      }
     });
-    restore_button = w;
+    restore_button = w as Gtk.Button;
     label_sizes.add_widget(w);
     table.attach(w, 1, row, 1, 1);
+    w = new Gtk.ProgressBar();
+    w.halign = Gtk.Align.START;
+    w.valign = Gtk.Align.CENTER;
+    w.hexpand = true;
+    w.no_show_all = true;
+    restore_progress = w as Gtk.ProgressBar;
+    table.attach(w, 2, row, 1, 1);
     ++row;
 
     w = new Gtk.Grid(); // spacer
@@ -149,24 +230,38 @@
     w = new DejaDup.ConfigLabelBackupDate(DejaDup.ConfigLabelBackupDate.Kind.NEXT);
     w.halign = Gtk.Align.START;
     w.valign = Gtk.Align.START;
-    table.attach(w, 1, row, 1, 1);
+    table.attach(w, 1, row, 2, 1);
     ++row;
 
-    w = new DejaDup.ConfigLabelDescription(DejaDup.ConfigLabelDescription.Kind.BACKUP);
+    w = new DejaDup.ConfigLabelDescription(DejaDup.ConfigLabelDescription.Kind.BACKUP, duplicity_installed);
     w.halign = Gtk.Align.START;
     w.valign = Gtk.Align.START;
-    table.attach(w, 1, row, 1, 1);
+    backup_desc = w as DejaDup.ConfigLabelDescription;
+    table.attach(w, 1, row, 2, 1);
     ++row;
 
-    w = new Gtk.Button.with_mnemonic(_("_Back Up Now…"));
+    w = new Gtk.Button.with_mnemonic(duplicity_installed ? _("_Back Up Now…") : _("Install…"));
     w.margin_top = 6;
     w.halign = Gtk.Align.START;
+    w.expand = false;
     (w as Gtk.Button).clicked.connect((b) => {
-      run_deja_dup("--backup", b.get_display().get_app_launch_context());
+      if (duplicity_installed) {
+        run_deja_dup("--backup", b.get_display().get_app_launch_context());
+      } else {
+        backup_progress.visible = true;
+        install_duplicity.begin();
+      }
     });
-    backup_button = w;
+    backup_button = w as Gtk.Button;
     label_sizes.add_widget(w);
     table.attach(w, 1, row, 1, 1);
+    w = new Gtk.ProgressBar();
+    w.halign = Gtk.Align.START;
+    w.valign = Gtk.Align.CENTER;
+    w.hexpand = true;
+    w.no_show_all = true;
+    backup_progress = w as Gtk.ProgressBar;
+    table.attach(w, 2, row, 1, 1);
     ++row;
 
     bus_watch_id = Bus.watch_name(BusType.SESSION, "org.gnome.DejaDup.Operation",
@@ -247,13 +342,12 @@
     table.halign = Gtk.Align.CENTER;
     row = 0;
 
-    if (show_auto_switch) {
+    if (auto_switch == null) {
       var align = new Gtk.Alignment(0.0f, 0.5f, 0.0f, 0.0f);
-      var @switch = new Gtk.Switch();
-      settings.bind(DejaDup.PERIODIC_KEY, @switch, "active", SettingsBindFlags.DEFAULT);
-      align.add(@switch);
+      auto_switch = new DejaDup.PreferencesPeriodicSwitch();
+      align.add(auto_switch);
       label = new Gtk.Label.with_mnemonic(_("_Automatic backup"));
-      label.mnemonic_widget = @switch;
+      label.mnemonic_widget = auto_switch;
       label.xalign = 1.0f;
       table.attach(label, 0, row, 1, 1);
       table.attach(align, 1, row, 1, 1);
@@ -318,6 +412,7 @@
   }
 
   construct {
+    duplicity_installed = Environment.find_program_in_path("duplicity") != null;
     add(make_settings_page());
     set_size_request(-1, 400);
   }

=== modified file 'deja-dup/preferences/PreferencesPanel.c'
--- deja-dup/preferences/PreferencesPanel.c	2015-11-04 21:35:23 +0000
+++ deja-dup/preferences/PreferencesPanel.c	2015-11-06 14:27:23 +0000
@@ -25,16 +25,16 @@
 #include <libunity-control-center/cc-panel.h>
 #include "widgets.h"
 
-extern void* deja_dup_preferences_new (gboolean show_auto_switch);
-
 #define DEJA_DUP_TYPE_PREFERENCES_PANEL deja_dup_preferences_panel_get_type()
 
 typedef struct _DejaDupPreferencesPanel DejaDupPreferencesPanel;
 typedef struct _DejaDupPreferencesPanelClass DejaDupPreferencesPanelClass;
+typedef struct _DejaDupPreferencesPeriodicSwitch DejaDupPreferencesPeriodicSwitch;
 
 struct _DejaDupPreferencesPanel
 {
   CcPanel parent;
+  DejaDupPreferencesPeriodicSwitch *auto_switch;
 };
 
 struct _DejaDupPreferencesPanelClass
@@ -44,6 +44,8 @@
 
 G_DEFINE_DYNAMIC_TYPE (DejaDupPreferencesPanel, deja_dup_preferences_panel, CC_TYPE_PANEL)
 
+extern void* deja_dup_preferences_new (DejaDupPreferencesPeriodicSwitch *auto_switch);
+
 static void
 deja_dup_preferences_panel_class_finalize (DejaDupPreferencesPanelClass *klass)
 {
@@ -53,13 +55,11 @@
 deja_dup_preferences_panel_constructed (GObject *object)
 {
   CcPanel *panel = CC_PANEL (object);
+  DejaDupPreferencesPanel *self = (DejaDupPreferencesPanel*)object;
 
   G_OBJECT_CLASS (deja_dup_preferences_panel_parent_class)->constructed (object);
 
-  GtkWidget *switcher = GTK_WIDGET (deja_dup_preferences_periodic_switch_new ());
-  gtk_widget_set_valign (switcher, GTK_ALIGN_CENTER);
-  gtk_widget_show_all (switcher);
-  cc_shell_embed_widget_in_header (cc_panel_get_shell (panel), switcher);
+  cc_shell_embed_widget_in_header (cc_panel_get_shell (panel), GTK_WIDGET (self->auto_switch));
 }
 
 static const char *
@@ -81,7 +81,11 @@
 static void
 deja_dup_preferences_panel_init (DejaDupPreferencesPanel *self)
 {
-  GtkWidget *widget = GTK_WIDGET (deja_dup_preferences_new (FALSE));
+  self->auto_switch = deja_dup_preferences_periodic_switch_new ();
+  gtk_widget_set_valign (GTK_WIDGET (self->auto_switch), GTK_ALIGN_CENTER);
+  gtk_widget_show_all (GTK_WIDGET (self->auto_switch));
+
+  GtkWidget *widget = GTK_WIDGET (deja_dup_preferences_new (self->auto_switch));
   gtk_container_set_border_width (GTK_CONTAINER (widget), 6); // g-c-c adds 6
   gtk_widget_show_all (widget);
   gtk_container_add (GTK_CONTAINER (self), widget);

=== modified file 'deja-dup/preferences/preferences-main.vala'
--- deja-dup/preferences/preferences-main.vala	2013-10-16 05:34:37 +0000
+++ deja-dup/preferences/preferences-main.vala	2015-11-06 14:27:23 +0000
@@ -36,26 +36,24 @@
       list.data.present_with_time(Gtk.get_current_event_time());
     else {
       // We're first instance.  Yay!
-      bool show_auto_switch = true;
 
       var dlg = new Gtk.ApplicationWindow(this);
       // Translators: "Backups" is a noun
       dlg.title = _("Backups");
       dlg.resizable = false;
 
+      DejaDup.PreferencesPeriodicSwitch auto_switch = null;
 #if HAVE_GTK_3_10
-      show_auto_switch = false;
-
       var header = new Gtk.HeaderBar();
       header.show_close_button = true;
       dlg.set_titlebar(header);
 
-      var switcher = new DejaDup.PreferencesPeriodicSwitch();
-      switcher.valign = Gtk.Align.CENTER;
-      header.pack_end(switcher);
+      auto_switch = new DejaDup.PreferencesPeriodicSwitch();
+      auto_switch.valign = Gtk.Align.CENTER;
+      header.pack_end(auto_switch);
 #endif
 
-      var prefs = new DejaDup.Preferences(show_auto_switch);
+      var prefs = new DejaDup.Preferences(auto_switch);
       prefs.border_width = 12;
       dlg.add(prefs);
       dlg.set_application(this);

=== modified file 'deja-dup/widgets/ConfigLabelDescription.vala'
--- deja-dup/widgets/ConfigLabelDescription.vala	2014-01-10 23:06:26 +0000
+++ deja-dup/widgets/ConfigLabelDescription.vala	2015-11-06 14:27:23 +0000
@@ -25,10 +25,11 @@
 {
   public enum Kind {BACKUP, RESTORE}
   public Kind kind {get; construct;}
+  public bool everything_installed {get; set;}
 
-  public ConfigLabelDescription(Kind kind)
+  public ConfigLabelDescription(Kind kind, bool everything_installed)
   {
-    Object(kind: kind);
+    Object(kind: kind, everything_installed: everything_installed);
   }
 
   construct {
@@ -37,6 +38,9 @@
       watch_key(DejaDup.PERIODIC_KEY);
       watch_key(DejaDup.PERIODIC_PERIOD_KEY);
     }
+    notify["everything-installed"].connect((s, p) => {
+      set_from_config.begin();
+    });
   }
 
   protected override void fill_box()
@@ -51,6 +55,12 @@
 
   void set_from_config_restore()
   {
+    if (!everything_installed) {
+      var button_name = "<b>%s</b>".printf(_("Install…"));
+      label.label = _("You can restore existing backups after you first install some necessary software by clicking the %s button.").printf(button_name);
+      return;
+    }
+
     var val = DejaDup.last_run_date(DejaDup.TimestampType.BACKUP);
 
     // This here encodes a lot of outside GUI information in this widget,
@@ -67,6 +77,12 @@
 
   void set_from_config_backup()
   {
+    if (!everything_installed) {
+      var button_name = "<b>%s</b>".printf(_("Install…"));
+      label.label = _("You can create a backup after you first install some necessary software by clicking the %s button.").printf(button_name);
+      return;
+    }
+
     var next = DejaDup.next_run_date();
     if (next == null) {
       var button_name = "<b>%s</b>".printf(_("Back Up Now…"));

=== modified file 'libdeja/AsyncCommand.vala'
--- libdeja/AsyncCommand.vala	2011-06-28 15:48:17 +0000
+++ libdeja/AsyncCommand.vala	2015-11-06 14:27:23 +0000
@@ -53,12 +53,15 @@
                               SpawnFlags.STDERR_TO_DEV_NULL |
                               SpawnFlags.DO_NOT_REAP_CHILD |
                               SpawnFlags.SEARCH_PATH,
-                              null, out pid))
+                              null, out pid)) {
         done(false);
+        return;
+      }
     }
     catch (Error e) {
       warning("%s\n", e.message);
       done(false);
+      return;
     }
 
     watch = ChildWatch.add(pid, handle_done);

=== added file 'vapi/packagekit-glib2.vapi'
--- vapi/packagekit-glib2.vapi	1970-01-01 00:00:00 +0000
+++ vapi/packagekit-glib2.vapi	2015-11-06 14:27:23 +0000
@@ -0,0 +1,1371 @@
+/* packagekit-glib2.vapi generated by vapigen-0.28, do not modify. */
+
+[CCode (cprefix = "Pk", gir_namespace = "PackageKitGlib", gir_version = "1.0", lower_case_cprefix = "pk_")]
+namespace Pk {
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_category_get_type ()")]
+	public class Category : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public Category ();
+		public unowned string get_icon ();
+		public unowned string get_id ();
+		public unowned string get_name ();
+		public unowned string get_parent_id ();
+		public unowned string get_summary ();
+		public void set_icon (string icon);
+		public void set_id (string cat_id);
+		public void set_name (string name);
+		public void set_parent_id (string parent_id);
+		public void set_summary (string summary);
+		[NoAccessorMethod]
+		public string cat_id { owned get; set; }
+		public string icon { get; set; }
+		public string name { get; set; }
+		public string parent_id { get; set; }
+		public string summary { get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_client_get_type ()")]
+	public class Client : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Client ();
+		public Pk.Results accept_eula (string eula_id, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results accept_eula_async (string eula_id, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results adopt (string transaction_id, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results adopt_async (string transaction_id, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[NoWrapper]
+		public virtual void changed ();
+		public Pk.Results depends_on (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results depends_on_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results download_packages ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results download_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public bool get_background ();
+		public uint get_cache_age ();
+		public Pk.Results get_categories (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_categories_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_details ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_details_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_details_local ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_details_local_async ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_distro_upgrades (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_distro_upgrades_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_files ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_files_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_files_local ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_files_local_async ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public bool get_idle ();
+		public bool get_interactive ();
+		public unowned string get_locale ();
+		public Pk.Results get_old_transactions (uint number, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_old_transactions_async (uint number, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_packages (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_packages_async (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Progress get_progress (string transaction_id, GLib.Cancellable? cancellable = null) throws GLib.Error;
+		public async Pk.Progress get_progress_async (string transaction_id, GLib.Cancellable? cancellable) throws GLib.Error;
+		public Pk.Results get_repo_list (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_repo_list_async (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_update_detail ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_update_detail_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_updates (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results get_updates_async (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results install_files (Pk.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results install_files_async (Pk.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results install_packages (Pk.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results install_packages_async (Pk.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results install_signature (Pk.SigType type, string key_id, string package_id, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results install_signature_async (Pk.SigType type, string key_id, string package_id, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results refresh_cache (bool force, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results refresh_cache_async (bool force, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results remove_packages (Pk.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool allow_deps, bool autoremove, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results remove_packages_async (Pk.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool allow_deps, bool autoremove, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results repair_system (Pk.Bitfield transaction_flags, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results repair_system_async (Pk.Bitfield transaction_flags, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results repo_enable (string repo_id, bool enabled, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results repo_enable_async (string repo_id, bool enabled, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results repo_remove (Pk.Bitfield transaction_flags, string repo_id, bool autoremove, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results repo_remove_async (Pk.Bitfield transaction_flags, string repo_id, bool autoremove, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results repo_set_data (string repo_id, string parameter, string value, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results repo_set_data_async (string repo_id, string parameter, string value, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results required_by (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results required_by_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results resolve (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] packages, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results resolve_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] packages, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results search_details (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results search_details_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results search_files (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results search_files_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results search_groups (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results search_groups_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results search_names (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results search_names_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public void set_background (bool background);
+		public void set_cache_age (uint cache_age);
+		public void set_interactive (bool interactive);
+		public void set_locale (string locale);
+		public static void test (void* user_data);
+		public Pk.Results update_packages (Pk.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results update_packages_async (Pk.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results what_provides (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_client_generic_finish")]
+		public async Pk.Results what_provides_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public bool background { get; set; }
+		public uint cache_age { get; set; }
+		public bool idle { get; }
+		public bool interactive { get; set; }
+		public string locale { get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_client_helper_get_type ()")]
+	public class ClientHelper : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public ClientHelper ();
+		public bool start (string socket_filename, string argv, string envp) throws GLib.Error;
+		public bool stop () throws GLib.Error;
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_control_get_type ()")]
+	public class Control : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Control ();
+		public async Pk.Authorize can_authorize_async (string action_id, GLib.Cancellable? cancellable) throws GLib.Error;
+		[NoWrapper]
+		public virtual void connection_changed (bool connected);
+		public async string get_daemon_state_async (GLib.Cancellable? cancellable) throws GLib.Error;
+		public bool get_properties (GLib.Cancellable? cancellable = null) throws GLib.Error;
+		public async bool get_properties_async (GLib.Cancellable? cancellable) throws GLib.Error;
+		public async string get_tid_async (GLib.Cancellable? cancellable) throws GLib.Error;
+		public async uint get_time_since_action_async (Pk.Role role, GLib.Cancellable? cancellable) throws GLib.Error;
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] get_transaction_list (GLib.Cancellable? cancellable = null) throws GLib.Error;
+		[CCode (array_length = false, array_null_terminated = true)]
+		public async string[] get_transaction_list_async (GLib.Cancellable? cancellable) throws GLib.Error;
+		[NoWrapper]
+		public virtual void network_state_changed ();
+		public bool set_proxy (string proxy_http, string proxy_ftp, GLib.Cancellable? cancellable = null) throws GLib.Error;
+		public bool set_proxy2 (string proxy_http, string proxy_https, string proxy_ftp, string proxy_socks, string no_proxy, string pac, GLib.Cancellable? cancellable = null) throws GLib.Error;
+		public async void set_proxy2_async (string proxy_http, string proxy_https, string proxy_ftp, string proxy_socks, string no_proxy, string pac, GLib.Cancellable? cancellable);
+		public async bool set_proxy_async (string proxy_http, string proxy_ftp, GLib.Cancellable? cancellable) throws GLib.Error;
+		public bool suggest_daemon_quit (GLib.Cancellable? cancellable = null) throws GLib.Error;
+		public async bool suggest_daemon_quit_async (GLib.Cancellable? cancellable) throws GLib.Error;
+		public static void test (void* user_data);
+		[NoAccessorMethod]
+		public string backend_author { owned get; set; }
+		[NoAccessorMethod]
+		public string backend_description { owned get; set; }
+		[NoAccessorMethod]
+		public string backend_name { owned get; set; }
+		[NoAccessorMethod]
+		public bool connected { get; set; }
+		[NoAccessorMethod]
+		public string distro_id { owned get; set; }
+		[NoAccessorMethod]
+		public uint64 filters { get; set; }
+		[NoAccessorMethod]
+		public uint64 groups { get; set; }
+		[NoAccessorMethod]
+		public virtual bool locked { get; set; }
+		[CCode (array_length = false, array_null_terminated = true)]
+		[NoAccessorMethod]
+		public string[] mime_types { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.Network network_state { get; set; }
+		[NoAccessorMethod]
+		public uint64 provides { get; set; }
+		[NoAccessorMethod]
+		public uint64 roles { get; set; }
+		[NoAccessorMethod]
+		public uint version_major { get; }
+		[NoAccessorMethod]
+		public uint version_micro { get; }
+		[NoAccessorMethod]
+		public uint version_minor { get; }
+		public virtual signal void repo_list_changed ();
+		public virtual signal void restart_schedule ();
+		public virtual signal void transaction_list_changed ([CCode (array_length = false, array_null_terminated = true)] string[] transaction_ids);
+		public virtual signal void updates_changed ();
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_desktop_get_type ()")]
+	public class Desktop : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Desktop ();
+		public GLib.GenericArray<weak string> get_files_for_package (string package) throws GLib.Error;
+		public string get_package_for_file (string filename) throws GLib.Error;
+		public GLib.GenericArray<weak string> get_shown_for_package (string package) throws GLib.Error;
+		public bool open_database () throws GLib.Error;
+		public static void test (void* user_data);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_details_get_type ()")]
+	public class Details : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public Details ();
+		public unowned string get_description ();
+		public Pk.Group get_group ();
+		public unowned string get_license ();
+		public unowned string get_package_id ();
+		public uint64 get_size ();
+		public unowned string get_summary ();
+		public unowned string get_url ();
+		[NoAccessorMethod]
+		public string description { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.Group group { get; set; }
+		[NoAccessorMethod]
+		public string license { owned get; set; }
+		[NoAccessorMethod]
+		public string package_id { owned get; set; }
+		[NoAccessorMethod]
+		public uint64 size { get; set; }
+		[NoAccessorMethod]
+		public string summary { owned get; set; }
+		[NoAccessorMethod]
+		public string url { owned get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_distro_upgrade_get_type ()")]
+	public class DistroUpgrade : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public DistroUpgrade ();
+		public unowned string get_id ();
+		public Pk.DistroUpgradeEnum get_state ();
+		public unowned string get_summary ();
+		[NoAccessorMethod]
+		public string name { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.DistroUpgradeEnum state { get; set; }
+		[NoAccessorMethod]
+		public string summary { owned get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_error_get_type ()")]
+	public class Error : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public Error ();
+		public Pk.ErrorEnum get_code ();
+		public unowned string get_details ();
+		[NoAccessorMethod]
+		public Pk.ErrorEnum code { get; set; }
+		[NoAccessorMethod]
+		public string details { owned get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_eula_required_get_type ()")]
+	public class EulaRequired : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public EulaRequired ();
+		[NoAccessorMethod]
+		public string eula_id { owned get; set; }
+		[NoAccessorMethod]
+		public string license_agreement { owned get; set; }
+		[NoAccessorMethod]
+		public string package_id { owned get; set; }
+		[NoAccessorMethod]
+		public string vendor_name { owned get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_files_get_type ()")]
+	public class Files : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public Files ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_files ();
+		public unowned string get_package_id ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		[NoAccessorMethod]
+		public string[] files { owned get; set; }
+		[NoAccessorMethod]
+		public string package_id { owned get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_item_progress_get_type ()")]
+	public class ItemProgress : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public ItemProgress ();
+		public unowned string get_package_id ();
+		public uint get_percentage ();
+		public Pk.Status get_status ();
+		[NoAccessorMethod]
+		public string package_id { owned get; set; }
+		[NoAccessorMethod]
+		public uint percentage { get; set; }
+		[NoAccessorMethod]
+		public uint status { get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_media_change_required_get_type ()")]
+	public class MediaChangeRequired : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public MediaChangeRequired ();
+		[NoAccessorMethod]
+		public string media_id { owned get; set; }
+		[NoAccessorMethod]
+		public string media_text { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.MediaType media_type { get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_package_get_type ()")]
+	public class Package : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public Package ();
+		public bool equal (Pk.Package package2);
+		public bool equal_id (Pk.Package package2);
+		public unowned string get_arch ();
+		public unowned string get_data ();
+		public unowned string get_id ();
+		public Pk.Info get_info ();
+		public unowned string get_name ();
+		public unowned string get_summary ();
+		public unowned string get_version ();
+		public static string id_build (string name, string version, string arch, string data);
+		public static bool id_check (string package_id);
+		public static bool id_equal_fuzzy_arch (string package_id1, string package_id2);
+		[CCode (array_length = false, array_null_terminated = true)]
+		public static string[] id_split (string package_id);
+		public static void id_test (void* user_data);
+		public static string id_to_printable (string package_id);
+		[CCode (array_length = false, array_null_terminated = true)]
+		public static string[] ids_add_id (string package_ids, string package_id);
+		[CCode (array_length = false, array_null_terminated = true)]
+		public static string[] ids_add_ids (string package_ids, string package_ids_new);
+		public static bool ids_check (string package_ids);
+		[CCode (array_length = false, array_null_terminated = true)]
+		public static string[] ids_from_id (string package_id);
+		[CCode (array_length = false, array_null_terminated = true)]
+		public static string[] ids_from_string (string package_id);
+		public static bool ids_present_id (string package_ids, string package_id);
+		[CCode (array_length = false, array_null_terminated = true)]
+		public static string[] ids_remove_id (string package_ids, string package_id);
+		public static void ids_test (void* user_data);
+		public static string ids_to_string (string package_ids);
+		public bool parse (string data) throws GLib.Error;
+		public void print ();
+		public bool set_id (string package_id) throws GLib.Error;
+		public void set_info (Pk.Info info);
+		public void set_summary (string summary);
+		public static void test (void* user_data);
+		[NoAccessorMethod]
+		public string description { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.Group group { get; set; }
+		public Pk.Info info { get; set; }
+		[NoAccessorMethod]
+		public string license { owned get; set; }
+		[NoAccessorMethod]
+		public string package_id { owned get; }
+		[NoAccessorMethod]
+		public uint64 size { get; set; }
+		public string summary { get; set; }
+		[CCode (array_length = false, array_null_terminated = true)]
+		[NoAccessorMethod]
+		public string[] update_bugzilla_urls { owned get; set; }
+		[NoAccessorMethod]
+		public string update_changelog { owned get; set; }
+		[CCode (array_length = false, array_null_terminated = true)]
+		[NoAccessorMethod]
+		public string[] update_cve_urls { owned get; set; }
+		[NoAccessorMethod]
+		public string update_issued { owned get; set; }
+		[NoAccessorMethod]
+		public string update_obsoletes { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.Restart update_restart { get; set; }
+		[NoAccessorMethod]
+		public Pk.UpdateState update_state { get; set; }
+		[NoAccessorMethod]
+		public string update_text { owned get; set; }
+		[NoAccessorMethod]
+		public string update_updated { owned get; set; }
+		[NoAccessorMethod]
+		public string update_updates { owned get; set; }
+		[CCode (array_length = false, array_null_terminated = true)]
+		[NoAccessorMethod]
+		public string[] update_vendor_urls { owned get; set; }
+		[NoAccessorMethod]
+		public string url { owned get; set; }
+		public virtual signal void changed ();
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_package_sack_get_type ()")]
+	public class PackageSack : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public PackageSack ();
+		public bool add_package (Pk.Package package);
+		public bool add_package_by_id (string package_id) throws GLib.Error;
+		public bool add_packages_from_file (GLib.File file) throws GLib.Error;
+		[NoWrapper]
+		public virtual void changed ();
+		public void clear ();
+		public Pk.PackageSack filter (Pk.PackageSackFilterFunc filter_cb);
+		public Pk.PackageSack filter_by_info (Pk.Info info);
+		public Pk.Package find_by_id (string package_id);
+		public Pk.Package find_by_id_name_arch (string package_id);
+		public GLib.GenericArray<weak Pk.Package> get_array ();
+		public bool get_details (GLib.Cancellable? cancellable = null) throws GLib.Error;
+		[CCode (finish_name = "pk_package_sack_merge_generic_finish")]
+		public async bool get_details_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] get_ids ();
+		public uint get_size ();
+		public uint64 get_total_bytes ();
+		public bool get_update_detail (GLib.Cancellable? cancellable = null) throws GLib.Error;
+		[CCode (finish_name = "pk_package_sack_merge_generic_finish")]
+		public async bool get_update_detail_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public bool remove_by_filter (Pk.PackageSackFilterFunc filter_cb);
+		public bool remove_package (Pk.Package package);
+		public bool remove_package_by_id (string package_id);
+		public bool resolve (GLib.Cancellable? cancellable = null) throws GLib.Error;
+		[CCode (finish_name = "pk_package_sack_merge_generic_finish")]
+		public async bool resolve_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public void sort (Pk.PackageSackSortType type);
+		public static void test (void* user_data);
+		public bool to_file (GLib.File file) throws GLib.Error;
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	[Compact]
+	public class PackageSackResults {
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_progress_get_type ()")]
+	public class Progress : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Progress ();
+		public bool set_allow_cancel (bool allow_cancel);
+		public bool set_caller_active (bool caller_active);
+		public bool set_download_size_remaining (uint64 download_size_remaining);
+		public bool set_elapsed_time (uint elapsed_time);
+		public bool set_item_progress (Pk.ItemProgress item_progress);
+		public bool set_package (Pk.Package package);
+		public bool set_package_id (string package_id);
+		public bool set_percentage (int percentage);
+		public bool set_remaining_time (uint remaining_time);
+		public bool set_role (Pk.Role role);
+		public bool set_speed (uint speed);
+		public bool set_status (Pk.Status status);
+		public bool set_transaction_flags (uint64 transaction_flags);
+		public bool set_transaction_id (string package_id);
+		public bool set_uid (uint uid);
+		public static void test (void* user_data);
+		[NoAccessorMethod]
+		public bool allow_cancel { get; set; }
+		[NoAccessorMethod]
+		public bool caller_active { get; set; }
+		[NoAccessorMethod]
+		public uint download_size_remaining { get; set; }
+		[NoAccessorMethod]
+		public uint elapsed_time { get; set; }
+		[NoAccessorMethod]
+		public Pk.ItemProgress item_progress { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.Package package { owned get; set; }
+		[NoAccessorMethod]
+		public string package_id { owned get; set; }
+		[NoAccessorMethod]
+		public int percentage { get; set; }
+		[NoAccessorMethod]
+		public uint remaining_time { get; set; }
+		[NoAccessorMethod]
+		public uint role { get; set; }
+		[NoAccessorMethod]
+		public uint speed { get; set; }
+		[NoAccessorMethod]
+		public uint status { get; set; }
+		[NoAccessorMethod]
+		public uint64 transaction_flags { get; set; }
+		[NoAccessorMethod]
+		public string transaction_id { owned get; set; }
+		[NoAccessorMethod]
+		public uint uid { get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_repo_detail_get_type ()")]
+	public class RepoDetail : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public RepoDetail ();
+		public unowned string get_description ();
+		public bool get_enabled ();
+		public unowned string get_id ();
+		[NoAccessorMethod]
+		public string description { owned get; set; }
+		[NoAccessorMethod]
+		public bool enabled { get; set; }
+		[NoAccessorMethod]
+		public string repo_id { owned get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_repo_signature_required_get_type ()")]
+	public class RepoSignatureRequired : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public RepoSignatureRequired ();
+		[NoAccessorMethod]
+		public string key_fingerprint { owned get; set; }
+		[NoAccessorMethod]
+		public string key_id { owned get; set; }
+		[NoAccessorMethod]
+		public string key_timestamp { owned get; set; }
+		[NoAccessorMethod]
+		public string key_url { owned get; set; }
+		[NoAccessorMethod]
+		public string key_userid { owned get; set; }
+		[NoAccessorMethod]
+		public string package_id { owned get; set; }
+		[NoAccessorMethod]
+		public string repository_name { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.SigType type { get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_require_restart_get_type ()")]
+	public class RequireRestart : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public RequireRestart ();
+		[NoAccessorMethod]
+		public string package_id { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.Restart restart { get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_results_get_type ()")]
+	public class Results : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Results ();
+		public bool add_category (Pk.Category item);
+		public bool add_details (Pk.Details item);
+		public bool add_distro_upgrade (Pk.DistroUpgrade item);
+		public bool add_eula_required (Pk.EulaRequired item);
+		public bool add_files (Pk.Files item);
+		public bool add_media_change_required (Pk.MediaChangeRequired item);
+		public bool add_package (Pk.Package item);
+		public bool add_repo_detail (Pk.RepoDetail item);
+		public bool add_repo_signature_required (Pk.RepoSignatureRequired item);
+		public bool add_require_restart (Pk.RequireRestart item);
+		public bool add_transaction (Pk.TransactionPast item);
+		public bool add_update_detail (Pk.UpdateDetail item);
+		public GLib.GenericArray<weak Pk.Category> get_category_array ();
+		public GLib.GenericArray<weak Pk.Details> get_details_array ();
+		public GLib.GenericArray<weak Pk.DistroUpgrade> get_distro_upgrade_array ();
+		public Pk.Error get_error_code ();
+		public GLib.GenericArray<weak Pk.EulaRequired> get_eula_required_array ();
+		public Pk.Exit get_exit_code ();
+		public GLib.GenericArray<weak Pk.Files> get_files_array ();
+		public GLib.GenericArray<weak Pk.MediaChangeRequired> get_media_change_required_array ();
+		public GLib.GenericArray<weak Pk.Package> get_package_array ();
+		public Pk.PackageSack get_package_sack ();
+		public GLib.GenericArray<weak Pk.RepoDetail> get_repo_detail_array ();
+		public GLib.GenericArray<weak Pk.RepoSignatureRequired> get_repo_signature_required_array ();
+		public GLib.GenericArray<weak Pk.RequireRestart> get_require_restart_array ();
+		public Pk.Restart get_require_restart_worst ();
+		public Pk.Role get_role ();
+		public GLib.GenericArray<weak Pk.TransactionPast> get_transaction_array ();
+		public Pk.Bitfield get_transaction_flags ();
+		public GLib.GenericArray<weak Pk.UpdateDetail> get_update_detail_array ();
+		public bool set_error_code (Pk.Error item);
+		public bool set_exit_code (Pk.Exit exit_enum);
+		public static void test (void* user_data);
+		[NoAccessorMethod]
+		public uint inputs { get; set; }
+		[NoAccessorMethod]
+		public Pk.Progress progress { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.Role role { get; set; }
+		[NoAccessorMethod]
+		public uint64 transaction_flags { get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_source_get_type ()")]
+	public class Source : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public Source ();
+		[NoAccessorMethod]
+		public Pk.Role role { get; set; }
+		[NoAccessorMethod]
+		public string transaction_id { owned get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_task_get_type ()")]
+	public class Task : Pk.Client {
+		[CCode (has_construct_function = false)]
+		public Task ();
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results depends_on_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results depends_on_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results download_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results download_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[NoWrapper]
+		public virtual void eula_question (uint request, Pk.Results results);
+		public bool get_allow_downgrade ();
+		public bool get_allow_reinstall ();
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results get_categories_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_categories_sync (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results get_details_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_details_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results get_files_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_files_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public bool get_interactive ();
+		public bool get_only_download ();
+		public bool get_only_trusted ();
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results get_packages_async (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_packages_sync (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results get_repo_list_async (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_repo_list_sync (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public bool get_simulate ();
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results get_update_detail_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_update_detail_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results get_updates_async (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results get_updates_sync (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results install_files_async ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results install_files_sync ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results install_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results install_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[NoWrapper]
+		public virtual void key_question (uint request, Pk.Results results);
+		[NoWrapper]
+		public virtual void media_change_question (uint request, Pk.Results results);
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results refresh_cache_async (bool force, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results refresh_cache_sync (bool force, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results remove_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool allow_deps, bool autoremove, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results remove_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool allow_deps, bool autoremove, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[NoWrapper]
+		public virtual void repair_question (uint request, Pk.Results results);
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results repair_system_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results repair_system_sync (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results repo_enable_async (string repo_id, bool enabled, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results repo_enable_sync (string repo_id, bool enabled, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results required_by_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results required_by_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results resolve_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] packages, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results resolve_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] packages, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results search_details_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results search_details_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results search_files_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results search_files_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results search_groups_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results search_groups_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results search_names_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results search_names_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public void set_allow_downgrade (bool allow_downgrade);
+		public void set_allow_reinstall (bool allow_reinstall);
+		public void set_interactive (bool interactive);
+		public void set_only_download (bool only_download);
+		public void set_only_trusted (bool only_trusted);
+		public void set_simulate (bool simulate);
+		[NoWrapper]
+		public virtual void simulate_question (uint request, Pk.Results results);
+		public static void test (void* user_data);
+		[NoWrapper]
+		public virtual void untrusted_question (uint request, Pk.Results results);
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results update_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results update_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public bool user_accepted (uint request);
+		public bool user_declined (uint request);
+		[CCode (finish_name = "pk_task_generic_finish")]
+		public async Pk.Results what_provides_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public Pk.Results what_provides_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+		public bool allow_downgrade { get; set; }
+		public bool allow_reinstall { get; set; }
+		public bool only_download { get; set; }
+		public bool only_trusted { get; set; }
+		public bool simulate { get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_transaction_list_get_type ()")]
+	public class TransactionList : GLib.Object {
+		[CCode (has_construct_function = false)]
+		public TransactionList ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public string[] get_ids ();
+		public static void test (void* user_data);
+		public virtual signal void added (string tid);
+		public virtual signal void removed (string tid);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_transaction_past_get_type ()")]
+	public class TransactionPast : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public TransactionPast ();
+		public unowned string get_cmdline ();
+		public unowned string get_data ();
+		public GLib.DateTime get_datetime ();
+		public uint get_duration ();
+		public unowned string get_id ();
+		public Pk.Role get_role ();
+		public bool get_succeeded ();
+		public unowned string get_timespec ();
+		public int64 get_timestamp ();
+		public uint get_uid ();
+		[NoAccessorMethod]
+		public string cmdline { owned get; set; }
+		[NoAccessorMethod]
+		public string data { owned get; set; }
+		[NoAccessorMethod]
+		public uint duration { get; set; }
+		[NoAccessorMethod]
+		public Pk.Role role { get; set; }
+		[NoAccessorMethod]
+		public bool succeeded { get; set; }
+		[NoAccessorMethod]
+		public string tid { owned get; set; }
+		[NoAccessorMethod]
+		public string timespec { owned get; set; }
+		[NoAccessorMethod]
+		public uint uid { get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_update_detail_get_type ()")]
+	public class UpdateDetail : Pk.Source {
+		[CCode (has_construct_function = false)]
+		public UpdateDetail ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_bugzilla_urls ();
+		public unowned string get_changelog ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_cve_urls ();
+		public unowned string get_issued ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_obsoletes ();
+		public unowned string get_package_id ();
+		public Pk.Restart get_restart ();
+		public Pk.UpdateState get_state ();
+		public unowned string get_update_text ();
+		public unowned string get_updated ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_updates ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		public unowned string[] get_vendor_urls ();
+		[CCode (array_length = false, array_null_terminated = true)]
+		[NoAccessorMethod]
+		public string[] bugzilla_urls { owned get; set; }
+		[NoAccessorMethod]
+		public string changelog { owned get; set; }
+		[CCode (array_length = false, array_null_terminated = true)]
+		[NoAccessorMethod]
+		public string[] cve_urls { owned get; set; }
+		[NoAccessorMethod]
+		public string issued { owned get; set; }
+		[CCode (array_length = false, array_null_terminated = true)]
+		[NoAccessorMethod]
+		public string[] obsoletes { owned get; set; }
+		[NoAccessorMethod]
+		public string package_id { owned get; set; }
+		[NoAccessorMethod]
+		public Pk.Restart restart { get; set; }
+		[NoAccessorMethod]
+		public Pk.UpdateState state { get; set; }
+		[NoAccessorMethod]
+		public string update_text { owned get; set; }
+		[NoAccessorMethod]
+		public string updated { owned get; set; }
+		[CCode (array_length = false, array_null_terminated = true)]
+		[NoAccessorMethod]
+		public string[] updates { owned get; set; }
+		[CCode (array_length = false, array_null_terminated = true)]
+		[NoAccessorMethod]
+		public string[] vendor_urls { owned get; set; }
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	[SimpleType]
+	public struct Bitfield : uint64 {
+		public static void test (void* user_data);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", has_type_id = false)]
+	public struct EnumMatch {
+		public uint value;
+		public weak global::string string;
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkAuthorizeEnum", cprefix = "PK_AUTHORIZE_ENUM_", type_id = "pk_authorize_enum_get_type ()")]
+	[GIR (name = "AuthorizeEnum")]
+	public enum Authorize {
+		UNKNOWN,
+		YES,
+		NO,
+		INTERACTIVE,
+		LAST;
+		public static Pk.Authorize type_enum_from_string (string authorize_type);
+		public static unowned string type_enum_to_string (Pk.Authorize authorize_type);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_DISTRO_UPGRADE_ENUM_", type_id = "pk_distro_upgrade_enum_get_type ()")]
+	public enum DistroUpgradeEnum {
+		UNKNOWN,
+		STABLE,
+		UNSTABLE,
+		LAST;
+		public static Pk.DistroUpgradeEnum from_string (string upgrade);
+		public static unowned string to_string (Pk.DistroUpgradeEnum upgrade);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_ERROR_ENUM_", type_id = "pk_error_enum_get_type ()")]
+	public enum ErrorEnum {
+		UNKNOWN,
+		OOM,
+		NO_NETWORK,
+		NOT_SUPPORTED,
+		INTERNAL_ERROR,
+		GPG_FAILURE,
+		PACKAGE_ID_INVALID,
+		PACKAGE_NOT_INSTALLED,
+		PACKAGE_NOT_FOUND,
+		PACKAGE_ALREADY_INSTALLED,
+		PACKAGE_DOWNLOAD_FAILED,
+		GROUP_NOT_FOUND,
+		GROUP_LIST_INVALID,
+		DEP_RESOLUTION_FAILED,
+		FILTER_INVALID,
+		CREATE_THREAD_FAILED,
+		TRANSACTION_ERROR,
+		TRANSACTION_CANCELLED,
+		NO_CACHE,
+		REPO_NOT_FOUND,
+		CANNOT_REMOVE_SYSTEM_PACKAGE,
+		PROCESS_KILL,
+		FAILED_INITIALIZATION,
+		FAILED_FINALISE,
+		FAILED_CONFIG_PARSING,
+		CANNOT_CANCEL,
+		CANNOT_GET_LOCK,
+		NO_PACKAGES_TO_UPDATE,
+		CANNOT_WRITE_REPO_CONFIG,
+		LOCAL_INSTALL_FAILED,
+		BAD_GPG_SIGNATURE,
+		MISSING_GPG_SIGNATURE,
+		CANNOT_INSTALL_SOURCE_PACKAGE,
+		REPO_CONFIGURATION_ERROR,
+		NO_LICENSE_AGREEMENT,
+		FILE_CONFLICTS,
+		PACKAGE_CONFLICTS,
+		REPO_NOT_AVAILABLE,
+		INVALID_PACKAGE_FILE,
+		PACKAGE_INSTALL_BLOCKED,
+		PACKAGE_CORRUPT,
+		ALL_PACKAGES_ALREADY_INSTALLED,
+		FILE_NOT_FOUND,
+		NO_MORE_MIRRORS_TO_TRY,
+		NO_DISTRO_UPGRADE_DATA,
+		INCOMPATIBLE_ARCHITECTURE,
+		NO_SPACE_ON_DEVICE,
+		MEDIA_CHANGE_REQUIRED,
+		NOT_AUTHORIZED,
+		UPDATE_NOT_FOUND,
+		CANNOT_INSTALL_REPO_UNSIGNED,
+		CANNOT_UPDATE_REPO_UNSIGNED,
+		CANNOT_GET_FILELIST,
+		CANNOT_GET_REQUIRES,
+		CANNOT_DISABLE_REPOSITORY,
+		RESTRICTED_DOWNLOAD,
+		PACKAGE_FAILED_TO_CONFIGURE,
+		PACKAGE_FAILED_TO_BUILD,
+		PACKAGE_FAILED_TO_INSTALL,
+		PACKAGE_FAILED_TO_REMOVE,
+		UPDATE_FAILED_DUE_TO_RUNNING_PROCESS,
+		PACKAGE_DATABASE_CHANGED,
+		PROVIDE_TYPE_NOT_SUPPORTED,
+		INSTALL_ROOT_INVALID,
+		CANNOT_FETCH_SOURCES,
+		CANCELLED_PRIORITY,
+		UNFINISHED_TRANSACTION,
+		LOCK_REQUIRED,
+		LAST;
+		public static Pk.ErrorEnum from_string (string code);
+		public static unowned string to_string (Pk.ErrorEnum code);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkExitEnum", cprefix = "PK_EXIT_ENUM_", type_id = "pk_exit_enum_get_type ()")]
+	[GIR (name = "ExitEnum")]
+	public enum Exit {
+		UNKNOWN,
+		SUCCESS,
+		FAILED,
+		CANCELLED,
+		KEY_REQUIRED,
+		EULA_REQUIRED,
+		KILLED,
+		MEDIA_CHANGE_REQUIRED,
+		NEED_UNTRUSTED,
+		CANCELLED_PRIORITY,
+		SKIP_TRANSACTION,
+		REPAIR_REQUIRED,
+		LAST;
+		public static Pk.Exit enum_from_string (string exit);
+		public static unowned string enum_to_string (Pk.Exit exit);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkFilterEnum", cprefix = "PK_FILTER_ENUM_", type_id = "pk_filter_enum_get_type ()")]
+	[GIR (name = "FilterEnum")]
+	public enum Filter {
+		UNKNOWN,
+		NONE,
+		INSTALLED,
+		NOT_INSTALLED,
+		DEVELOPMENT,
+		NOT_DEVELOPMENT,
+		GUI,
+		NOT_GUI,
+		FREE,
+		NOT_FREE,
+		VISIBLE,
+		NOT_VISIBLE,
+		SUPPORTED,
+		NOT_SUPPORTED,
+		BASENAME,
+		NOT_BASENAME,
+		NEWEST,
+		NOT_NEWEST,
+		ARCH,
+		NOT_ARCH,
+		SOURCE,
+		NOT_SOURCE,
+		COLLECTIONS,
+		NOT_COLLECTIONS,
+		APPLICATION,
+		NOT_APPLICATION,
+		DOWNLOADED,
+		NOT_DOWNLOADED,
+		LAST;
+		public static Pk.Bitfield bitfield_from_string (string filters);
+		public static string bitfield_to_string (Pk.Bitfield filters);
+		public static Pk.Filter enum_from_string (string filter);
+		public static unowned string enum_to_string (Pk.Filter filter);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkGroupEnum", cprefix = "PK_GROUP_ENUM_", type_id = "pk_group_enum_get_type ()")]
+	[GIR (name = "GroupEnum")]
+	public enum Group {
+		UNKNOWN,
+		ACCESSIBILITY,
+		ACCESSORIES,
+		ADMIN_TOOLS,
+		COMMUNICATION,
+		DESKTOP_GNOME,
+		DESKTOP_KDE,
+		DESKTOP_OTHER,
+		DESKTOP_XFCE,
+		EDUCATION,
+		FONTS,
+		GAMES,
+		GRAPHICS,
+		INTERNET,
+		LEGACY,
+		LOCALIZATION,
+		MAPS,
+		MULTIMEDIA,
+		NETWORK,
+		OFFICE,
+		OTHER,
+		POWER_MANAGEMENT,
+		PROGRAMMING,
+		PUBLISHING,
+		REPOS,
+		SECURITY,
+		SERVERS,
+		SYSTEM,
+		VIRTUALIZATION,
+		SCIENCE,
+		DOCUMENTATION,
+		ELECTRONICS,
+		COLLECTIONS,
+		VENDOR,
+		NEWEST,
+		LAST;
+		public static Pk.Bitfield bitfield_from_string (string groups);
+		public static string bitfield_to_string (Pk.Bitfield groups);
+		public static Pk.Group enum_from_string (string group);
+		public static unowned string enum_to_string (Pk.Group group);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkInfoEnum", cprefix = "PK_INFO_ENUM_", type_id = "pk_info_enum_get_type ()")]
+	[GIR (name = "InfoEnum")]
+	public enum Info {
+		UNKNOWN,
+		INSTALLED,
+		AVAILABLE,
+		LOW,
+		ENHANCEMENT,
+		NORMAL,
+		BUGFIX,
+		IMPORTANT,
+		SECURITY,
+		BLOCKED,
+		DOWNLOADING,
+		UPDATING,
+		INSTALLING,
+		REMOVING,
+		CLEANUP,
+		OBSOLETING,
+		COLLECTION_INSTALLED,
+		COLLECTION_AVAILABLE,
+		FINISHED,
+		REINSTALLING,
+		DOWNGRADING,
+		PREPARING,
+		DECOMPRESSING,
+		UNTRUSTED,
+		TRUSTED,
+		UNAVAILABLE,
+		LAST;
+		public static Pk.Info enum_from_string (string info);
+		public static unowned string enum_to_localised_past (Pk.Info info);
+		public static unowned string enum_to_localised_present (Pk.Info info);
+		public static unowned string enum_to_string (Pk.Info info);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkMediaTypeEnum", cprefix = "PK_MEDIA_TYPE_ENUM_", type_id = "pk_media_type_enum_get_type ()")]
+	[GIR (name = "MediaTypeEnum")]
+	public enum MediaType {
+		UNKNOWN,
+		CD,
+		DVD,
+		DISC,
+		LAST;
+		public static Pk.MediaType enum_from_string (string media_type);
+		public static unowned string enum_to_string (Pk.MediaType media_type);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkNetworkEnum", cprefix = "PK_NETWORK_ENUM_", type_id = "pk_network_enum_get_type ()")]
+	[GIR (name = "NetworkEnum")]
+	public enum Network {
+		UNKNOWN,
+		OFFLINE,
+		ONLINE,
+		WIRED,
+		WIFI,
+		MOBILE,
+		LAST;
+		public static Pk.Network enum_from_string (string network);
+		public static unowned string enum_to_string (Pk.Network network);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_OFFLINE_ACTION_", type_id = "pk_offline_action_get_type ()")]
+	public enum OfflineAction {
+		UNKNOWN,
+		REBOOT,
+		POWER_OFF,
+		UNSET,
+		LAST;
+		public static Pk.OfflineAction from_string (string action);
+		public static unowned string to_string (Pk.OfflineAction action);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_PACKAGE_SACK_SORT_TYPE_", type_id = "pk_package_sack_sort_type_get_type ()")]
+	public enum PackageSackSortType {
+		NAME,
+		INFO,
+		PACKAGE_ID,
+		SUMMARY,
+		LAST
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_PROGRESS_TYPE_", type_id = "pk_progress_type_get_type ()")]
+	public enum ProgressType {
+		PACKAGE_ID,
+		TRANSACTION_ID,
+		PERCENTAGE,
+		ALLOW_CANCEL,
+		STATUS,
+		ROLE,
+		CALLER_ACTIVE,
+		ELAPSED_TIME,
+		REMAINING_TIME,
+		SPEED,
+		DOWNLOAD_SIZE_REMAINING,
+		UID,
+		PACKAGE,
+		ITEM_PROGRESS,
+		TRANSACTION_FLAGS,
+		INVALID
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkRestartEnum", cprefix = "PK_RESTART_ENUM_", type_id = "pk_restart_enum_get_type ()")]
+	[GIR (name = "RestartEnum")]
+	public enum Restart {
+		UNKNOWN,
+		NONE,
+		APPLICATION,
+		SESSION,
+		SYSTEM,
+		SECURITY_SESSION,
+		SECURITY_SYSTEM,
+		LAST;
+		public static Pk.Restart enum_from_string (string restart);
+		public static unowned string enum_to_string (Pk.Restart restart);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkRoleEnum", cprefix = "PK_ROLE_ENUM_", type_id = "pk_role_enum_get_type ()")]
+	[GIR (name = "RoleEnum")]
+	public enum Role {
+		UNKNOWN,
+		CANCEL,
+		DEPENDS_ON,
+		GET_DETAILS,
+		GET_FILES,
+		GET_PACKAGES,
+		GET_REPO_LIST,
+		REQUIRED_BY,
+		GET_UPDATE_DETAIL,
+		GET_UPDATES,
+		INSTALL_FILES,
+		INSTALL_PACKAGES,
+		INSTALL_SIGNATURE,
+		REFRESH_CACHE,
+		REMOVE_PACKAGES,
+		REPO_ENABLE,
+		REPO_SET_DATA,
+		RESOLVE,
+		SEARCH_DETAILS,
+		SEARCH_FILE,
+		SEARCH_GROUP,
+		SEARCH_NAME,
+		UPDATE_PACKAGES,
+		WHAT_PROVIDES,
+		ACCEPT_EULA,
+		DOWNLOAD_PACKAGES,
+		GET_DISTRO_UPGRADES,
+		GET_CATEGORIES,
+		GET_OLD_TRANSACTIONS,
+		REPAIR_SYSTEM,
+		GET_DETAILS_LOCAL,
+		GET_FILES_LOCAL,
+		REPO_REMOVE,
+		LAST;
+		public static Pk.Bitfield bitfield_from_string (string roles);
+		public static string bitfield_to_string (Pk.Bitfield roles);
+		public static Pk.Role enum_from_string (string role);
+		public static unowned string enum_to_localised_present (Pk.Role role);
+		public static unowned string enum_to_string (Pk.Role role);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkSigTypeEnum", cprefix = "PK_SIGTYPE_ENUM_", type_id = "pk_sig_type_enum_get_type ()")]
+	[GIR (name = "SigTypeEnum")]
+	public enum SigType {
+		UNKNOWN,
+		GPG,
+		LAST;
+		public static Pk.SigType enum_from_string (string sig_type);
+		public static unowned string enum_to_string (Pk.SigType sig_type);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkStatusEnum", cprefix = "PK_STATUS_ENUM_", type_id = "pk_status_enum_get_type ()")]
+	[GIR (name = "StatusEnum")]
+	public enum Status {
+		UNKNOWN,
+		WAIT,
+		SETUP,
+		RUNNING,
+		QUERY,
+		INFO,
+		REMOVE,
+		REFRESH_CACHE,
+		DOWNLOAD,
+		INSTALL,
+		UPDATE,
+		CLEANUP,
+		OBSOLETE,
+		DEP_RESOLVE,
+		SIG_CHECK,
+		TEST_COMMIT,
+		COMMIT,
+		REQUEST,
+		FINISHED,
+		CANCEL,
+		DOWNLOAD_REPOSITORY,
+		DOWNLOAD_PACKAGELIST,
+		DOWNLOAD_FILELIST,
+		DOWNLOAD_CHANGELOG,
+		DOWNLOAD_GROUP,
+		DOWNLOAD_UPDATEINFO,
+		REPACKAGING,
+		LOADING_CACHE,
+		SCAN_APPLICATIONS,
+		GENERATE_PACKAGE_LIST,
+		WAITING_FOR_LOCK,
+		WAITING_FOR_AUTH,
+		SCAN_PROCESS_LIST,
+		CHECK_EXECUTABLE_FILES,
+		CHECK_LIBRARIES,
+		COPY_FILES,
+		LAST;
+		public static Pk.Status enum_from_string (string status);
+		public static unowned string enum_to_localised_text (Pk.Status status);
+		public static unowned string enum_to_string (Pk.Status status);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkTransactionFlagEnum", cprefix = "PK_TRANSACTION_FLAG_ENUM_", type_id = "pk_transaction_flag_enum_get_type ()")]
+	[GIR (name = "TransactionFlagEnum")]
+	public enum TransactionFlag {
+		NONE,
+		ONLY_TRUSTED,
+		SIMULATE,
+		ONLY_DOWNLOAD,
+		ALLOW_REINSTALL,
+		JUST_REINSTALL,
+		ALLOW_DOWNGRADE,
+		LAST;
+		public static Pk.Bitfield bitfield_from_string (string transaction_flags);
+		public static string bitfield_to_string (Pk.Bitfield transaction_flags);
+		public static Pk.TransactionFlag enum_from_string (string transaction_flag);
+		public static unowned string enum_to_string (Pk.TransactionFlag transaction_flag);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkUpdateStateEnum", cprefix = "PK_UPDATE_STATE_ENUM_", type_id = "pk_update_state_enum_get_type ()")]
+	[GIR (name = "UpdateStateEnum")]
+	public enum UpdateState {
+		UNKNOWN,
+		STABLE,
+		UNSTABLE,
+		TESTING,
+		LAST;
+		public static Pk.UpdateState enum_from_string (string update_state);
+		public static unowned string enum_to_string (Pk.UpdateState update_state);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkUpgradeKindEnum", cprefix = "PK_UPGRADE_KIND_ENUM_", type_id = "pk_upgrade_kind_enum_get_type ()")]
+	[GIR (name = "UpgradeKindEnum")]
+	public enum UpgradeKind {
+		UNKNOWN,
+		MINIMAL,
+		DEFAULT,
+		COMPLETE,
+		LAST;
+		public static Pk.UpgradeKind enum_from_string (string upgrade_kind);
+		public static unowned string enum_to_string (Pk.UpgradeKind upgrade_kind);
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_CLIENT_ERROR_")]
+	public errordomain ClientError {
+		FAILED,
+		FAILED_AUTH,
+		NO_TID,
+		ALREADY_TID,
+		ROLE_UNKNOWN,
+		CANNOT_START_DAEMON,
+		INVALID_INPUT,
+		INVALID_FILE,
+		NOT_SUPPORTED,
+		DECLINED_SIMULATION,
+		LAST;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_CONTROL_ERROR_")]
+	public errordomain ControlError {
+		FAILED,
+		CANNOT_START_DAEMON;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_OFFLINE_ERROR_")]
+	public errordomain OfflineError {
+		FAILED,
+		INVALID_VALUE,
+		NO_DATA,
+		LAST;
+		public static GLib.Quark quark ();
+	}
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", instance_pos = 1.9)]
+	public delegate bool PackageSackFilterFunc (Pk.Package package);
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", instance_pos = 2.9)]
+	public delegate void ProgressCallback (Pk.Progress progress, Pk.ProgressType type);
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_INTERFACE")]
+	public const string DBUS_INTERFACE;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_INTERFACE_OFFLINE")]
+	public const string DBUS_INTERFACE_OFFLINE;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_INTERFACE_TRANSACTION")]
+	public const string DBUS_INTERFACE_TRANSACTION;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_PATH")]
+	public const string DBUS_PATH;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_SERVICE")]
+	public const string DBUS_SERVICE;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DESKTOP_DEFAULT_APPLICATION_DIR")]
+	public const string DESKTOP_DEFAULT_APPLICATION_DIR;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_MAJOR_VERSION")]
+	public const int MAJOR_VERSION;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_MICRO_VERSION")]
+	public const int MICRO_VERSION;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_MINOR_VERSION")]
+	public const int MINOR_VERSION;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_OFFLINE_DESTDIR")]
+	public const string OFFLINE_DESTDIR;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_OFFLINE_RESULTS_GROUP")]
+	public const string OFFLINE_RESULTS_GROUP;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_IDS_DELIM")]
+	public const string PACKAGE_IDS_DELIM;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_ID_ARCH")]
+	public const int PACKAGE_ID_ARCH;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_ID_DATA")]
+	public const int PACKAGE_ID_DATA;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_ID_NAME")]
+	public const int PACKAGE_ID_NAME;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_ID_VERSION")]
+	public const int PACKAGE_ID_VERSION;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_SYSTEM_PACKAGE_CACHE_FILENAME")]
+	public const string SYSTEM_PACKAGE_CACHE_FILENAME;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_SYSTEM_PACKAGE_LIST_FILENAME")]
+	public const string SYSTEM_PACKAGE_LIST_FILENAME;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static void common_test (void* user_data);
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static void debug_add_log_domain (string log_domain);
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool debug_is_verbose ();
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static void debug_set_verbose (bool verbose);
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static unowned string enum_find_string (Pk.EnumMatch table, uint value);
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static uint enum_find_value (Pk.EnumMatch table, string string);
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static void enum_test (void* user_data);
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static string get_distro_id ();
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static string iso8601_from_date (GLib.Date date);
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static string iso8601_present ();
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool offline_auth_cancel () throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool offline_auth_clear_results () throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool offline_auth_invalidate () throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool offline_auth_set_action (Pk.OfflineAction action) throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool offline_auth_set_prepared_ids (string package_ids) throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool offline_auth_set_results (Pk.Results results) throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool offline_auth_trigger (Pk.OfflineAction action) throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool offline_cancel (GLib.Cancellable? cancellable = null) throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool offline_clear_results (GLib.Cancellable? cancellable = null) throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static Pk.OfflineAction offline_get_action () throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static GLib.FileMonitor offline_get_action_monitor (GLib.Cancellable? cancellable = null) throws GLib.Error;
+	[CCode (array_length = false, array_null_terminated = true, cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static string[] offline_get_prepared_ids () throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static GLib.FileMonitor offline_get_prepared_monitor (GLib.Cancellable? cancellable = null) throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static Pk.PackageSack offline_get_prepared_sack () throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static Pk.Results offline_get_results () throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static uint64 offline_get_results_mtime () throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static bool offline_trigger (Pk.OfflineAction action, GLib.Cancellable? cancellable = null) throws GLib.Error;
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static void polkit_agent_close ();
+	[CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static int polkit_agent_open ();
+	[CCode (array_length = false, array_null_terminated = true, cheader_filename = "packagekit-glib2/packagekit.h")]
+	public static string[] ptr_array_to_strv (GLib.GenericArray<string> array);
+}


Follow ups