<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Gio" version="2.0"/>
  <package name="ostree-1"/>
  <namespace name="OSTree"
             version="1.0"
             shared-library="libostree-1.so.1"
             c:identifier-prefixes="Ostree"
             c:symbol-prefixes="ostree">
    <alias name="CollectionRefv" c:type="OstreeCollectionRefv">
      <doc xml:space="preserve">A %NULL-terminated array of #OstreeCollectionRef instances, designed to
be used with g_auto():

|[&lt;!-- language="C" --&gt;
g_auto(OstreeCollectionRefv) refs = NULL;
]|</doc>
      <type name="CollectionRef" c:type="OstreeCollectionRef**"/>
    </alias>
    <alias name="RepoFinderResultv" c:type="OstreeRepoFinderResultv">
      <doc xml:space="preserve">A %NULL-terminated array of #OstreeRepoFinderResult instances, designed to
be used with g_auto():

|[&lt;!-- language="C" --&gt;
g_auto(OstreeRepoFinderResultv) results = NULL;
]|</doc>
      <type name="RepoFinderResult" c:type="OstreeRepoFinderResult**"/>
    </alias>
    <class name="AsyncProgress"
           c:symbol-prefix="async_progress"
           c:type="OstreeAsyncProgress"
           parent="GObject.Object"
           glib:type-name="OstreeAsyncProgress"
           glib:get-type="ostree_async_progress_get_type"
           glib:type-struct="AsyncProgressClass">
      <constructor name="new" c:identifier="ostree_async_progress_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new progress object</doc>
          <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
        </return-value>
      </constructor>
      <constructor name="new_and_connect"
                   c:identifier="ostree_async_progress_new_and_connect">
        <return-value transfer-ownership="full">
          <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
        </return-value>
        <parameters>
          <parameter name="changed"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer*"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="0">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="finish" c:identifier="ostree_async_progress_finish">
        <doc xml:space="preserve">Process any pending signals, ensuring the main context is cleared
of sources used by this object.  Also ensures that no further
events will be queued.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get"
              c:identifier="ostree_async_progress_get"
              version="2017.6"
              introspectable="0">
        <doc xml:space="preserve">Get the values corresponding to zero or more keys from the
#OstreeAsyncProgress. Each key is specified in @... as the key name, followed
by a #GVariant format string, followed by the necessary arguments for that
format string, just as for g_variant_get(). After those arguments is the
next key name. The varargs list must be %NULL-terminated.

Each format string must make deep copies of its value, as the values stored
in the #OstreeAsyncProgress may be freed from another thread after this
function returns.

This operation is thread-safe, and all the keys are queried atomically.

|[&lt;!-- language="C" --&gt;
guint32 outstanding_fetches;
guint64 bytes_received;
g_autofree gchar *status = NULL;
g_autoptr(GVariant) refs_variant = NULL;

ostree_async_progress_get (progress,
                           "outstanding-fetches", "u", &amp;outstanding_fetches,
                           "bytes-received", "t", &amp;bytes_received,
                           "status", "s", &amp;status,
                           "refs", "@a{ss}", &amp;refs_variant,
                           NULL);
]|</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">key name, format string, #GVariant return locations, …, followed by %NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_status"
              c:identifier="ostree_async_progress_get_status"
              version="2017.6">
        <doc xml:space="preserve">Get the human-readable status string from the #OstreeAsyncProgress. This
operation is thread-safe. The retuned value may be %NULL if no status is
set.

This is a convenience function to get the well-known `status` key.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve">the current status, or %NULL if none is set</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_uint" c:identifier="ostree_async_progress_get_uint">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_uint64"
              c:identifier="ostree_async_progress_get_uint64">
        <return-value transfer-ownership="none">
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_variant"
              c:identifier="ostree_async_progress_get_variant"
              version="2017.6">
        <doc xml:space="preserve">Look up a key in the #OstreeAsyncProgress and return the #GVariant associated
with it. The lookup is thread-safe.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve">value for the given @key, or %NULL if
   it was not set</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">a key to look up</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set"
              c:identifier="ostree_async_progress_set"
              version="2017.6"
              introspectable="0">
        <doc xml:space="preserve">Set the values for zero or more keys in the #OstreeAsyncProgress. Each key is
specified in @... as the key name, followed by a #GVariant format string,
followed by the necessary arguments for that format string, just as for
g_variant_new(). After those arguments is the next key name. The varargs list
must be %NULL-terminated.

g_variant_ref_sink() will be called as appropriate on the #GVariant
parameters, so they may be floating.

This operation is thread-safe, and all the keys are set atomically.

|[&lt;!-- language="C" --&gt;
guint32 outstanding_fetches = 15;
guint64 bytes_received = 1000;

ostree_async_progress_set (progress,
                           "outstanding-fetches", "u", outstanding_fetches,
                           "bytes-received", "t", bytes_received,
                           "status", "s", "Updated status",
                           "refs", "@a{ss}", g_variant_new_parsed ("@a{ss} {}"),
                           NULL);
]|</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">key name, format string, #GVariant parameters, …, followed by %NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="set_status"
              c:identifier="ostree_async_progress_set_status"
              version="2017.6">
        <doc xml:space="preserve">Set the human-readable status string for the #OstreeAsyncProgress. This
operation is thread-safe. %NULL may be passed to clear the status.

This is a convenience function to set the well-known `status` key.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="status"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">new status string, or %NULL to clear the status</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uint" c:identifier="ostree_async_progress_set_uint">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_uint64"
              c:identifier="ostree_async_progress_set_uint64">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_variant"
              c:identifier="ostree_async_progress_set_variant"
              version="2017.6">
        <doc xml:space="preserve">Assign a new @value to the given @key, replacing any existing value. The
operation is thread-safe. @value may be a floating reference;
g_variant_ref_sink() will be called on it.

Any watchers of the #OstreeAsyncProgress will be notified of the change if
@value differs from the existing value for @key.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve">a key to set</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the value to assign to @key</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="changed" when="last">
        <doc xml:space="preserve">Emitted when @self has been changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="AsyncProgressClass"
            c:type="OstreeAsyncProgressClass"
            glib:is-gtype-struct-for="AsyncProgress">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="changed">
        <callback name="changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="BootconfigParser"
           c:symbol-prefix="bootconfig_parser"
           c:type="OstreeBootconfigParser"
           parent="GObject.Object"
           glib:type-name="OstreeBootconfigParser"
           glib:get-type="ostree_bootconfig_parser_get_type">
      <constructor name="new" c:identifier="ostree_bootconfig_parser_new">
        <return-value transfer-ownership="full">
          <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
        </return-value>
      </constructor>
      <method name="clone" c:identifier="ostree_bootconfig_parser_clone">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Copy of @self</doc>
          <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Bootconfig to clone</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get" c:identifier="ostree_bootconfig_parser_get">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse"
              c:identifier="ostree_bootconfig_parser_parse"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_at"
              c:identifier="ostree_bootconfig_parser_parse_at"
              throws="1">
        <doc xml:space="preserve">Initialize a bootconfig from the given file.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Parser</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
          <parameter name="dfd" transfer-ownership="none">
            <doc xml:space="preserve">Directory fd</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">File path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="ostree_bootconfig_parser_set">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write"
              c:identifier="ostree_bootconfig_parser_write"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
          <parameter name="output" transfer-ownership="none">
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_at"
              c:identifier="ostree_bootconfig_parser_write_at"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
          <parameter name="dfd" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="Bootloader" c:type="OstreeBootloader" disguised="1">
    </record>
    <record name="BootloaderGrub2"
            c:type="OstreeBootloaderGrub2"
            disguised="1">
    </record>
    <record name="BootloaderInterface" c:type="OstreeBootloaderInterface">
      <field name="g_iface" writable="1">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="query">
        <callback name="query" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="bootloader" transfer-ownership="none">
              <type name="Bootloader" c:type="OstreeBootloader*"/>
            </parameter>
            <parameter name="out_is_active" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean*"/>
            </parameter>
            <parameter name="cancellable" transfer-ownership="none">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_name">
        <callback name="get_name">
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Bootloader" c:type="OstreeBootloader*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write_config">
        <callback name="write_config" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Bootloader" c:type="OstreeBootloader*"/>
            </parameter>
            <parameter name="bootversion" transfer-ownership="none">
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="cancellable" transfer-ownership="none">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_atomic">
        <callback name="is_atomic">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Bootloader" c:type="OstreeBootloader*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="BootloaderSyslinux"
            c:type="OstreeBootloaderSyslinux"
            disguised="1">
    </record>
    <record name="BootloaderUboot"
            c:type="OstreeBootloaderUboot"
            disguised="1">
    </record>
    <constant name="COMMIT_GVARIANT_STRING"
              value="(a{sv}aya(say)sstayay)"
              c:type="OSTREE_COMMIT_GVARIANT_STRING">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="COMMIT_META_KEY_COLLECTION_BINDING"
              value="ostree.collection-binding"
              c:type="OSTREE_COMMIT_META_KEY_COLLECTION_BINDING"
              version="2017.9">
      <doc xml:space="preserve">GVariant type `s`.  If this is added to a commit, `ostree_repo_pull()`
will enforce that the commit was retrieved from a repository which has
the same collection ID.  See `ostree_repo_set_collection_id()`.
This is most useful in concert with `OSTREE_COMMIT_META_KEY_REF_BINDING`,
as it more strongly binds the commit to the repository and branch.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="COMMIT_META_KEY_ENDOFLIFE"
              value="ostree.endoflife"
              c:type="OSTREE_COMMIT_META_KEY_ENDOFLIFE"
              version="2017.7">
      <doc xml:space="preserve">GVariant type `s`. This metadata key is used to display vendor's message
when an update stream for a particular branch ends. It usually provides
update instructions for the users.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="COMMIT_META_KEY_ENDOFLIFE_REBASE"
              value="ostree.endoflife-rebase"
              c:type="OSTREE_COMMIT_META_KEY_ENDOFLIFE_REBASE"
              version="2017.7">
      <doc xml:space="preserve">GVariant type `s`.  Should contain a refspec defining a new target branch;
`ostree admin upgrade` and `OstreeSysrootUpgrader` will automatically initiate
a rebase upon encountering this metadata key.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="COMMIT_META_KEY_REF_BINDING"
              value="ostree.ref-binding"
              c:type="OSTREE_COMMIT_META_KEY_REF_BINDING"
              version="2017.9">
      <doc xml:space="preserve">GVariant type `as`; each element is a branch name. If this is added to a
commit, `ostree_repo_pull()` will enforce that the commit was retrieved from
one of the branch names in this array.  This prevents "sidegrade" attacks.
The rationale for having this support multiple branch names is that it helps
support a "promotion" model of taking a commit and moving it between development
and production branches.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="COMMIT_META_KEY_VERSION"
              value="version"
              c:type="OSTREE_COMMIT_META_KEY_VERSION"
              version="2014.9">
      <doc xml:space="preserve">GVariant type `s`. This metadata key is used for version numbers. A freeform
string; the intention is that systems using ostree do not interpret this
semantically as traditional package managers do.

This is the only ostree-defined metadata key that does not start with `ostree.`.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="ChecksumInputStream"
           c:symbol-prefix="checksum_input_stream"
           c:type="OstreeChecksumInputStream"
           parent="Gio.FilterInputStream"
           glib:type-name="OstreeChecksumInputStream"
           glib:get-type="ostree_checksum_input_stream_get_type"
           glib:type-struct="ChecksumInputStreamClass">
      <constructor name="new" c:identifier="ostree_checksum_input_stream_new">
        <return-value transfer-ownership="full">
          <type name="ChecksumInputStream"
                c:type="OstreeChecksumInputStream*"/>
        </return-value>
        <parameters>
          <parameter name="stream" transfer-ownership="none">
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <type name="GLib.Checksum" c:type="GChecksum*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="checksum"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <field name="parent_instance">
        <type name="Gio.FilterInputStream" c:type="GFilterInputStream"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ChecksumInputStreamPrivate"
              c:type="OstreeChecksumInputStreamPrivate*"/>
      </field>
    </class>
    <record name="ChecksumInputStreamClass"
            c:type="OstreeChecksumInputStreamClass"
            glib:is-gtype-struct-for="ChecksumInputStream">
      <field name="parent_class">
        <type name="Gio.FilterInputStreamClass"
              c:type="GFilterInputStreamClass"/>
      </field>
      <field name="_g_reserved1" introspectable="0">
        <callback name="_g_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_g_reserved2" introspectable="0">
        <callback name="_g_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_g_reserved3" introspectable="0">
        <callback name="_g_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_g_reserved4" introspectable="0">
        <callback name="_g_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_g_reserved5" introspectable="0">
        <callback name="_g_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="ChecksumInputStreamPrivate"
            c:type="OstreeChecksumInputStreamPrivate"
            disguised="1">
    </record>
    <record name="CmdPrivateVTable" c:type="OstreeCmdPrivateVTable">
      <field name="ostree_system_generator">
        <callback name="ostree_system_generator" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="ostree_cmdline" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="normal_dir" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="early_dir" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="late_dir" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ostree_generate_grub2_config">
        <callback name="ostree_generate_grub2_config" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="sysroot" transfer-ownership="none">
              <type name="Sysroot" c:type="OstreeSysroot*"/>
            </parameter>
            <parameter name="bootversion" transfer-ownership="none">
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="target_fd" transfer-ownership="none">
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="cancellable" transfer-ownership="none">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ostree_static_delta_dump">
        <callback name="ostree_static_delta_dump" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="repo" transfer-ownership="none">
              <type name="Repo" c:type="OstreeRepo*"/>
            </parameter>
            <parameter name="delta_id" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="cancellable" transfer-ownership="none">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ostree_static_delta_query_exists">
        <callback name="ostree_static_delta_query_exists" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="repo" transfer-ownership="none">
              <type name="Repo" c:type="OstreeRepo*"/>
            </parameter>
            <parameter name="delta_id" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="out_exists" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean*"/>
            </parameter>
            <parameter name="cancellable" transfer-ownership="none">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="ostree_static_delta_delete">
        <callback name="ostree_static_delta_delete" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="repo" transfer-ownership="none">
              <type name="Repo" c:type="OstreeRepo*"/>
            </parameter>
            <parameter name="delta_id" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="cancellable" transfer-ownership="none">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="CollectionRef" c:type="OstreeCollectionRef" version="2017.8">
      <doc xml:space="preserve">A structure which globally uniquely identifies a ref as the tuple
(@collection_id, @ref_name). For backwards compatibility, @collection_id may be %NULL,
indicating a ref name which is not globally unique.</doc>
      <field name="collection_id" writable="1">
        <doc xml:space="preserve">collection ID which provided the ref, or %NULL if there
   is no associated collection</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="ref_name" writable="1">
        <doc xml:space="preserve">ref name</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <function name="dupv"
                c:identifier="ostree_collection_ref_dupv"
                version="2017.8">
        <doc xml:space="preserve">Copy an array of #OstreeCollectionRefs, including deep copies of all its
elements. @refs must be %NULL-terminated; it may be empty, but must not be
%NULL.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated copy of @refs</doc>
          <array c:type="OstreeCollectionRef**">
            <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">%NULL-terminated array of #OstreeCollectionRefs</doc>
            <array c:type="OstreeCollectionRef**">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
        </parameters>
      </function>
      <function name="equal"
                c:identifier="ostree_collection_ref_equal"
                version="2017.8">
        <doc xml:space="preserve">Compare @ref1 and @ref2 and return %TRUE if they have the same collection ID and
ref name, and %FALSE otherwise. Both @ref1 and @ref2 must be non-%NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @ref1 and @ref2 are equal, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="ref1"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">an #OstreeCollectionRef</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
          <parameter name="ref2"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">another #OstreeCollectionRef</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="freev"
                c:identifier="ostree_collection_ref_freev"
                version="2017.8">
        <doc xml:space="preserve">Free the given array of @refs, including freeing all its elements. @refs
must be %NULL-terminated; it may be empty, but must not be %NULL.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="refs" transfer-ownership="full">
            <doc xml:space="preserve">an array of #OstreeCollectionRefs</doc>
            <array c:type="OstreeCollectionRef**">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
        </parameters>
      </function>
      <function name="hash"
                c:identifier="ostree_collection_ref_hash"
                version="2017.8">
        <doc xml:space="preserve">Hash the given @ref. This function is suitable for use with #GHashTable.
@ref must be non-%NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">hash value for @ref</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <parameter name="ref"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">an #OstreeCollectionRef</doc>
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <constant name="DIRMETA_GVARIANT_STRING"
              value="(uuua(ayay))"
              c:type="OSTREE_DIRMETA_GVARIANT_STRING">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="Deployment"
           c:symbol-prefix="deployment"
           c:type="OstreeDeployment"
           parent="GObject.Object"
           glib:type-name="OstreeDeployment"
           glib:get-type="ostree_deployment_get_type">
      <constructor name="new" c:identifier="ostree_deployment_new">
        <return-value transfer-ownership="full">
          <type name="Deployment" c:type="OstreeDeployment*"/>
        </return-value>
        <parameters>
          <parameter name="index" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="osname" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="csum" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="deployserial" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="bootcsum" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="bootserial" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="hash" c:identifier="ostree_deployment_hash">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <parameter name="v"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="unlocked_state_to_string"
                c:identifier="ostree_deployment_unlocked_state_to_string">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="state" transfer-ownership="none">
            <type name="DeploymentUnlockedState"
                  c:type="OstreeDeploymentUnlockedState"/>
          </parameter>
        </parameters>
      </function>
      <method name="clone" c:identifier="ostree_deployment_clone">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">New deep copy of @self</doc>
          <type name="Deployment" c:type="OstreeDeployment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="ostree_deployment_equal">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if deployments have the same osname, csum, and deployserial</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ap" transfer-ownership="none">
            <doc xml:space="preserve">A deployment</doc>
            <type name="Deployment" c:type="gconstpointer"/>
          </instance-parameter>
          <parameter name="bp" transfer-ownership="none">
            <doc xml:space="preserve">A deployment</doc>
            <type name="Deployment" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bootconfig"
              c:identifier="ostree_deployment_get_bootconfig">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Boot configuration</doc>
          <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bootcsum"
              c:identifier="ostree_deployment_get_bootcsum">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bootserial"
              c:identifier="ostree_deployment_get_bootserial">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_csum" c:identifier="ostree_deployment_get_csum">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_deployserial"
              c:identifier="ostree_deployment_get_deployserial">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_index" c:identifier="ostree_deployment_get_index">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_origin" c:identifier="ostree_deployment_get_origin">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Origin</doc>
          <type name="GLib.KeyFile" c:type="GKeyFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_origin_relpath"
              c:identifier="ostree_deployment_get_origin_relpath">
        <doc xml:space="preserve">Note this function only returns a *relative* path - if you want to
access, it, you must either use fd-relative api such as openat(),
or concatenate it with the full ostree_sysroot_get_path().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Path to deployment root directory, relative to sysroot</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_osname" c:identifier="ostree_deployment_get_osname">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_unlocked"
              c:identifier="ostree_deployment_get_unlocked">
        <return-value transfer-ownership="none">
          <type name="DeploymentUnlockedState"
                c:type="OstreeDeploymentUnlockedState"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_bootconfig"
              c:identifier="ostree_deployment_set_bootconfig">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
          <parameter name="bootconfig" transfer-ownership="none">
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_bootserial"
              c:identifier="ostree_deployment_set_bootserial">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_index" c:identifier="ostree_deployment_set_index">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_origin" c:identifier="ostree_deployment_set_origin">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
          <parameter name="origin" transfer-ownership="none">
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <enumeration name="DeploymentUnlockedState"
                 c:type="OstreeDeploymentUnlockedState">
      <member name="none"
              value="0"
              c:identifier="OSTREE_DEPLOYMENT_UNLOCKED_NONE">
      </member>
      <member name="development"
              value="1"
              c:identifier="OSTREE_DEPLOYMENT_UNLOCKED_DEVELOPMENT">
      </member>
      <member name="hotfix"
              value="2"
              c:identifier="OSTREE_DEPLOYMENT_UNLOCKED_HOTFIX">
      </member>
    </enumeration>
    <record name="DiffDirsOptions" c:type="OstreeDiffDirsOptions">
      <doc xml:space="preserve">An extensible options structure controlling diff dirs. Make sure
that owner_uid/gid is set to -1 when not used. This is used by
ostree_diff_dirs_with_options().</doc>
      <field name="owner_uid" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="owner_gid" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="devino_to_csum_cache" writable="1">
        <type name="RepoDevInoCache" c:type="OstreeRepoDevInoCache*"/>
      </field>
      <field name="unused_bools" writable="1">
        <array zero-terminated="0" c:type="gboolean" fixed-size="7">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
      <field name="unused_ints" writable="1">
        <array zero-terminated="0" c:type="int" fixed-size="6">
          <type name="gint" c:type="int"/>
        </array>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="DiffFlags" c:type="OstreeDiffFlags">
      <member name="none" value="0" c:identifier="OSTREE_DIFF_FLAGS_NONE">
      </member>
      <member name="ignore_xattrs"
              value="1"
              c:identifier="OSTREE_DIFF_FLAGS_IGNORE_XATTRS">
      </member>
    </bitfield>
    <record name="DiffItem"
            c:type="OstreeDiffItem"
            glib:type-name="OstreeDiffItem"
            glib:get-type="ostree_diff_item_get_type"
            c:symbol-prefix="diff_item">
      <field name="refcount" writable="1">
        <type name="gint" c:type="volatile gint"/>
      </field>
      <field name="src" writable="1">
        <type name="Gio.File" c:type="GFile*"/>
      </field>
      <field name="target" writable="1">
        <type name="Gio.File" c:type="GFile*"/>
      </field>
      <field name="src_info" writable="1">
        <type name="Gio.FileInfo" c:type="GFileInfo*"/>
      </field>
      <field name="target_info" writable="1">
        <type name="Gio.FileInfo" c:type="GFileInfo*"/>
      </field>
      <field name="src_checksum" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="target_checksum" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <method name="ref" c:identifier="ostree_diff_item_ref">
        <return-value transfer-ownership="full">
          <type name="DiffItem" c:type="OstreeDiffItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="diffitem" transfer-ownership="none">
            <type name="DiffItem" c:type="OstreeDiffItem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="ostree_diff_item_unref">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="diffitem" transfer-ownership="none">
            <type name="DiffItem" c:type="OstreeDiffItem*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <constant name="FILEMETA_GVARIANT_STRING"
              value="(uuua(ayay))"
              c:type="OSTREE_FILEMETA_GVARIANT_STRING">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <enumeration name="GpgError"
                 version="2017.10"
                 c:type="OstreeGpgError"
                 glib:error-domain="OstreeGpgError">
      <doc xml:space="preserve">Errors returned by signature creation and verification operations in OSTree.
These may be returned by any API which creates or verifies signatures.</doc>
      <member name="no_signature"
              value="0"
              c:identifier="OSTREE_GPG_ERROR_NO_SIGNATURE">
        <doc xml:space="preserve">A signature was expected, but not found.</doc>
      </member>
      <member name="invalid_signature"
              value="1"
              c:identifier="OSTREE_GPG_ERROR_INVALID_SIGNATURE">
        <doc xml:space="preserve">A signature was malformed.</doc>
      </member>
      <member name="missing_key"
              value="2"
              c:identifier="OSTREE_GPG_ERROR_MISSING_KEY">
        <doc xml:space="preserve">A signature was found, but was created with a key not in the configured keyrings.</doc>
      </member>
    </enumeration>
    <enumeration name="GpgSignatureAttr" c:type="OstreeGpgSignatureAttr">
      <doc xml:space="preserve">Signature attributes available from an #OstreeGpgVerifyResult.
The attribute's #GVariantType is shown in brackets.</doc>
      <member name="valid"
              value="0"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_VALID">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_BOOLEAN] Is the signature valid?</doc>
      </member>
      <member name="sig_expired"
              value="1"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_SIG_EXPIRED">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_BOOLEAN] Has the signature expired?</doc>
      </member>
      <member name="key_expired"
              value="2"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_KEY_EXPIRED">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_BOOLEAN] Has the signing key expired?</doc>
      </member>
      <member name="key_revoked"
              value="3"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_KEY_REVOKED">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_BOOLEAN] Has the signing key been revoked?</doc>
      </member>
      <member name="key_missing"
              value="4"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_KEY_MISSING">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_BOOLEAN] Is the signing key missing?</doc>
      </member>
      <member name="fingerprint"
              value="5"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_FINGERPRINT">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_STRING] Fingerprint of the signing key</doc>
      </member>
      <member name="timestamp"
              value="6"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_TIMESTAMP">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_INT64] Signature creation Unix timestamp</doc>
      </member>
      <member name="exp_timestamp"
              value="7"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_EXP_TIMESTAMP">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_INT64] Signature expiration Unix timestamp (0 if no
  expiration)</doc>
      </member>
      <member name="pubkey_algo_name"
              value="8"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_PUBKEY_ALGO_NAME">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_STRING] Name of the public key algorithm used to create
  the signature</doc>
      </member>
      <member name="hash_algo_name"
              value="9"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_HASH_ALGO_NAME">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_STRING] Name of the hash algorithm used to create the
  signature</doc>
      </member>
      <member name="user_name"
              value="10"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_USER_NAME">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_STRING] The name of the signing key's primary user</doc>
      </member>
      <member name="user_email"
              value="11"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_USER_EMAIL">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_STRING] The email address of the signing key's primary
  user</doc>
      </member>
      <member name="fingerprint_primary"
              value="12"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_FINGERPRINT_PRIMARY">
        <doc xml:space="preserve">[#G_VARIANT_TYPE_STRING] Fingerprint of the signing key's primary key
  (will be the same as OSTREE_GPG_SIGNATURE_ATTR_FINGERPRINT if the
  the signature is already from the primary key rather than a subkey,
  and will be the empty string if the key is missing.)</doc>
      </member>
    </enumeration>
    <enumeration name="GpgSignatureFormatFlags"
                 c:type="OstreeGpgSignatureFormatFlags">
      <doc xml:space="preserve">Formatting flags for ostree_gpg_verify_result_describe().  Currently
there's only one possible output format, but this enumeration allows
for future variations.</doc>
      <member name="gpg_signature_format_default"
              value="0"
              c:identifier="OSTREE_GPG_SIGNATURE_FORMAT_DEFAULT">
        <doc xml:space="preserve">Use the default output format</doc>
      </member>
    </enumeration>
    <record name="GpgVerifier" c:type="OstreeGpgVerifier" disguised="1">
    </record>
    <class name="GpgVerifyResult"
           c:symbol-prefix="gpg_verify_result"
           c:type="OstreeGpgVerifyResult"
           parent="GObject.Object"
           glib:type-name="OstreeGpgVerifyResult"
           glib:get-type="ostree_gpg_verify_result_get_type">
      <implements name="Gio.Initable"/>
      <function name="describe_variant"
                c:identifier="ostree_gpg_verify_result_describe_variant">
        <doc xml:space="preserve">Similar to ostree_gpg_verify_result_describe() but takes a #GVariant of
all attributes for a GPG signature instead of an #OstreeGpgVerifyResult
and signature index.

The @variant &lt;emphasis&gt;MUST&lt;/emphasis&gt; have been created by
ostree_gpg_verify_result_get_all().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">a #GVariant from ostree_gpg_verify_result_get_all()</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="output_buffer" transfer-ownership="none">
            <doc xml:space="preserve">a #GString to hold the description</doc>
            <type name="GLib.String" c:type="GString*"/>
          </parameter>
          <parameter name="line_prefix"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional line prefix string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">flags to adjust the description format</doc>
            <type name="GpgSignatureFormatFlags"
                  c:type="OstreeGpgSignatureFormatFlags"/>
          </parameter>
        </parameters>
      </function>
      <method name="count_all"
              c:identifier="ostree_gpg_verify_result_count_all">
        <doc xml:space="preserve">Counts all the signatures in @result.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">signature count</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="count_valid"
              c:identifier="ostree_gpg_verify_result_count_valid">
        <doc xml:space="preserve">Counts only the valid signatures in @result.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">valid signature count</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="describe" c:identifier="ostree_gpg_verify_result_describe">
        <doc xml:space="preserve">Appends a brief, human-readable description of the GPG signature at
@signature_index in @result to the @output_buffer.  The description
spans multiple lines.  A @line_prefix string, if given, will precede
each line of the description.

The @flags argument is reserved for future variations to the description
format.  Currently must be 0.

It is a programmer error to request an invalid @signature_index.  Use
ostree_gpg_verify_result_count_all() to find the number of signatures in
@result.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
          <parameter name="signature_index" transfer-ownership="none">
            <doc xml:space="preserve">which signature to describe</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="output_buffer" transfer-ownership="none">
            <doc xml:space="preserve">a #GString to hold the description</doc>
            <type name="GLib.String" c:type="GString*"/>
          </parameter>
          <parameter name="line_prefix"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional line prefix string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">flags to adjust the description format</doc>
            <type name="GpgSignatureFormatFlags"
                  c:type="OstreeGpgSignatureFormatFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="get" c:identifier="ostree_gpg_verify_result_get">
        <doc xml:space="preserve">Builds a #GVariant tuple of requested attributes for the GPG signature at
@signature_index in @result.  See the #OstreeGpgSignatureAttr description
for the #GVariantType of each available attribute.

It is a programmer error to request an invalid #OstreeGpgSignatureAttr or
an invalid @signature_index.  Use ostree_gpg_verify_result_count_all() to
find the number of signatures in @result.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new, floating, #GVariant tuple</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
          <parameter name="signature_index" transfer-ownership="none">
            <doc xml:space="preserve">which signature to get attributes from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve">Array of requested attributes</doc>
            <array length="2"
                   zero-terminated="0"
                   c:type="OstreeGpgSignatureAttr*">
              <type name="GpgSignatureAttr" c:type="OstreeGpgSignatureAttr"/>
            </array>
          </parameter>
          <parameter name="n_attrs" transfer-ownership="none">
            <doc xml:space="preserve">Length of the @attrs array</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_all" c:identifier="ostree_gpg_verify_result_get_all">
        <doc xml:space="preserve">Builds a #GVariant tuple of all available attributes for the GPG signature
at @signature_index in @result.

The child values in the returned #GVariant tuple are ordered to match the
#OstreeGpgSignatureAttr enumeration, which means the enum values can be
used as index values in functions like g_variant_get_child().  See the
#OstreeGpgSignatureAttr description for the #GVariantType of each
available attribute.

&lt;note&gt;
  &lt;para&gt;
    The #OstreeGpgSignatureAttr enumeration may be extended in the future
    with new attributes, which would affect the #GVariant tuple returned by
    this function.  While the position and type of current child values in
    the #GVariant tuple will not change, to avoid backward-compatibility
    issues &lt;emphasis&gt;please do not depend on the tuple's overall size or
    type signature&lt;/emphasis&gt;.
  &lt;/para&gt;
&lt;/note&gt;

It is a programmer error to request an invalid @signature_index.  Use
ostree_gpg_verify_result_count_all() to find the number of signatures in
@result.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new, floating, #GVariant tuple</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
          <parameter name="signature_index" transfer-ownership="none">
            <doc xml:space="preserve">which signature to get attributes from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup" c:identifier="ostree_gpg_verify_result_lookup">
        <doc xml:space="preserve">Searches @result for a signature signed by @key_id.  If a match is found,
the function returns %TRUE and sets @out_signature_index so that further
signature details can be obtained through ostree_gpg_verify_result_get().
If no match is found, the function returns %FALSE and leaves
@out_signature_index unchanged.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
          <parameter name="key_id" transfer-ownership="none">
            <doc xml:space="preserve">a GPG key ID or fingerprint</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_signature_index"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">return location for the index of the signature
                             signed by @key_id, or %NULL</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="require_valid_signature"
              c:identifier="ostree_gpg_verify_result_require_valid_signature"
              throws="1">
        <doc xml:space="preserve">Checks if the result contains at least one signature from the
trusted keyring.  You can call this function immediately after
ostree_repo_verify_summary() or ostree_repo_verify_commit_ext() -
it will handle the %NULL @result and filled @error too.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @result was not %NULL and had at least one
signature from trusted keyring, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="result"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="LibarchiveInputStream" c:type="OstreeLibarchiveInputStream">
      <field name="parent_instance" writable="1">
        <type name="Gio.InputStream" c:type="GInputStream"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="LibarchiveInputStreamPrivate"
              c:type="OstreeLibarchiveInputStreamPrivate*"/>
      </field>
    </record>
    <record name="LibarchiveInputStreamClass"
            c:type="OstreeLibarchiveInputStreamClass">
      <field name="parent_class" writable="1">
        <type name="Gio.InputStreamClass" c:type="GInputStreamClass"/>
      </field>
      <field name="_g_reserved1" introspectable="0">
        <callback name="_g_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_g_reserved2" introspectable="0">
        <callback name="_g_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_g_reserved3" introspectable="0">
        <callback name="_g_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_g_reserved4" introspectable="0">
        <callback name="_g_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_g_reserved5" introspectable="0">
        <callback name="_g_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="LibarchiveInputStreamPrivate"
            c:type="OstreeLibarchiveInputStreamPrivate"
            disguised="1">
    </record>
    <record name="LzmaCompressor" c:type="OstreeLzmaCompressor" disguised="1">
      <doc xml:space="preserve">Zlib decompression</doc>
    </record>
    <record name="LzmaCompressorClass" c:type="OstreeLzmaCompressorClass">
      <field name="parent_class" writable="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="LzmaDecompressor"
            c:type="OstreeLzmaDecompressor"
            disguised="1">
    </record>
    <record name="LzmaDecompressorClass" c:type="OstreeLzmaDecompressorClass">
      <field name="parent_class" writable="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <constant name="MAX_METADATA_SIZE"
              value="10485760"
              c:type="OSTREE_MAX_METADATA_SIZE">
      <doc xml:space="preserve">Maximum permitted size in bytes of metadata objects.  This is an
arbitrary number, but really, no one should be putting humongous
data in metadata.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MAX_METADATA_WARN_SIZE"
              value="7340032"
              c:type="OSTREE_MAX_METADATA_WARN_SIZE">
      <doc xml:space="preserve">Objects committed above this size will be allowed, but a warning
will be emitted.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="MutableTree"
           c:symbol-prefix="mutable_tree"
           c:type="OstreeMutableTree"
           parent="GObject.Object"
           glib:type-name="OstreeMutableTree"
           glib:get-type="ostree_mutable_tree_get_type"
           glib:type-struct="MutableTreeClass">
      <doc xml:space="preserve">Private instance structure.</doc>
      <constructor name="new" c:identifier="ostree_mutable_tree_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new tree</doc>
          <type name="MutableTree" c:type="OstreeMutableTree*"/>
        </return-value>
      </constructor>
      <method name="ensure_dir"
              c:identifier="ostree_mutable_tree_ensure_dir"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_subdir" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree**"/>
          </parameter>
        </parameters>
      </method>
      <method name="ensure_parent_dirs"
              c:identifier="ostree_mutable_tree_ensure_parent_dirs"
              throws="1">
        <doc xml:space="preserve">Create all parent trees necessary for the given @split_path to
exist.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="split_path" transfer-ownership="none">
            <doc xml:space="preserve">File path components</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="metadata_checksum" transfer-ownership="none">
            <doc xml:space="preserve">SHA256 checksum for metadata</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_parent"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The parent tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contents_checksum"
              c:identifier="ostree_mutable_tree_get_contents_checksum">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_files" c:identifier="ostree_mutable_tree_get_files">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">All children files (the value is a checksum)</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_metadata_checksum"
              c:identifier="ostree_mutable_tree_get_metadata_checksum">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subdirs"
              c:identifier="ostree_mutable_tree_get_subdirs">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">All children directories</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="MutableTree"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lookup"
              c:identifier="ostree_mutable_tree_lookup"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_file_checksum" transfer-ownership="none">
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="out_subdir" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree**"/>
          </parameter>
        </parameters>
      </method>
      <method name="replace_file"
              c:identifier="ostree_mutable_tree_replace_file"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_contents_checksum"
              c:identifier="ostree_mutable_tree_set_contents_checksum">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_metadata_checksum"
              c:identifier="ostree_mutable_tree_set_metadata_checksum">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="walk" c:identifier="ostree_mutable_tree_walk" throws="1">
        <doc xml:space="preserve">Traverse @start number of elements starting from @split_path; the
child will be returned in @out_subdir.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="split_path" transfer-ownership="none">
            <doc xml:space="preserve">Split pathname</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">Descend from this number of elements in @split_path</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="out_subdir"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Target parent</doc>
            <type name="MutableTree" c:type="OstreeMutableTree**"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="MutableTreeClass"
            c:type="OstreeMutableTreeClass"
            glib:is-gtype-struct-for="MutableTree">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="MutableTreeIter" c:type="OstreeMutableTreeIter">
      <field name="in_files" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="iter" writable="1">
        <type name="GLib.HashTableIter" c:type="GHashTableIter"/>
      </field>
    </record>
    <enumeration name="ObjectType" c:type="OstreeObjectType">
      <doc xml:space="preserve">Enumeration for core object types; %OSTREE_OBJECT_TYPE_FILE is for
content, the other types are metadata.</doc>
      <member name="file" value="1" c:identifier="OSTREE_OBJECT_TYPE_FILE">
        <doc xml:space="preserve">Content; regular file, symbolic link</doc>
      </member>
      <member name="dir_tree"
              value="2"
              c:identifier="OSTREE_OBJECT_TYPE_DIR_TREE">
        <doc xml:space="preserve">List of children (trees or files), and metadata</doc>
      </member>
      <member name="dir_meta"
              value="3"
              c:identifier="OSTREE_OBJECT_TYPE_DIR_META">
        <doc xml:space="preserve">Directory metadata</doc>
      </member>
      <member name="commit" value="4" c:identifier="OSTREE_OBJECT_TYPE_COMMIT">
        <doc xml:space="preserve">Toplevel object, refers to tree and dirmeta for root</doc>
      </member>
      <member name="tombstone_commit"
              value="5"
              c:identifier="OSTREE_OBJECT_TYPE_TOMBSTONE_COMMIT">
        <doc xml:space="preserve">Toplevel object, refers to a deleted commit</doc>
      </member>
      <member name="commit_meta"
              value="6"
              c:identifier="OSTREE_OBJECT_TYPE_COMMIT_META">
        <doc xml:space="preserve">Detached metadata for a commit</doc>
      </member>
    </enumeration>
    <constant name="RELEASE_VERSION"
              value="12"
              c:type="OSTREE_RELEASE_VERSION"
              version="2017.4">
      <doc xml:space="preserve">ostree release version component (e.g. 2 if %OSTREE_VERSION is 2017.2)</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="REPO_METADATA_REF"
              value="ostree-metadata"
              c:type="OSTREE_REPO_METADATA_REF">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="Remote" c:type="OstreeRemote" disguised="1" version="2017.6">
      <doc xml:space="preserve">This represents the configuration for a single remote repository. Currently,
remotes can only be passed around as (reference counted) opaque handles. In
future, more API may be added to create and interrogate them.</doc>
      <method name="get_name"
              c:identifier="ostree_remote_get_name"
              version="2017.7">
        <doc xml:space="preserve">Get the human-readable name of the remote. This is what the user configured,
if the remote was explicitly configured; and will otherwise be a stable,
arbitrary, string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">remote’s name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="remote" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRemote</doc>
            <type name="Remote" c:type="OstreeRemote*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="Repo"
           c:symbol-prefix="repo"
           c:type="OstreeRepo"
           parent="GObject.Object"
           glib:type-name="OstreeRepo"
           glib:get-type="ostree_repo_get_type">
      <constructor name="new" c:identifier="ostree_repo_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An accessor object for an OSTree repository located at @path</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">Path to a repository</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_default" c:identifier="ostree_repo_new_default">
        <doc xml:space="preserve">If the current working directory appears to be an OSTree
repository, create a new #OstreeRepo object for accessing it.
Otherwise use the path in the OSTREE_REPO environment variable
(if defined) or else the default system repository located at
/ostree/repo.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An accessor object for an OSTree repository located at /ostree/repo</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </return-value>
      </constructor>
      <constructor name="new_for_sysroot_path"
                   c:identifier="ostree_repo_new_for_sysroot_path">
        <doc xml:space="preserve">Creates a new #OstreeRepo instance, taking the system root path explicitly
instead of assuming "/".</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An accessor object for the OSTree repository located at @repo_path.</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </return-value>
        <parameters>
          <parameter name="repo_path" transfer-ownership="none">
            <doc xml:space="preserve">Path to a repository</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="sysroot_path" transfer-ownership="none">
            <doc xml:space="preserve">Path to the system root</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="create_at"
                c:identifier="ostree_repo_create_at"
                throws="1">
        <doc xml:space="preserve">This is a file-descriptor relative version of ostree_repo_create().
Create the underlying structure on disk for the repository, and call
ostree_repo_open_at() on the result, preparing it for use.

If a repository already exists at @dfd + @path (defined by an `objects/`
subdirectory existing), then this function will simply call
ostree_repo_open_at().  In other words, this function cannot be used to change
the mode or configuration (`repo/config`) of an existing repo.

The @options dict may contain:

  - collection-id: s: Set as collection ID in repo/config (Since 2017.9)</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new OSTree repository reference</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </return-value>
        <parameters>
          <parameter name="dfd" transfer-ownership="none">
            <doc xml:space="preserve">Directory fd</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">Path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">The mode to store the repository in</doc>
            <type name="RepoMode" c:type="OstreeRepoMode"/>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a{sv}: See below for accepted keys</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="mode_from_string"
                c:identifier="ostree_repo_mode_from_string"
                throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="mode" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_mode" transfer-ownership="none">
            <type name="RepoMode" c:type="OstreeRepoMode*"/>
          </parameter>
        </parameters>
      </function>
      <function name="open_at" c:identifier="ostree_repo_open_at" throws="1">
        <doc xml:space="preserve">This combines ostree_repo_new() (but using fd-relative access) with
ostree_repo_open().  Use this when you know you should be operating on an
already extant repository.  If you want to create one, use ostree_repo_create_at().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An accessor object for an OSTree repository located at @dfd + @path</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </return-value>
        <parameters>
          <parameter name="dfd" transfer-ownership="none">
            <doc xml:space="preserve">Directory fd</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">Path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="pull_default_console_progress_changed"
                c:identifier="ostree_repo_pull_default_console_progress_changed">
        <doc xml:space="preserve">Convenient "changed" callback for use with
ostree_async_progress_new_and_connect() when pulling from a remote
repository.

Depending on the state of the #OstreeAsyncProgress, either displays a
custom status message, or else outstanding fetch progress in bytes/sec,
or else outstanding content or metadata writes to the repository in
number of objects.

Compatibility note: this function previously assumed that @user_data
was a pointer to a #GSConsole instance.  This is no longer the case,
and @user_data is ignored.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="progress" transfer-ownership="none">
            <doc xml:space="preserve">Async progress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">User data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="traverse_new_reachable"
                c:identifier="ostree_repo_traverse_new_reachable">
        <doc xml:space="preserve">This hash table is a set of #GVariant which can be accessed via
ostree_object_name_deserialize().</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">A new hash table</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="GLib.Variant"/>
            <type name="GLib.Variant"/>
          </type>
        </return-value>
      </function>
      <method name="abort_transaction"
              c:identifier="ostree_repo_abort_transaction"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_gpg_signature_summary"
              c:identifier="ostree_repo_add_gpg_signature_summary"
              throws="1">
        <doc xml:space="preserve">Add a GPG signature to a summary file.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="key_id" transfer-ownership="none">
            <doc xml:space="preserve">NULL-terminated array of GPG keys.</doc>
            <array c:type="gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="homedir"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">GPG home directory, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="append_gpg_signature"
              c:identifier="ostree_repo_append_gpg_signature"
              throws="1">
        <doc xml:space="preserve">Append a GPG signature to a commit.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve">SHA256 of given commit to sign</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="signature_bytes" transfer-ownership="none">
            <doc xml:space="preserve">Signature data</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="checkout_at"
              c:identifier="ostree_repo_checkout_at"
              throws="1">
        <doc xml:space="preserve">Similar to ostree_repo_checkout_tree(), but uses directory-relative
paths for the destination, uses a new `OstreeRepoCheckoutAtOptions`,
and takes a commit checksum and optional subpath pair, rather than
requiring use of `GFile` APIs for the caller.

It also replaces ostree_repo_checkout_at() which was not safe to
use with GObject introspection.

Note in addition that unlike ostree_repo_checkout_tree(), the
default is not to use the repository-internal uncompressed objects
cache.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Options</doc>
            <type name="RepoCheckoutAtOptions"
                  c:type="OstreeRepoCheckoutAtOptions*"/>
          </parameter>
          <parameter name="destination_dfd" transfer-ownership="none">
            <doc xml:space="preserve">Directory FD for destination</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="destination_path" transfer-ownership="none">
            <doc xml:space="preserve">Directory for destination</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="commit" transfer-ownership="none">
            <doc xml:space="preserve">Checksum for commit</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="checkout_gc"
              c:identifier="ostree_repo_checkout_gc"
              throws="1">
        <doc xml:space="preserve">Call this after finishing a succession of checkout operations; it
will delete any currently-unused uncompressed objects from the
cache.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="checkout_tree"
              c:identifier="ostree_repo_checkout_tree"
              throws="1">
        <doc xml:space="preserve">Check out @source into @destination, which must live on the
physical filesystem.  @source may be any subdirectory of a given
commit.  The @mode and @overwrite_mode allow control over how the
files are checked out.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">Options controlling all files</doc>
            <type name="RepoCheckoutMode" c:type="OstreeRepoCheckoutMode"/>
          </parameter>
          <parameter name="overwrite_mode" transfer-ownership="none">
            <doc xml:space="preserve">Whether or not to overwrite files</doc>
            <type name="RepoCheckoutOverwriteMode"
                  c:type="OstreeRepoCheckoutOverwriteMode"/>
          </parameter>
          <parameter name="destination" transfer-ownership="none">
            <doc xml:space="preserve">Place tree here</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">Source tree</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </parameter>
          <parameter name="source_info" transfer-ownership="none">
            <doc xml:space="preserve">Source info</doc>
            <type name="Gio.FileInfo" c:type="GFileInfo*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="checkout_tree_at"
              c:identifier="ostree_repo_checkout_tree_at"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">Similar to ostree_repo_checkout_tree(), but uses directory-relative
paths for the destination, uses a new `OstreeRepoCheckoutAtOptions`,
and takes a commit checksum and optional subpath pair, rather than
requiring use of `GFile` APIs for the caller.

Note in addition that unlike ostree_repo_checkout_tree(), the
default is not to use the repository-internal uncompressed objects
cache.

This function is deprecated.  Use ostree_repo_checkout_at() instead.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Options</doc>
            <type name="RepoCheckoutOptions"
                  c:type="OstreeRepoCheckoutOptions*"/>
          </parameter>
          <parameter name="destination_dfd" transfer-ownership="none">
            <doc xml:space="preserve">Directory FD for destination</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="destination_path" transfer-ownership="none">
            <doc xml:space="preserve">Directory for destination</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="commit" transfer-ownership="none">
            <doc xml:space="preserve">Checksum for commit</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="commit_transaction"
              c:identifier="ostree_repo_commit_transaction"
              throws="1">
        <doc xml:space="preserve">Complete the transaction. Any refs set with
ostree_repo_transaction_set_ref() or
ostree_repo_transaction_set_refspec() will be written out.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="out_stats"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">A set of statistics of things
that happened during this transaction.</doc>
            <type name="RepoTransactionStats"
                  c:type="OstreeRepoTransactionStats*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy_config" c:identifier="ostree_repo_copy_config">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly-allocated copy of the repository config</doc>
          <type name="GLib.KeyFile" c:type="GKeyFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="create" c:identifier="ostree_repo_create" throws="1">
        <doc xml:space="preserve">Create the underlying structure on disk for the repository, and call
ostree_repo_open() on the result, preparing it for use.

Since version 2016.8, this function will succeed on an existing
repository, and finish creating any necessary files in a partially
created repository.  However, this function cannot change the mode
of an existing repository, and will silently ignore an attempt to
do so.

Since 2017.9, "existing repository" is defined by the existence of an
`objects` subdirectory.

This function predates ostree_repo_create_at(). It is an error to call
this function on a repository initialized via ostree_repo_open_at().</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">The mode to store the repository in</doc>
            <type name="RepoMode" c:type="OstreeRepoMode"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_object"
              c:identifier="ostree_repo_delete_object"
              throws="1">
        <doc xml:space="preserve">Remove the object of type @objtype with checksum @sha256
from the repository.  An error of type %G_IO_ERROR_NOT_FOUND
is thrown if the object does not exist.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="sha256" transfer-ownership="none">
            <doc xml:space="preserve">Checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="ostree_repo_equal" version="2017.12">
        <doc xml:space="preserve">Check whether two opened repositories are the same on disk: if their root
directories are the same inode. If @a or @b are not open yet (due to
ostree_repo_open() not being called on them yet), %FALSE will be returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @a and @b are the same repository on disk, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="a" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="b" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
        </parameters>
      </method>
      <method name="export_tree_to_archive"
              c:identifier="ostree_repo_export_tree_to_archive"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">Import an archive file @archive into the repository, and write its
file structure to @mtree.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="opts" transfer-ownership="none">
            <doc xml:space="preserve">Options controlling conversion</doc>
            <type name="RepoExportArchiveOptions"
                  c:type="OstreeRepoExportArchiveOptions*"/>
          </parameter>
          <parameter name="root" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepoFile for the base directory</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </parameter>
          <parameter name="archive"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A `struct archive`, but specified as void to avoid a dependency on the libarchive headers</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_config" c:identifier="ostree_repo_get_config">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The repository configuration; do not modify</doc>
          <type name="GLib.KeyFile" c:type="GKeyFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_dfd" c:identifier="ostree_repo_get_dfd">
        <doc xml:space="preserve">In some cases it's useful for applications to access the repository
directly; for example, writing content into `repo/tmp` ensures it's
on the same filesystem.  Another case is detecting the mtime on the
repository (to see whether a ref was written).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">File descriptor for repository root - owned by @self</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_disable_fsync"
              c:identifier="ostree_repo_get_disable_fsync">
        <doc xml:space="preserve">For more information see ostree_repo_set_disable_fsync().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether or not fsync() is enabled for this repo.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mode" c:identifier="ostree_repo_get_mode">
        <return-value transfer-ownership="none">
          <type name="RepoMode" c:type="OstreeRepoMode"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent" c:identifier="ostree_repo_get_parent">
        <doc xml:space="preserve">Before this function can be used, ostree_repo_init() must have been
called.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Parent repository, or %NULL if none</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_path" c:identifier="ostree_repo_get_path">
        <doc xml:space="preserve">Note that since the introduction of ostree_repo_open_at(), this function may
return a process-specific path in `/proc` if the repository was created using
that API. In general, you should avoid use of this API.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Path to repo</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remote_boolean_option"
              c:identifier="ostree_repo_get_remote_boolean_option"
              throws="1">
        <doc xml:space="preserve">OSTree remotes are represented by keyfile groups, formatted like:
`[remote "remotename"]`. This function returns a value named @option_name
underneath that group, and returns it as a boolean.
If the option is not set, @out_value will be set to @default_value. If an
error is returned, @out_value will be set to %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, otherwise %FALSE with @error set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve">Name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="option_name" transfer-ownership="none">
            <doc xml:space="preserve">Option</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <doc xml:space="preserve">Value returned if @option_name is not present</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="out_value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location to store the result.</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_remote_list_option"
              c:identifier="ostree_repo_get_remote_list_option"
              throws="1">
        <doc xml:space="preserve">OSTree remotes are represented by keyfile groups, formatted like:
`[remote "remotename"]`. This function returns a value named @option_name
underneath that group, and returns it as a zero terminated array of strings.
If the option is not set, or if an error is returned, @out_value will be set
to %NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, otherwise %FALSE with @error set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve">Name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="option_name" transfer-ownership="none">
            <doc xml:space="preserve">Option</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">location to store the list
           of strings. The list should be freed with
           g_strfreev().</doc>
            <array c:type="char***">
              <type name="utf8" c:type="char**"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="get_remote_option"
              c:identifier="ostree_repo_get_remote_option"
              throws="1">
        <doc xml:space="preserve">OSTree remotes are represented by keyfile groups, formatted like:
`[remote "remotename"]`. This function returns a value named @option_name
underneath that group, or @default_value if the remote exists but not the
option name.  If an error is returned, @out_value will be set to %NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, otherwise %FALSE with @error set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve">Name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="option_name" transfer-ownership="none">
            <doc xml:space="preserve">Option</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="default_value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Value returned if @option_name is not present</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Return location for value</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="gpg_verify_data"
              c:identifier="ostree_repo_gpg_verify_data"
              throws="1">
        <doc xml:space="preserve">Verify @signatures for @data using GPG keys in the keyring for
@remote_name, and return an #OstreeGpgVerifyResult.

The @remote_name parameter can be %NULL. In that case it will do
the verifications using GPG keys in the keyrings of all remotes.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #OstreeGpgVerifyResult, or %NULL on error</doc>
          <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repository</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Name of remote</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">Data as a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signatures" transfer-ownership="none">
            <doc xml:space="preserve">Signatures as a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="keyringdir"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Path to directory GPG keyrings; overrides built-in default if given</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="extra_keyring"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Path to additional keyring file (not a directory)</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="has_object"
              c:identifier="ostree_repo_has_object"
              throws="1">
        <doc xml:space="preserve">Set @out_have_object to %TRUE if @self contains the given object;
%FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%FALSE if an unexpected error occurred, %TRUE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_have_object"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">%TRUE if repository contains object</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="hash" c:identifier="ostree_repo_hash" version="2017.12">
        <doc xml:space="preserve">Calculate a hash value for the given open repository, suitable for use when
putting it into a hash table. It is an error to call this on an #OstreeRepo
which is not yet open, as a persistent hash value cannot be calculated until
the repository is open and the inode of its root directory has been loaded.

This function does no I/O.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">hash value for the #OstreeRepo</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="import_archive_to_mtree"
              c:identifier="ostree_repo_import_archive_to_mtree"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">Import an archive file @archive into the repository, and write its
file structure to @mtree.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="opts" transfer-ownership="none">
            <doc xml:space="preserve">Options structure, ensure this is zeroed, then set specific variables</doc>
            <type name="RepoImportArchiveOptions"
                  c:type="OstreeRepoImportArchiveOptions*"/>
          </parameter>
          <parameter name="archive"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Really this is "struct archive*"</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="mtree" transfer-ownership="none">
            <doc xml:space="preserve">The #OstreeMutableTree to write to</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </parameter>
          <parameter name="modifier"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Optional commit modifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="import_object_from"
              c:identifier="ostree_repo_import_object_from"
              throws="1">
        <doc xml:space="preserve">Copy object named by @objtype and @checksum into @self from the
source repository @source.  If both repositories are of the same
type and on the same filesystem, this will simply be a fast Unix
hard link operation.

Otherwise, a copy will be performed.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Destination repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">Source repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="import_object_from_with_trust"
              c:identifier="ostree_repo_import_object_from_with_trust"
              throws="1">
        <doc xml:space="preserve">Copy object named by @objtype and @checksum into @self from the
source repository @source.  If both repositories are of the same
type and on the same filesystem, this will simply be a fast Unix
hard link operation.

Otherwise, a copy will be performed.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Destination repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">Source repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="trusted" transfer-ownership="none">
            <doc xml:space="preserve">If %TRUE, assume the source repo is valid and trusted</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_system" c:identifier="ostree_repo_is_system">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if this repository is the root-owned system global repository</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve">Repository</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_writable"
              c:identifier="ostree_repo_is_writable"
              throws="1">
        <doc xml:space="preserve">Returns whether the repository is writable by the current user.
If the repository is not writable, the @error indicates why.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if this repository is writable</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_commit_objects_starting_with"
              c:identifier="ostree_repo_list_commit_objects_starting_with"
              throws="1">
        <doc xml:space="preserve">This function synchronously enumerates all commit objects starting
with @start, returning data in @out_commits.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error, and @error will be set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">List commits starting with this checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_commits"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="container">
            <doc xml:space="preserve">
Map of serialized commit name to variant data</doc>
            <type name="GLib.HashTable" c:type="GHashTable**">
              <type name="GLib.Variant"/>
              <type name="GLib.Variant"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_objects"
              c:identifier="ostree_repo_list_objects"
              throws="1">
        <doc xml:space="preserve">This function synchronously enumerates all objects in the
repository, returning data in @out_objects.  @out_objects
maps from keys returned by ostree_object_name_serialize()
to #GVariant values of type %OSTREE_REPO_LIST_OBJECTS_VARIANT_TYPE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error, and @error will be set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Flags controlling enumeration</doc>
            <type name="RepoListObjectsFlags"
                  c:type="OstreeRepoListObjectsFlags"/>
          </parameter>
          <parameter name="out_objects"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="container">
            <doc xml:space="preserve">
Map of serialized object name to variant data</doc>
            <type name="GLib.HashTable" c:type="GHashTable**">
              <type name="GLib.Variant"/>
              <type name="GLib.Variant"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_refs" c:identifier="ostree_repo_list_refs" throws="1">
        <doc xml:space="preserve">If @refspec_prefix is %NULL, list all local and remote refspecs,
with their current values in @out_all_refs.  Otherwise, only list
refspecs which have @refspec_prefix as a prefix.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="refspec_prefix"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Only list refs which match this prefix</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_all_refs"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Mapping from ref to checksum</doc>
            <type name="GLib.HashTable" c:type="GHashTable**">
              <type name="utf8"/>
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_refs_ext"
              c:identifier="ostree_repo_list_refs_ext"
              throws="1">
        <doc xml:space="preserve">If @refspec_prefix is %NULL, list all local and remote refspecs,
with their current values in @out_all_refs.  Otherwise, only list
refspecs which have @refspec_prefix as a prefix.  Differently from
ostree_repo_list_refs(), the prefix will not be removed from the ref
name.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="refspec_prefix"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Only list refs which match this prefix</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_all_refs"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Mapping from ref to checksum</doc>
            <type name="GLib.HashTable" c:type="GHashTable**">
              <type name="utf8"/>
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Options controlling listing behavior</doc>
            <type name="RepoListRefsExtFlags"
                  c:type="OstreeRepoListRefsExtFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_static_delta_names"
              c:identifier="ostree_repo_list_static_delta_names"
              throws="1">
        <doc xml:space="preserve">This function synchronously enumerates all static deltas in the
repository, returning its result in @out_deltas.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="out_deltas"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="container">
            <doc xml:space="preserve">String name of deltas (checksum-checksum.delta)</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_commit"
              c:identifier="ostree_repo_load_commit"
              throws="1">
        <doc xml:space="preserve">A version of ostree_repo_load_variant() specialized to commits,
capable of returning extended state information.  Currently
the only extended state is %OSTREE_REPO_COMMIT_STATE_PARTIAL, which
means that only a sub-path of the commit is available.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">Commit checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_commit"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Commit</doc>
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
          <parameter name="out_state"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Commit state</doc>
            <type name="RepoCommitState" c:type="OstreeRepoCommitState*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_file" c:identifier="ostree_repo_load_file" throws="1">
        <doc xml:space="preserve">Load content object, decomposing it into three parts: the actual
content (for regular files), the metadata, and extended attributes.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_input"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">File content</doc>
            <type name="Gio.InputStream" c:type="GInputStream**"/>
          </parameter>
          <parameter name="out_file_info"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">File information</doc>
            <type name="Gio.FileInfo" c:type="GFileInfo**"/>
          </parameter>
          <parameter name="out_xattrs"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Extended attributes</doc>
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_object_stream"
              c:identifier="ostree_repo_load_object_stream"
              throws="1">
        <doc xml:space="preserve">Load object as a stream; useful when copying objects between
repositories.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_input"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Stream for object</doc>
            <type name="Gio.InputStream" c:type="GInputStream**"/>
          </parameter>
          <parameter name="out_size"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Length of @out_input</doc>
            <type name="guint64" c:type="guint64*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_variant"
              c:identifier="ostree_repo_load_variant"
              throws="1">
        <doc xml:space="preserve">Load the metadata object @sha256 of type @objtype, storing the
result in @out_variant.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Expected object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="sha256" transfer-ownership="none">
            <doc xml:space="preserve">Checksum string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_variant"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Metadata object</doc>
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_variant_if_exists"
              c:identifier="ostree_repo_load_variant_if_exists"
              throws="1">
        <doc xml:space="preserve">Attempt to load the metadata object @sha256 of type @objtype if it
exists, storing the result in @out_variant.  If it doesn't exist,
%NULL is returned.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="sha256" transfer-ownership="none">
            <doc xml:space="preserve">ASCII checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_variant"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Metadata</doc>
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
        </parameters>
      </method>
      <method name="open" c:identifier="ostree_repo_open" throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepare_transaction"
              c:identifier="ostree_repo_prepare_transaction"
              throws="1">
        <doc xml:space="preserve">Starts or resumes a transaction. In order to write to a repo, you
need to start a transaction. You can complete the transaction with
ostree_repo_commit_transaction(), or abort the transaction with
ostree_repo_abort_transaction().

Currently, transactions are not atomic, and aborting a transaction
will not erase any data you  write during the transaction.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="out_transaction_resume"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Whether this transaction
is resuming from a previous one.  This is a legacy state, now OSTree
pulls use per-commit `state/.commitpartial` files.</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prune" c:identifier="ostree_repo_prune" throws="1">
        <doc xml:space="preserve">Delete content from the repository.  By default, this function will
only delete "orphaned" objects not referred to by any commit.  This
can happen during a local commit operation, when we have written
content objects but not saved the commit referencing them.

However, if %OSTREE_REPO_PRUNE_FLAGS_REFS_ONLY is provided, instead
of traversing all commits, only refs will be used.  Particularly
when combined with @depth, this is a convenient way to delete
history from the repository.

Use the %OSTREE_REPO_PRUNE_FLAGS_NO_PRUNE to just determine
statistics on objects that would be deleted, without actually
deleting them.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Options controlling prune process</doc>
            <type name="RepoPruneFlags" c:type="OstreeRepoPruneFlags"/>
          </parameter>
          <parameter name="depth" transfer-ownership="none">
            <doc xml:space="preserve">Stop traversal after this many iterations (-1 for unlimited)</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="out_objects_total"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Number of objects found</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="out_objects_pruned"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Number of objects deleted</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="out_pruned_object_size_total"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Storage size in bytes of objects deleted</doc>
            <type name="guint64" c:type="guint64*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prune_from_reachable"
              c:identifier="ostree_repo_prune_from_reachable"
              throws="1">
        <doc xml:space="preserve">Delete content from the repository.  This function is the "backend"
half of the higher level ostree_repo_prune().  To use this function,
you determine the root set yourself, and this function finds all other
unreferenced objects and deletes them.

Use this API when you want to perform more selective pruning - for example,
retain all commits from a production branch, but just GC some history from
your dev branch.

The %OSTREE_REPO_PRUNE_FLAGS_NO_PRUNE flag may be specified to just determine
statistics on objects that would be deleted, without actually deleting them.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">Options controlling prune process</doc>
            <type name="RepoPruneOptions" c:type="OstreeRepoPruneOptions*"/>
          </parameter>
          <parameter name="out_objects_total"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Number of objects found</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="out_objects_pruned"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Number of objects deleted</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="out_pruned_object_size_total"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Storage size in bytes of objects deleted</doc>
            <type name="guint64" c:type="guint64*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prune_static_deltas"
              c:identifier="ostree_repo_prune_static_deltas"
              throws="1">
        <doc xml:space="preserve">Prune static deltas, if COMMIT is specified then delete static delta files only
targeting that commit; otherwise any static delta of non existing commits are
deleted.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">ASCII SHA256 checksum for commit, or %NULL for each
non existing commit</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="pull" c:identifier="ostree_repo_pull" throws="1">
        <doc xml:space="preserve">Connect to the remote repository, fetching the specified set of
refs @refs_to_fetch.  For each ref that is changed, download the
commit, all metadata, and all content objects, storing them safely
on disk in @self.

If @flags contains %OSTREE_REPO_PULL_FLAGS_MIRROR, and
the @refs_to_fetch is %NULL, and the remote repository contains a
summary file, then all refs will be fetched.

If @flags contains %OSTREE_REPO_PULL_FLAGS_COMMIT_ONLY, then only the
metadata for the commits in @refs_to_fetch is pulled.

Warning: This API will iterate the thread default main context,
which is a bug, but kept for compatibility reasons.  If you want to
avoid this, use g_main_context_push_thread_default() to push a new
one around this call.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="refs_to_fetch"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Optional list of refs; if %NULL, fetch all configured refs</doc>
            <array c:type="char**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Options controlling fetch behavior</doc>
            <type name="RepoPullFlags" c:type="OstreeRepoPullFlags"/>
          </parameter>
          <parameter name="progress"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Progress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="pull_one_dir"
              c:identifier="ostree_repo_pull_one_dir"
              throws="1">
        <doc xml:space="preserve">This is similar to ostree_repo_pull(), but only fetches a single
subpath.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="dir_to_pull" transfer-ownership="none">
            <doc xml:space="preserve">Subdirectory path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="refs_to_fetch"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Optional list of refs; if %NULL, fetch all configured refs</doc>
            <array c:type="char**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Options controlling fetch behavior</doc>
            <type name="RepoPullFlags" c:type="OstreeRepoPullFlags"/>
          </parameter>
          <parameter name="progress"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Progress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="pull_with_options"
              c:identifier="ostree_repo_pull_with_options"
              throws="1">
        <doc xml:space="preserve">Like ostree_repo_pull(), but supports an extensible set of flags.
The following are currently defined:

  * refs (as): Array of string refs
  * collection-refs (a(sss)): Array of (collection ID, ref name, checksum) tuples to pull;
    mutually exclusive with `refs` and `override-commit-ids`. Checksums may be the empty
    string to pull the latest commit for that ref
  * flags (i): An instance of #OstreeRepoPullFlags
  * subdir (s): Pull just this subdirectory
  * subdirs (as): Pull just these subdirectories
  * override-remote-name (s): If local, add this remote to refspec
  * gpg-verify (b): GPG verify commits
  * gpg-verify-summary (b): GPG verify summary
  * depth (i): How far in the history to traverse; default is 0, -1 means infinite
  * disable-static-deltas (b): Do not use static deltas
  * require-static-deltas (b): Require static deltas
  * override-commit-ids (as): Array of specific commit IDs to fetch for refs
  * timestamp-check (b): Verify commit timestamps are newer than current (when pulling via ref); Since: 2017.11
  * dry-run (b): Only print information on what will be downloaded (requires static deltas)
  * override-url (s): Fetch objects from this URL if remote specifies no metalink in options
  * inherit-transaction (b): Don't initiate, finish or abort a transaction, useful to do multiple pulls in one transaction.
  * http-headers (a(ss)): Additional headers to add to all HTTP requests
  * update-frequency (u): Frequency to call the async progress callback in milliseconds, if any; only values higher than 0 are valid
  * localcache-repos (as): File paths for local repos to use as caches when doing remote fetches</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name_or_baseurl" transfer-ownership="none">
            <doc xml:space="preserve">Name of remote or file:// url</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">A GVariant a{sv} with an extensible set of flags.</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="progress"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Progress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_object_storage_size"
              c:identifier="ostree_repo_query_object_storage_size"
              throws="1">
        <doc xml:space="preserve">Return the size in bytes of object with checksum @sha256, after any
compression has been applied.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="sha256" transfer-ownership="none">
            <doc xml:space="preserve">Checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_size"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Size in bytes object occupies physically</doc>
            <type name="guint64" c:type="guint64*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_commit"
              c:identifier="ostree_repo_read_commit"
              throws="1">
        <doc xml:space="preserve">Load the content for @rev into @out_root.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve">Ref or ASCII checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_root"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">An #OstreeRepoFile corresponding to the root</doc>
            <type name="Gio.File" c:type="GFile**"/>
          </parameter>
          <parameter name="out_commit"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The resolved commit checksum</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_commit_detached_metadata"
              c:identifier="ostree_repo_read_commit_detached_metadata"
              throws="1">
        <doc xml:space="preserve">OSTree commits can have arbitrary metadata associated; this
function retrieves them.  If none exists, @out_metadata will be set
to %NULL.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 commit checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_metadata"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Metadata associated with commit in with format "a{sv}", or %NULL if none exists</doc>
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="regenerate_summary"
              c:identifier="ostree_repo_regenerate_summary"
              throws="1">
        <doc xml:space="preserve">An OSTree repository can contain a high level "summary" file that
describes the available branches and other metadata.

If the timetable for making commits and updating the summary file is fairly
regular, setting the `ostree.summary.expires` key in @additional_metadata
will aid clients in working out when to check for updates.

It is regenerated automatically after a commit if
`core/commit-update-summary` is set.

If the `core/collection-id` key is set in the configuration, it will be
included as %OSTREE_SUMMARY_COLLECTION_ID in the summary file. Refs from the
`refs/mirrors` directory will be included in the generated summary file,
listed under the %OSTREE_SUMMARY_COLLECTION_MAP key. Collection IDs and refs
in %OSTREE_SUMMARY_COLLECTION_MAP are guaranteed to be in lexicographic
order.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="additional_metadata"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A GVariant of type a{sv}, or %NULL</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="reload_config"
              c:identifier="ostree_repo_reload_config"
              throws="1">
        <doc xml:space="preserve">By default, an #OstreeRepo will cache the remote configuration and its
own repo/config data.  This API can be used to reload it.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_add"
              c:identifier="ostree_repo_remote_add"
              throws="1">
        <doc xml:space="preserve">Create a new remote named @name pointing to @url.  If @options is
provided, then it will be mapped to #GKeyFile entries, where the
GVariant dictionary key is an option string, and the value is
mapped as follows:
  * s: g_key_file_set_string()
  * b: g_key_file_set_boolean()
  * as: g_key_file_set_string_list()</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">URL for remote (if URL begins with metalink=, it will be used as such)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">GVariant of type a{sv}</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_change"
              c:identifier="ostree_repo_remote_change"
              throws="1">
        <doc xml:space="preserve">A combined function handling the equivalent of
ostree_repo_remote_add(), ostree_repo_remote_delete(), with more
options.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="sysroot"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">System root</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="changeop" transfer-ownership="none">
            <doc xml:space="preserve">Operation to perform</doc>
            <type name="RepoRemoteChange" c:type="OstreeRepoRemoteChange"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">URL for remote (if URL begins with metalink=, it will be used as such)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">GVariant of type a{sv}</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_delete"
              c:identifier="ostree_repo_remote_delete"
              throws="1">
        <doc xml:space="preserve">Delete the remote named @name.  It is an error if the provided
remote does not exist.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_fetch_summary"
              c:identifier="ostree_repo_remote_fetch_summary"
              throws="1">
        <doc xml:space="preserve">Tries to fetch the summary file and any GPG signatures on the summary file
over HTTP, and returns the binary data in @out_summary and @out_signatures
respectively.

If no summary file exists on the remote server, @out_summary is set to
@NULL.  Likewise if the summary file is not signed, @out_signatures is
set to @NULL.  In either case the function still returns %TRUE.

Parse the summary data into a #GVariant using g_variant_new_from_bytes()
with #OSTREE_SUMMARY_GVARIANT_FORMAT as the format string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of a remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_summary"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">return location for raw summary data, or
              %NULL</doc>
            <type name="GLib.Bytes" c:type="GBytes**"/>
          </parameter>
          <parameter name="out_signatures"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">return location for raw summary
                 signature data, or %NULL</doc>
            <type name="GLib.Bytes" c:type="GBytes**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_fetch_summary_with_options"
              c:identifier="ostree_repo_remote_fetch_summary_with_options"
              throws="1">
        <doc xml:space="preserve">Like ostree_repo_remote_fetch_summary(), but supports an extensible set of flags.
The following are currently defined:

- override-url (s): Fetch summary from this URL if remote specifies no metalink in options
- http-headers (a(ss)): Additional headers to add to all HTTP requests</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of a remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A GVariant a{sv} with an extensible set of flags</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="out_summary"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">return location for raw summary data, or
              %NULL</doc>
            <type name="GLib.Bytes" c:type="GBytes**"/>
          </parameter>
          <parameter name="out_signatures"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">return location for raw summary
                 signature data, or %NULL</doc>
            <type name="GLib.Bytes" c:type="GBytes**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_get_gpg_verify"
              c:identifier="ostree_repo_remote_get_gpg_verify"
              throws="1">
        <doc xml:space="preserve">Return whether GPG verification is enabled for the remote named @name
through @out_gpg_verify.  It is an error if the provided remote does
not exist.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_gpg_verify"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Remote's GPG option</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_get_gpg_verify_summary"
              c:identifier="ostree_repo_remote_get_gpg_verify_summary"
              throws="1">
        <doc xml:space="preserve">Return whether GPG verification of the summary is enabled for the remote
named @name through @out_gpg_verify_summary.  It is an error if the provided
remote does not exist.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_gpg_verify_summary"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Remote's GPG option</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_get_url"
              c:identifier="ostree_repo_remote_get_url"
              throws="1">
        <doc xml:space="preserve">Return the URL of the remote named @name through @out_url.  It is an
error if the provided remote does not exist.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_url"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Remote's URL</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_gpg_import"
              c:identifier="ostree_repo_remote_gpg_import"
              throws="1">
        <doc xml:space="preserve">Imports one or more GPG keys from the open @source_stream, or from the
user's personal keyring if @source_stream is %NULL.  The @key_ids array
can optionally restrict which keys are imported.  If @key_ids is %NULL,
then all keys are imported.

The imported keys will be used to conduct GPG verification when pulling
from the remote named @name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of a remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="source_stream"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GInputStream, or %NULL</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="key_ids"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a %NULL-terminated array of GPG key IDs, or %NULL</doc>
            <array c:type="char**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="out_imported"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">return location for the number of imported
                             keys, or %NULL</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_list" c:identifier="ostree_repo_remote_list">
        <doc xml:space="preserve">List available remote names in an #OstreeRepo.  Remote names are sorted
alphabetically.  If no remotes are available the function returns %NULL.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a %NULL-terminated
         array of remote names</doc>
          <array length="0" zero-terminated="0" c:type="char**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="out_n_remotes"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Number of remotes available</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_list_refs"
              c:identifier="ostree_repo_remote_list_refs"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve">Name of the remote.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_all_refs"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Mapping from ref to checksum</doc>
            <type name="GLib.HashTable" c:type="GHashTable**">
              <type name="utf8"/>
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="resolve_rev"
              c:identifier="ostree_repo_resolve_rev"
              throws="1">
        <doc xml:space="preserve">Look up the given refspec, returning the checksum it references in
the parameter @out_rev. Will fall back on remote directory if cannot
find the given refspec in local.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="refspec" transfer-ownership="none">
            <doc xml:space="preserve">A refspec</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="allow_noent" transfer-ownership="none">
            <doc xml:space="preserve">Do not throw an error if refspec does not exist</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="out_rev"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">A checksum,or %NULL if @allow_noent is true and it does not exist</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="resolve_rev_ext"
              c:identifier="ostree_repo_resolve_rev_ext"
              throws="1">
        <doc xml:space="preserve">Look up the given refspec, returning the checksum it references in
the parameter @out_rev. Differently from ostree_repo_resolve_rev(),
this will not fall back to searching through remote repos if a
local ref is specified but not found.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="refspec" transfer-ownership="none">
            <doc xml:space="preserve">A refspec</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="allow_noent" transfer-ownership="none">
            <doc xml:space="preserve">Do not throw an error if refspec does not exist</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Options controlling behavior</doc>
            <type name="RepoResolveRevExtFlags"
                  c:type="OstreeRepoResolveRevExtFlags"/>
          </parameter>
          <parameter name="out_rev"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">A checksum,or %NULL if @allow_noent is true and it does not exist</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="scan_hardlinks"
              c:identifier="ostree_repo_scan_hardlinks"
              throws="1">
        <doc xml:space="preserve">This function is deprecated in favor of using ostree_repo_devino_cache_new(),
which allows a precise mapping to be built up between hardlink checkout files
and their checksums between `ostree_repo_checkout_at()` and
`ostree_repo_write_directory_to_mtree()`.

When invoking ostree_repo_write_directory_to_mtree(), it has to compute the
checksum of all files. If your commit contains hardlinks from a checkout,
this functions builds a mapping of device numbers and inodes to their
checksum.

There is an upfront cost to creating this mapping, as this will scan the
entire objects directory. If your commit is composed of mostly hardlinks to
existing ostree objects, then this will speed up considerably, so call it
before you call ostree_write_directory_to_mtree() or similar.  However,
ostree_repo_devino_cache_new() is better as it avoids scanning all objects.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_alias_ref_immediate"
              c:identifier="ostree_repo_set_alias_ref_immediate"
              throws="1">
        <doc xml:space="preserve">Like ostree_repo_set_ref_immediate(), but creates an alias.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A remote for the ref</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve">The ref to write</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="target"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The ref target to point it to, or %NULL to unset</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cache_dir"
              c:identifier="ostree_repo_set_cache_dir"
              throws="1">
        <doc xml:space="preserve">Set a custom location for the cache directory used for e.g.
per-remote summary caches. Setting this manually is useful when
doing operations on a system repo as a user because you don't have
write permissions in the repo, where the cache is normally stored.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="dfd" transfer-ownership="none">
            <doc xml:space="preserve">directory fd</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">subpath in @dfd</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_disable_fsync"
              c:identifier="ostree_repo_set_disable_fsync">
        <doc xml:space="preserve">Disable requests to fsync() to stable storage during commits.  This
option should only be used by build system tools which are creating
disposable virtual machines, or have higher level mechanisms for
ensuring data consistency.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="disable_fsync" transfer-ownership="none">
            <doc xml:space="preserve">If %TRUE, do not fsync</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ref_immediate"
              c:identifier="ostree_repo_set_ref_immediate"
              throws="1">
        <doc xml:space="preserve">This is like ostree_repo_transaction_set_ref(), except it may be
invoked outside of a transaction.  This is presently safe for the
case where we're creating or overwriting an existing ref.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A remote for the ref</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve">The ref to write</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="checksum"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The checksum to point it to, or %NULL to unset</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="sign_commit"
              c:identifier="ostree_repo_sign_commit"
              throws="1">
        <doc xml:space="preserve">Add a GPG signature to a commit.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve">SHA256 of given commit to sign</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="key_id" transfer-ownership="none">
            <doc xml:space="preserve">Use this GPG key id</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="homedir"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">GPG home directory, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="sign_delta"
              c:identifier="ostree_repo_sign_delta"
              throws="1">
        <doc xml:space="preserve">This function is deprecated, sign the summary file instead.
Add a GPG signature to a static delta.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="from_commit" transfer-ownership="none">
            <doc xml:space="preserve">From commit</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="to_commit" transfer-ownership="none">
            <doc xml:space="preserve">To commit</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="key_id" transfer-ownership="none">
            <doc xml:space="preserve">key id</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="homedir" transfer-ownership="none">
            <doc xml:space="preserve">homedir</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="static_delta_execute_offline"
              c:identifier="ostree_repo_static_delta_execute_offline"
              throws="1">
        <doc xml:space="preserve">Given a directory representing an already-downloaded static delta
on disk, apply it, generating a new commit.  The directory must be
named with the form "FROM-TO", where both are checksums, and it
must contain a file named "superblock", along with at least one part.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="dir_or_file" transfer-ownership="none">
            <doc xml:space="preserve">Path to a directory containing static delta data, or directly to the superblock</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="skip_validation" transfer-ownership="none">
            <doc xml:space="preserve">If %TRUE, assume data integrity</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="static_delta_generate"
              c:identifier="ostree_repo_static_delta_generate"
              throws="1">
        <doc xml:space="preserve">Generate a lookaside "static delta" from @from (%NULL means
from-empty) which can generate the objects in @to.  This delta is
an optimization over fetching individual objects, and can be
conveniently stored and applied offline.

The @params argument should be an a{sv}.  The following attributes
are known:
  - min-fallback-size: u: Minimum uncompressed size in megabytes to use fallback, 0 to disable fallbacks
  - max-chunk-size: u: Maximum size in megabytes of a delta part
  - max-bsdiff-size: u: Maximum size in megabytes to consider bsdiff compression
  for input files
  - compression: y: Compression type: 0=none, x=lzma, g=gzip
  - bsdiff-enabled: b: Enable bsdiff compression.  Default TRUE.
  - inline-parts: b: Put part data in header, to get a single file delta.  Default FALSE.
  - verbose: b: Print diagnostic messages.  Default FALSE.
  - endianness: b: Deltas use host byte order by default; this option allows choosing (G_BIG_ENDIAN or G_LITTLE_ENDIAN)
  - filename: ay: Save delta superblock to this filename, and parts in the same directory.  Default saves to repository.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="opt" transfer-ownership="none">
            <doc xml:space="preserve">High level optimization choice</doc>
            <type name="StaticDeltaGenerateOpt"
                  c:type="OstreeStaticDeltaGenerateOpt"/>
          </parameter>
          <parameter name="from" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 checksum of origin, or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="to" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 checksum of target</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="metadata"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Optional metadata</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="params"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Parameters, see below</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="transaction_set_ref"
              c:identifier="ostree_repo_transaction_set_ref">
        <doc xml:space="preserve">If @checksum is not %NULL, then record it as the target of ref named
@ref; if @remote is provided, the ref will appear to originate from that
remote.

Otherwise, if @checksum is %NULL, then record that the ref should
be deleted.

The change will not be written out immediately, but when the transaction
is completed with ostree_repo_commit_transaction(). If the transaction
is instead aborted with ostree_repo_abort_transaction(), no changes will
be made to the repository.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A remote for the ref</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve">The ref to write</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="checksum"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The checksum to point it to</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="transaction_set_refspec"
              c:identifier="ostree_repo_transaction_set_refspec">
        <doc xml:space="preserve">Like ostree_repo_transaction_set_ref(), but takes concatenated
@refspec format as input instead of separate remote and name
arguments.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="refspec" transfer-ownership="none">
            <doc xml:space="preserve">The refspec to write</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="checksum"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The checksum to point it to</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="traverse_commit"
              c:identifier="ostree_repo_traverse_commit"
              throws="1">
        <doc xml:space="preserve">Create a new set @out_reachable containing all objects reachable
from @commit_checksum, traversing @maxdepth parent commits.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="maxdepth" transfer-ownership="none">
            <doc xml:space="preserve">Traverse this many parent commits, -1 for unlimited</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="out_reachable"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="container">
            <doc xml:space="preserve">Set of reachable objects</doc>
            <type name="GLib.HashTable" c:type="GHashTable**">
              <type name="GLib.Variant"/>
              <type name="GLib.Variant"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="traverse_commit_union"
              c:identifier="ostree_repo_traverse_commit_union"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">Update the set @inout_reachable containing all objects reachable
from @commit_checksum, traversing @maxdepth parent commits.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="maxdepth" transfer-ownership="none">
            <doc xml:space="preserve">Traverse this many parent commits, -1 for unlimited</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="inout_reachable" transfer-ownership="none">
            <doc xml:space="preserve">Set of reachable objects</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="gpointer" c:type="gpointer"/>
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_commit"
              c:identifier="ostree_repo_verify_commit"
              throws="1">
        <doc xml:space="preserve">Check for a valid GPG signature on commit named by the ASCII
checksum @commit_checksum.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if there was a GPG signature from a trusted keyring, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repository</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="keyringdir"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Path to directory GPG keyrings; overrides built-in default if given</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="extra_keyring"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Path to additional keyring file (not a directory)</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_commit_ext"
              c:identifier="ostree_repo_verify_commit_ext"
              throws="1">
        <doc xml:space="preserve">Read GPG signature(s) on the commit named by the ASCII checksum
@commit_checksum and return detailed results.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #OstreeGpgVerifyResult, or %NULL on error</doc>
          <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repository</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="keyringdir"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Path to directory GPG keyrings; overrides built-in default if given</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="extra_keyring"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Path to additional keyring file (not a directory)</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_commit_for_remote"
              c:identifier="ostree_repo_verify_commit_for_remote"
              throws="1">
        <doc xml:space="preserve">Read GPG signature(s) on the commit named by the ASCII checksum
@commit_checksum and return detailed results, based on the keyring
configured for @remote.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #OstreeGpgVerifyResult, or %NULL on error</doc>
          <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repository</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve">OSTree remote to use for configuration</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_summary"
              c:identifier="ostree_repo_verify_summary"
              throws="1">
        <doc xml:space="preserve">Verify @signatures for @summary data using GPG keys in the keyring for
@remote_name, and return an #OstreeGpgVerifyResult.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #OstreeGpgVerifyResult, or %NULL on error</doc>
          <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="summary" transfer-ownership="none">
            <doc xml:space="preserve">Summary data as a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signatures" transfer-ownership="none">
            <doc xml:space="preserve">Summary signatures as a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_archive_to_mtree"
              c:identifier="ostree_repo_write_archive_to_mtree"
              throws="1">
        <doc xml:space="preserve">Import an archive file @archive into the repository, and write its
file structure to @mtree.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="archive" transfer-ownership="none">
            <doc xml:space="preserve">A path to an archive file</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="mtree" transfer-ownership="none">
            <doc xml:space="preserve">The #OstreeMutableTree to write to</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </parameter>
          <parameter name="modifier"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Optional commit modifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </parameter>
          <parameter name="autocreate_parents" transfer-ownership="none">
            <doc xml:space="preserve">Autocreate parent directories</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_commit"
              c:identifier="ostree_repo_write_commit"
              throws="1">
        <doc xml:space="preserve">Write a commit metadata object, referencing @root_contents_checksum
and @root_metadata_checksum.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">ASCII SHA256 checksum for parent, or %NULL for none</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="subject"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Subject</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="body"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Body</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="metadata"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">GVariant of type a{sv}, or %NULL for none</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="root" transfer-ownership="none">
            <doc xml:space="preserve">The tree to point the commit to</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </parameter>
          <parameter name="out_commit"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Resulting ASCII SHA256 checksum for commit</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_commit_detached_metadata"
              c:identifier="ostree_repo_write_commit_detached_metadata"
              throws="1">
        <doc xml:space="preserve">Replace any existing metadata associated with commit referred to by
@checksum with @metadata.  If @metadata is %NULL, then existing
data will be deleted.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">ASCII SHA256 commit checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="metadata"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Metadata to associate with commit in with format "a{sv}", or %NULL to delete</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_commit_with_time"
              c:identifier="ostree_repo_write_commit_with_time"
              throws="1">
        <doc xml:space="preserve">Write a commit metadata object, referencing @root_contents_checksum
and @root_metadata_checksum.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">ASCII SHA256 checksum for parent, or %NULL for none</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="subject"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Subject</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="body"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Body</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="metadata"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">GVariant of type a{sv}, or %NULL for none</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="root" transfer-ownership="none">
            <doc xml:space="preserve">The tree to point the commit to</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </parameter>
          <parameter name="time" transfer-ownership="none">
            <doc xml:space="preserve">The time to use to stamp the commit</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="out_commit"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Resulting ASCII SHA256 checksum for commit</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_config"
              c:identifier="ostree_repo_write_config"
              throws="1">
        <doc xml:space="preserve">Save @new_config in place of this repository's config file.  Note
that @new_config should not be modified after - this function
simply adds a reference.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="new_config" transfer-ownership="none">
            <doc xml:space="preserve">Overwrite the config file with this data.  Do not change later!</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_content"
              c:identifier="ostree_repo_write_content"
              throws="1">
        <doc xml:space="preserve">Store the content object streamed as @object_input,
with total length @length.  The actual checksum will
be returned as @out_csum.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="expected_checksum"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">If provided, validate content against this checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="object_input" transfer-ownership="none">
            <doc xml:space="preserve">Content object stream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve">Length of @object_input</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="out_csum"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Binary checksum</doc>
            <array zero-terminated="0" c:type="guchar**" fixed-size="32">
              <type name="guint8" c:type="guchar*"/>
            </array>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_content_async"
              c:identifier="ostree_repo_write_content_async">
        <doc xml:space="preserve">Asynchronously store the content object @object.  If provided, the
checksum @expected_checksum will be verified.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="expected_checksum"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">If provided, validate content against this checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">Input</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve">Length of @object</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve">Invoked when content is writed</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">User data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_content_finish"
              c:identifier="ostree_repo_write_content_finish"
              throws="1">
        <doc xml:space="preserve">Completes an invocation of ostree_repo_write_content_async().</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_csum"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">A binary SHA256 checksum of the content object</doc>
            <type name="guint8" c:type="guchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_content_trusted"
              c:identifier="ostree_repo_write_content_trusted"
              throws="1">
        <doc xml:space="preserve">Store the content object streamed as @object_input, with total
length @length.  The given @checksum will be treated as trusted.

This function should be used when importing file objects from local
disk, for example.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">Store content using this ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="object_input" transfer-ownership="none">
            <doc xml:space="preserve">Content stream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve">Length of @object_input</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_dfd_to_mtree"
              c:identifier="ostree_repo_write_dfd_to_mtree"
              throws="1">
        <doc xml:space="preserve">Store as objects all contents of the directory referred to by @dfd
and @path all children into the repository @self, overlaying the
resulting filesystem hierarchy into @mtree.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="dfd" transfer-ownership="none">
            <doc xml:space="preserve">Directory file descriptor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">Path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="mtree" transfer-ownership="none">
            <doc xml:space="preserve">Overlay directory contents into this tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </parameter>
          <parameter name="modifier"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Optional modifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_directory_to_mtree"
              c:identifier="ostree_repo_write_directory_to_mtree"
              throws="1">
        <doc xml:space="preserve">Store objects for @dir and all children into the repository @self,
overlaying the resulting filesystem hierarchy into @mtree.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="dir" transfer-ownership="none">
            <doc xml:space="preserve">Path to a directory</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="mtree" transfer-ownership="none">
            <doc xml:space="preserve">Overlay directory contents into this tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </parameter>
          <parameter name="modifier"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Optional modifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_metadata"
              c:identifier="ostree_repo_write_metadata"
              throws="1">
        <doc xml:space="preserve">Store the metadata object @variant.  Return the checksum
as @out_csum.

If @expected_checksum is not %NULL, verify it against the
computed checksum.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="expected_checksum"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">If provided, validate content against this checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">Metadata</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="out_csum"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Binary checksum</doc>
            <array zero-terminated="0" c:type="guchar**" fixed-size="32">
              <type name="guint8" c:type="guchar*"/>
            </array>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_metadata_async"
              c:identifier="ostree_repo_write_metadata_async">
        <doc xml:space="preserve">Asynchronously store the metadata object @variant.  If provided,
the checksum @expected_checksum will be verified.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="expected_checksum"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">If provided, validate content against this checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">Metadata</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve">Invoked when metadata is writed</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_metadata_finish"
              c:identifier="ostree_repo_write_metadata_finish"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_csum" transfer-ownership="none">
            <type name="guint8" c:type="guchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_metadata_stream_trusted"
              c:identifier="ostree_repo_write_metadata_stream_trusted"
              throws="1">
        <doc xml:space="preserve">Store the metadata object @variant; the provided @checksum is
trusted.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">Store object with this ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="object_input" transfer-ownership="none">
            <doc xml:space="preserve">Metadata object stream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve">Length, may be 0 for unknown</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_metadata_trusted"
              c:identifier="ostree_repo_write_metadata_trusted"
              throws="1">
        <doc xml:space="preserve">Store the metadata object @variant; the provided @checksum is
trusted.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">Store object with this ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve">Metadata object</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_mtree"
              c:identifier="ostree_repo_write_mtree"
              throws="1">
        <doc xml:space="preserve">Write all metadata objects for @mtree to repo; the resulting
@out_file points to the %OSTREE_OBJECT_TYPE_DIR_TREE object that
the @mtree represented.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="mtree" transfer-ownership="none">
            <doc xml:space="preserve">Mutable tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </parameter>
          <parameter name="out_file"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">An #OstreeRepoFile representing @mtree's root.</doc>
            <type name="Gio.File" c:type="GFile**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="path"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Path to repository.  Note that if this repository was created
via `ostree_repo_new_at()`, this value will refer to a value in
the Linux kernel's `/proc/self/fd` directory.  Generally, you
should avoid using this property at all; you can gain a reference
to the repository's directory fd via `ostree_repo_get_dfd()` and
use file-descriptor relative operations.</doc>
        <type name="Gio.File"/>
      </property>
      <property name="remotes-config-dir"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Path to directory containing remote definitions.  The default is `NULL`.
If a `sysroot-path` property is defined, this value will default to
`${sysroot_path}/etc/ostree/remotes.d`.

This value will only be used for system repositories.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="sysroot-path"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">A system using libostree for the host has a "system" repository; this
property will be set for repositories referenced via
`ostree_sysroot_repo()` for example.

You should avoid using this property; if your code is operating
on a system repository, use `OstreeSysroot` and access the repository
object via `ostree_sysroot_repo()`.</doc>
        <type name="Gio.File"/>
      </property>
      <glib:signal name="gpg-verify-result" when="last">
        <doc xml:space="preserve">Emitted during a pull operation upon GPG verification (if enabled).
Applications can connect to this signal to output the verification
results if desired.

The signal will be emitted from whichever #GMainContext is the
thread-default at the point when ostree_repo_pull_with_options()
is called.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">checksum of the signed object</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="RepoCheckoutAtOptions" c:type="OstreeRepoCheckoutAtOptions">
      <doc xml:space="preserve">An extensible options structure controlling checkout.  Ensure that
you have entirely zeroed the structure, then set just the desired
options.  This is used by ostree_repo_checkout_at() which
supercedes previous separate enumeration usage in
ostree_repo_checkout_tree() and ostree_repo_checkout_tree_at().</doc>
      <field name="mode" writable="1">
        <type name="RepoCheckoutMode" c:type="OstreeRepoCheckoutMode"/>
      </field>
      <field name="overwrite_mode" writable="1">
        <type name="RepoCheckoutOverwriteMode"
              c:type="OstreeRepoCheckoutOverwriteMode"/>
      </field>
      <field name="enable_uncompressed_cache" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="enable_fsync" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="process_whiteouts" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="no_copy_fallback" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="force_copy" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="bareuseronly_dirs" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="unused_bools" writable="1">
        <array zero-terminated="0" c:type="gboolean" fixed-size="5">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
      <field name="subpath" writable="1">
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="devino_to_csum_cache" writable="1">
        <type name="RepoDevInoCache" c:type="OstreeRepoDevInoCache*"/>
      </field>
      <field name="unused_ints" writable="1">
        <array zero-terminated="0" c:type="int" fixed-size="6">
          <type name="gint" c:type="int"/>
        </array>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="5">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="sepolicy" writable="1">
        <type name="SePolicy" c:type="OstreeSePolicy*"/>
      </field>
      <field name="sepolicy_prefix" writable="1">
        <type name="utf8" c:type="const char*"/>
      </field>
    </record>
    <enumeration name="RepoCheckoutMode" c:type="OstreeRepoCheckoutMode">
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_CHECKOUT_MODE_NONE">
        <doc xml:space="preserve">No special options</doc>
      </member>
      <member name="user"
              value="1"
              c:identifier="OSTREE_REPO_CHECKOUT_MODE_USER">
        <doc xml:space="preserve">Ignore uid/gid of files</doc>
      </member>
    </enumeration>
    <record name="RepoCheckoutOptions"
            c:type="OstreeRepoCheckoutOptions"
            introspectable="0">
      <doc xml:space="preserve">An extensible options structure controlling checkout.  Ensure that
you have entirely zeroed the structure, then set just the desired
options.  This is used by ostree_repo_checkout_tree_at() which
supercedes previous separate enumeration usage in
ostree_repo_checkout_tree().</doc>
      <field name="mode" writable="1">
        <type name="RepoCheckoutMode" c:type="OstreeRepoCheckoutMode"/>
      </field>
      <field name="overwrite_mode" writable="1">
        <type name="RepoCheckoutOverwriteMode"
              c:type="OstreeRepoCheckoutOverwriteMode"/>
      </field>
      <field name="enable_uncompressed_cache" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="disable_fsync" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="process_whiteouts" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="no_copy_fallback" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="reserved" writable="1" bits="28">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="subpath" writable="1">
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="devino_to_csum_cache" writable="1">
        <type name="RepoDevInoCache" c:type="OstreeRepoDevInoCache*"/>
      </field>
      <field name="unused_uints" writable="1">
        <array zero-terminated="0" c:type="guint" fixed-size="6">
          <type name="guint" c:type="guint"/>
        </array>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="RepoCheckoutOverwriteMode"
                 c:type="OstreeRepoCheckoutOverwriteMode">
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_CHECKOUT_OVERWRITE_NONE">
        <doc xml:space="preserve">No special options</doc>
      </member>
      <member name="union_files"
              value="1"
              c:identifier="OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_FILES">
        <doc xml:space="preserve">When layering checkouts, unlink() and replace existing files, but do not modify existing directories</doc>
      </member>
      <member name="add_files"
              value="2"
              c:identifier="OSTREE_REPO_CHECKOUT_OVERWRITE_ADD_FILES">
        <doc xml:space="preserve">Only add new files/directories</doc>
      </member>
      <member name="union_identical"
              value="3"
              c:identifier="OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_IDENTICAL">
        <doc xml:space="preserve">Like UNION_FILES, but error if files are not identical (requires hardlink checkouts)</doc>
      </member>
    </enumeration>
    <callback name="RepoCommitFilter" c:type="OstreeRepoCommitFilter">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">#OstreeRepoCommitFilterResult saying whether or not to commit this file</doc>
        <type name="RepoCommitFilterResult"
              c:type="OstreeRepoCommitFilterResult"/>
      </return-value>
      <parameters>
        <parameter name="repo" transfer-ownership="none">
          <doc xml:space="preserve">Repo</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve">Path to file</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="file_info" transfer-ownership="none">
          <doc xml:space="preserve">File information</doc>
          <type name="Gio.FileInfo" c:type="GFileInfo*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve">User data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="RepoCommitFilterResult"
                 c:type="OstreeRepoCommitFilterResult">
      <member name="allow"
              value="0"
              c:identifier="OSTREE_REPO_COMMIT_FILTER_ALLOW">
        <doc xml:space="preserve">Do commit this object</doc>
      </member>
      <member name="skip"
              value="1"
              c:identifier="OSTREE_REPO_COMMIT_FILTER_SKIP">
        <doc xml:space="preserve">Ignore this object</doc>
      </member>
    </enumeration>
    <enumeration name="RepoCommitIterResult"
                 c:type="OstreeRepoCommitIterResult">
      <member name="error"
              value="0"
              c:identifier="OSTREE_REPO_COMMIT_ITER_RESULT_ERROR">
      </member>
      <member name="end"
              value="1"
              c:identifier="OSTREE_REPO_COMMIT_ITER_RESULT_END">
      </member>
      <member name="file"
              value="2"
              c:identifier="OSTREE_REPO_COMMIT_ITER_RESULT_FILE">
      </member>
      <member name="dir"
              value="3"
              c:identifier="OSTREE_REPO_COMMIT_ITER_RESULT_DIR">
      </member>
    </enumeration>
    <record name="RepoCommitModifier"
            c:type="OstreeRepoCommitModifier"
            glib:type-name="OstreeRepoCommitModifier"
            glib:get-type="ostree_repo_commit_modifier_get_type"
            c:symbol-prefix="repo_commit_modifier">
      <doc xml:space="preserve">A structure allowing control over commits.</doc>
      <constructor name="new" c:identifier="ostree_repo_commit_modifier_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new commit modifier.</doc>
          <type name="RepoCommitModifier" c:type="OstreeRepoCommitModifier*"/>
        </return-value>
        <parameters>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Control options for filter</doc>
            <type name="RepoCommitModifierFlags"
                  c:type="OstreeRepoCommitModifierFlags"/>
          </parameter>
          <parameter name="commit_filter"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve">Function that can inspect individual files</doc>
            <type name="RepoCommitFilter" c:type="OstreeRepoCommitFilter"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">User data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy_notify"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve">A #GDestroyNotify</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="ref" c:identifier="ostree_repo_commit_modifier_ref">
        <return-value transfer-ownership="full">
          <type name="RepoCommitModifier" c:type="OstreeRepoCommitModifier*"/>
        </return-value>
        <parameters>
          <instance-parameter name="modifier" transfer-ownership="none">
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_devino_cache"
              c:identifier="ostree_repo_commit_modifier_set_devino_cache">
        <doc xml:space="preserve">See the documentation for
`ostree_repo_devino_cache_new()`.  This function can
then be used for later calls to
`ostree_repo_write_directory_to_mtree()` to optimize commits.

Note if your process has multiple writers, you should use separate
`OSTreeRepo` instances if you want to also use this API.

This function will add a reference to @cache without copying - you
should avoid further mutation of the cache.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="modifier" transfer-ownership="none">
            <doc xml:space="preserve">Modifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </instance-parameter>
          <parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve">A hash table caching device,inode to checksums</doc>
            <type name="RepoDevInoCache" c:type="OstreeRepoDevInoCache*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sepolicy"
              c:identifier="ostree_repo_commit_modifier_set_sepolicy">
        <doc xml:space="preserve">If @policy is non-%NULL, use it to look up labels to use for
"security.selinux" extended attributes.

Note that any policy specified this way operates in addition to any
extended attributes provided via
ostree_repo_commit_modifier_set_xattr_callback().  However if both
specify a value for "security.selinux", then the one from the
policy wins.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="modifier" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepoCommitModifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </instance-parameter>
          <parameter name="sepolicy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Policy to use for labeling</doc>
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_xattr_callback"
              c:identifier="ostree_repo_commit_modifier_set_xattr_callback">
        <doc xml:space="preserve">If set, this function should return extended attributes to use for
the given path.  This is useful for things like ACLs and SELinux,
where a build system can label the files as it's committing to the
repository.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="modifier" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeRepoCommitModifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="1">
            <doc xml:space="preserve">Function to be invoked, should return extended attributes for path</doc>
            <type name="RepoCommitModifierXattrCallback"
                  c:type="OstreeRepoCommitModifierXattrCallback"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="async">
            <doc xml:space="preserve">Destroy notification</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Data for @callback:</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="ostree_repo_commit_modifier_unref">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="modifier" transfer-ownership="none">
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="RepoCommitModifierFlags"
              c:type="OstreeRepoCommitModifierFlags">
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_NONE">
        <doc xml:space="preserve">No special flags</doc>
      </member>
      <member name="skip_xattrs"
              value="1"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_SKIP_XATTRS">
        <doc xml:space="preserve">Do not process extended attributes</doc>
      </member>
      <member name="generate_sizes"
              value="2"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_GENERATE_SIZES">
        <doc xml:space="preserve">Generate size information.</doc>
      </member>
      <member name="canonical_permissions"
              value="4"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS">
        <doc xml:space="preserve">Canonicalize permissions for bare-user-only mode.</doc>
      </member>
      <member name="error_on_unlabeled"
              value="8"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_ERROR_ON_UNLABELED">
        <doc xml:space="preserve">Emit an error if configured SELinux policy does not provide a label</doc>
      </member>
    </bitfield>
    <callback name="RepoCommitModifierXattrCallback"
              c:type="OstreeRepoCommitModifierXattrCallback">
      <return-value transfer-ownership="full">
        <type name="GLib.Variant" c:type="GVariant*"/>
      </return-value>
      <parameters>
        <parameter name="repo" transfer-ownership="none">
          <type name="Repo" c:type="OstreeRepo*"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="file_info" transfer-ownership="none">
          <type name="Gio.FileInfo" c:type="GFileInfo*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <bitfield name="RepoCommitState" c:type="OstreeRepoCommitState">
      <member name="repo_commit_state_partial"
              value="1"
              c:identifier="OSTREE_REPO_COMMIT_STATE_PARTIAL">
      </member>
    </bitfield>
    <bitfield name="RepoCommitTraverseFlags"
              c:type="OstreeRepoCommitTraverseFlags">
      <member name="repo_commit_traverse_flag_none"
              value="1"
              c:identifier="OSTREE_REPO_COMMIT_TRAVERSE_FLAG_NONE">
      </member>
    </bitfield>
    <record name="RepoCommitTraverseIter"
            c:type="OstreeRepoCommitTraverseIter">
      <field name="initialized" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="dummy" writable="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="10">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="dummy_checksum_data" writable="1">
        <array zero-terminated="0" c:type="char" fixed-size="130">
          <type name="gchar" c:type="char"/>
        </array>
      </field>
      <method name="clear"
              c:identifier="ostree_repo_commit_traverse_iter_clear">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <type name="RepoCommitTraverseIter"
                  c:type="OstreeRepoCommitTraverseIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_dir"
              c:identifier="ostree_repo_commit_traverse_iter_get_dir">
        <doc xml:space="preserve">Return information on the current directory.  This function may
only be called if %OSTREE_REPO_COMMIT_ITER_RESULT_DIR was returned
from ostree_repo_commit_traverse_iter_next().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">An iter</doc>
            <type name="RepoCommitTraverseIter"
                  c:type="OstreeRepoCommitTraverseIter*"/>
          </instance-parameter>
          <parameter name="out_name"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">Name of current dir</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="out_content_checksum"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">Checksum of current content</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="out_meta_checksum"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">Checksum of current metadata</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_file"
              c:identifier="ostree_repo_commit_traverse_iter_get_file">
        <doc xml:space="preserve">Return information on the current file.  This function may only be
called if %OSTREE_REPO_COMMIT_ITER_RESULT_FILE was returned from
ostree_repo_commit_traverse_iter_next().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">An iter</doc>
            <type name="RepoCommitTraverseIter"
                  c:type="OstreeRepoCommitTraverseIter*"/>
          </instance-parameter>
          <parameter name="out_name"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">Name of current file</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="out_checksum"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">Checksum of current file</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_commit"
              c:identifier="ostree_repo_commit_traverse_iter_init_commit"
              throws="1">
        <doc xml:space="preserve">Initialize (in place) an iterator over the root of a commit object.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">An iter</doc>
            <type name="RepoCommitTraverseIter"
                  c:type="OstreeRepoCommitTraverseIter*"/>
          </instance-parameter>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve">A repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="commit" transfer-ownership="none">
            <doc xml:space="preserve">Variant of type %OSTREE_OBJECT_TYPE_COMMIT</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Flags</doc>
            <type name="RepoCommitTraverseFlags"
                  c:type="OstreeRepoCommitTraverseFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_dirtree"
              c:identifier="ostree_repo_commit_traverse_iter_init_dirtree"
              throws="1">
        <doc xml:space="preserve">Initialize (in place) an iterator over a directory tree.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">An iter</doc>
            <type name="RepoCommitTraverseIter"
                  c:type="OstreeRepoCommitTraverseIter*"/>
          </instance-parameter>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve">A repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="dirtree" transfer-ownership="none">
            <doc xml:space="preserve">Variant of type %OSTREE_OBJECT_TYPE_DIR_TREE</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Flags</doc>
            <type name="RepoCommitTraverseFlags"
                  c:type="OstreeRepoCommitTraverseFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="next"
              c:identifier="ostree_repo_commit_traverse_iter_next"
              throws="1">
        <doc xml:space="preserve">Step the interator to the next item.  Files will be returned first,
then subdirectories.  Call this in a loop; upon encountering
%OSTREE_REPO_COMMIT_ITER_RESULT_END, there will be no more files or
directories.  If %OSTREE_REPO_COMMIT_ITER_RESULT_DIR is returned,
then call ostree_repo_commit_traverse_iter_get_dir() to retrieve
data for that directory.  Similarly, if
%OSTREE_REPO_COMMIT_ITER_RESULT_FILE is returned, call
ostree_repo_commit_traverse_iter_get_file().

If %OSTREE_REPO_COMMIT_ITER_RESULT_ERROR is returned, it is a
program error to call any further API on @iter except for
ostree_repo_commit_traverse_iter_clear().</doc>
        <return-value transfer-ownership="none">
          <type name="RepoCommitIterResult"
                c:type="OstreeRepoCommitIterResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">An iter</doc>
            <type name="RepoCommitTraverseIter"
                  c:type="OstreeRepoCommitTraverseIter*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <function name="cleanup"
                c:identifier="ostree_repo_commit_traverse_iter_cleanup">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="p"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="RepoDevInoCache"
            c:type="OstreeRepoDevInoCache"
            glib:type-name="OstreeRepoDevInoCache"
            glib:get-type="ostree_repo_devino_cache_get_type"
            c:symbol-prefix="repo_devino_cache">
      <constructor name="new" c:identifier="ostree_repo_devino_cache_new">
        <doc xml:space="preserve">OSTree has support for pairing ostree_repo_checkout_tree_at() using
hardlinks in combination with a later
ostree_repo_write_directory_to_mtree() using a (normally modified)
directory.  In order for OSTree to optimally detect just the new
files, use this function and fill in the `devino_to_csum_cache`
member of `OstreeRepoCheckoutAtOptions`, then call
ostree_repo_commit_set_devino_cache().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Newly allocated cache</doc>
          <type name="RepoDevInoCache" c:type="OstreeRepoDevInoCache*"/>
        </return-value>
      </constructor>
      <method name="ref" c:identifier="ostree_repo_devino_cache_ref">
        <return-value transfer-ownership="full">
          <type name="RepoDevInoCache" c:type="OstreeRepoDevInoCache*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <type name="RepoDevInoCache" c:type="OstreeRepoDevInoCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="ostree_repo_devino_cache_unref">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <type name="RepoDevInoCache" c:type="OstreeRepoDevInoCache*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="RepoExportArchiveOptions"
            c:type="OstreeRepoExportArchiveOptions"
            introspectable="0">
      <doc xml:space="preserve">An extensible options structure controlling archive creation.  Ensure that
you have entirely zeroed the structure, then set just the desired
options.  This is used by ostree_repo_export_tree_to_archive().</doc>
      <field name="disable_xattrs" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="reserved" writable="1" bits="31">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="timestamp_secs" writable="1">
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="unused_uint" writable="1">
        <array zero-terminated="0" c:type="guint" fixed-size="8">
          <type name="guint" c:type="guint"/>
        </array>
      </field>
      <field name="path_prefix" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="RepoFile"
           c:symbol-prefix="repo_file"
           c:type="OstreeRepoFile"
           parent="GObject.Object"
           glib:type-name="OstreeRepoFile"
           glib:get-type="ostree_repo_file_get_type"
           glib:type-struct="RepoFileClass">
      <implements name="Gio.File"/>
      <method name="ensure_resolved"
              c:identifier="ostree_repo_file_ensure_resolved"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_checksum" c:identifier="ostree_repo_file_get_checksum">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_repo" c:identifier="ostree_repo_file_get_repo">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Repository</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_root" c:identifier="ostree_repo_file_get_root">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The root directory for the commit referenced by this file</doc>
          <type name="RepoFile" c:type="OstreeRepoFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_xattrs"
              c:identifier="ostree_repo_file_get_xattrs"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
          <parameter name="out_xattrs" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="tree_find_child"
              c:identifier="ostree_repo_file_tree_find_child">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="is_dir" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="out_container" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
        </parameters>
      </method>
      <method name="tree_get_contents"
              c:identifier="ostree_repo_file_tree_get_contents">
        <return-value transfer-ownership="full">
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="tree_get_contents_checksum"
              c:identifier="ostree_repo_file_tree_get_contents_checksum">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="tree_get_metadata"
              c:identifier="ostree_repo_file_tree_get_metadata">
        <return-value transfer-ownership="full">
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="tree_get_metadata_checksum"
              c:identifier="ostree_repo_file_tree_get_metadata_checksum">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="tree_query_child"
              c:identifier="ostree_repo_file_tree_query_child"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="attributes" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <type name="Gio.FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
          </parameter>
          <parameter name="out_info" transfer-ownership="none">
            <type name="Gio.FileInfo" c:type="GFileInfo**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="tree_set_metadata"
              c:identifier="ostree_repo_file_tree_set_metadata">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="metadata" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="RepoFileClass"
            c:type="OstreeRepoFileClass"
            glib:is-gtype-struct-for="RepoFile">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="RepoFileEnumerator"
            c:type="OstreeRepoFileEnumerator"
            disguised="1">
    </record>
    <record name="RepoFileEnumeratorClass"
            c:type="OstreeRepoFileEnumeratorClass">
      <field name="parent_class" writable="1">
        <type name="Gio.FileEnumeratorClass" c:type="GFileEnumeratorClass"/>
      </field>
    </record>
    <interface name="RepoFinder"
               c:symbol-prefix="repo_finder"
               c:type="OstreeRepoFinder"
               glib:type-name="OstreeRepoFinder"
               glib:get-type="ostree_repo_finder_get_type"
               glib:type-struct="RepoFinderInterface">
      <function name="resolve_all_async"
                c:identifier="ostree_repo_finder_resolve_all_async"
                version="2017.8">
        <doc xml:space="preserve">A version of ostree_repo_finder_resolve_async() which queries one or more
@finders in parallel and combines the results.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="finders" transfer-ownership="none">
            <doc xml:space="preserve">non-empty array of #OstreeRepoFinders</doc>
            <array c:type="OstreeRepoFinder**">
              <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
            </array>
          </parameter>
          <parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">non-empty array of collection–ref pairs to find remotes for</doc>
            <array c:type="OstreeCollectionRef**">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
          <parameter name="parent_repo" transfer-ownership="none">
            <doc xml:space="preserve">the local repository which the refs are being resolved for,
   which provides configuration information and GPG keys</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve">asynchronous completion callback</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="resolve_all_finish"
                c:identifier="ostree_repo_finder_resolve_all_finish"
                version="2017.8"
                throws="1">
        <doc xml:space="preserve">Get the results from a ostree_repo_finder_resolve_all_async() operation.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">array of zero
   or more results</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="RepoFinderResult"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">#GAsyncResult from the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="resolve_async"
                      invoker="resolve_async"
                      version="2017.8">
        <doc xml:space="preserve">Find reachable remote URIs which claim to provide any of the given @refs. The
specific method for finding the remotes depends on the #OstreeRepoFinder
implementation.

Any remote which is found and which claims to support any of the given @refs
will be returned in the results. It is possible that a remote claims to
support a given ref, but turns out not to — it is not possible to verify this
until ostree_repo_pull_from_remotes_async() is called.

The returned results will be sorted with the most useful first — this is
typically the remote which claims to provide the most @refs, at the lowest
latency.

Each result contains a mapping of @refs to the checksums of the commits
which the result provides. If the result provides the latest commit for a ref
across all of the results, the checksum will be set. Otherwise, if the
result provides an outdated commit, or doesn’t provide a given ref at all,
the ref will not be set. Results which provide none of the requested @refs
may be listed with an empty refs map.

Pass the results to ostree_repo_pull_from_remotes_async() to pull the given
@refs from those remotes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepoFinder</doc>
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </instance-parameter>
          <parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">non-empty array of collection–ref pairs to find remotes for</doc>
            <array c:type="OstreeCollectionRef**">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
          <parameter name="parent_repo" transfer-ownership="none">
            <doc xml:space="preserve">the local repository which the refs are being resolved for,
   which provides configuration information and GPG keys</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve">asynchronous completion callback</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="4">
            <doc xml:space="preserve">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="resolve_finish"
                      invoker="resolve_finish"
                      version="2017.8"
                      throws="1">
        <doc xml:space="preserve">Get the results from a ostree_repo_finder_resolve_async() operation.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">array of zero
   or more results</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="RepoFinderResult"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepoFinder</doc>
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">#GAsyncResult from the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="resolve_async"
              c:identifier="ostree_repo_finder_resolve_async"
              version="2017.8">
        <doc xml:space="preserve">Find reachable remote URIs which claim to provide any of the given @refs. The
specific method for finding the remotes depends on the #OstreeRepoFinder
implementation.

Any remote which is found and which claims to support any of the given @refs
will be returned in the results. It is possible that a remote claims to
support a given ref, but turns out not to — it is not possible to verify this
until ostree_repo_pull_from_remotes_async() is called.

The returned results will be sorted with the most useful first — this is
typically the remote which claims to provide the most @refs, at the lowest
latency.

Each result contains a mapping of @refs to the checksums of the commits
which the result provides. If the result provides the latest commit for a ref
across all of the results, the checksum will be set. Otherwise, if the
result provides an outdated commit, or doesn’t provide a given ref at all,
the ref will not be set. Results which provide none of the requested @refs
may be listed with an empty refs map.

Pass the results to ostree_repo_pull_from_remotes_async() to pull the given
@refs from those remotes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepoFinder</doc>
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </instance-parameter>
          <parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">non-empty array of collection–ref pairs to find remotes for</doc>
            <array c:type="OstreeCollectionRef**">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
          <parameter name="parent_repo" transfer-ownership="none">
            <doc xml:space="preserve">the local repository which the refs are being resolved for,
   which provides configuration information and GPG keys</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve">asynchronous completion callback</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="resolve_finish"
              c:identifier="ostree_repo_finder_resolve_finish"
              version="2017.8"
              throws="1">
        <doc xml:space="preserve">Get the results from a ostree_repo_finder_resolve_async() operation.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">array of zero
   or more results</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="RepoFinderResult"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepoFinder</doc>
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">#GAsyncResult from the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <class name="RepoFinderAvahi"
           c:symbol-prefix="repo_finder_avahi"
           c:type="OstreeRepoFinderAvahi"
           parent="GObject.Object"
           glib:type-name="OstreeRepoFinderAvahi"
           glib:get-type="ostree_repo_finder_avahi_get_type"
           glib:type-struct="RepoFinderAvahiClass">
      <implements name="RepoFinder"/>
      <constructor name="new" c:identifier="ostree_repo_finder_avahi_new">
        <return-value transfer-ownership="full">
          <type name="RepoFinderAvahi" c:type="OstreeRepoFinderAvahi*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <type name="GLib.MainContext" c:type="GMainContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="start"
              c:identifier="ostree_repo_finder_avahi_start"
              version="2017.8"
              throws="1">
        <doc xml:space="preserve">Start monitoring the local network for peers who are advertising OSTree
repositories, using Avahi. In order for this to work, the #GMainContext
passed to @self at construction time must be iterated (so it will typically
be the global #GMainContext, or be a separate #GMainContext in a worker
thread).

This will return an error (%G_IO_ERROR_FAILED) if initialisation fails, or if
Avahi support is not available (%G_IO_ERROR_NOT_SUPPORTED). In either case,
the #OstreeRepoFinderAvahi instance is useless afterwards and should be
destroyed.

Call ostree_repo_finder_avahi_stop() to stop the repo finder.

It is an error to call this function multiple times on the same
#OstreeRepoFinderAvahi instance, or to call it after
ostree_repo_finder_avahi_stop().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepoFinderAvahi</doc>
            <type name="RepoFinderAvahi" c:type="OstreeRepoFinderAvahi*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="stop"
              c:identifier="ostree_repo_finder_avahi_stop"
              version="2017.8">
        <doc xml:space="preserve">Stop monitoring the local network for peers who are advertising OSTree
repositories. If any resolve tasks (from ostree_repo_finder_resolve_async())
are in progress, they will be cancelled and will return %G_IO_ERROR_CANCELLED.

Call ostree_repo_finder_avahi_start() to start the repo finder.

It is an error to call this function multiple times on the same
#OstreeRepoFinderAvahi instance, or to call it before
ostree_repo_finder_avahi_start().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepoFinderAvahi</doc>
            <type name="RepoFinderAvahi" c:type="OstreeRepoFinderAvahi*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="RepoFinderAvahiClass"
            c:type="OstreeRepoFinderAvahiClass"
            glib:is-gtype-struct-for="RepoFinderAvahi">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="RepoFinderConfig"
           c:symbol-prefix="repo_finder_config"
           c:type="OstreeRepoFinderConfig"
           parent="GObject.Object"
           glib:type-name="OstreeRepoFinderConfig"
           glib:get-type="ostree_repo_finder_config_get_type"
           glib:type-struct="RepoFinderConfigClass">
      <implements name="RepoFinder"/>
      <constructor name="new"
                   c:identifier="ostree_repo_finder_config_new"
                   version="2017.8">
        <doc xml:space="preserve">Create a new #OstreeRepoFinderConfig.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #OstreeRepoFinderConfig</doc>
          <type name="RepoFinderConfig" c:type="OstreeRepoFinderConfig*"/>
        </return-value>
      </constructor>
    </class>
    <record name="RepoFinderConfigClass"
            c:type="OstreeRepoFinderConfigClass"
            glib:is-gtype-struct-for="RepoFinderConfig">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="RepoFinderInterface"
            c:type="OstreeRepoFinderInterface"
            glib:is-gtype-struct-for="RepoFinder">
      <field name="g_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="resolve_async">
        <callback name="resolve_async">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">an #OstreeRepoFinder</doc>
              <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
            </parameter>
            <parameter name="refs" transfer-ownership="none">
              <doc xml:space="preserve">non-empty array of collection–ref pairs to find remotes for</doc>
              <array c:type="OstreeCollectionRef**">
                <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
              </array>
            </parameter>
            <parameter name="parent_repo" transfer-ownership="none">
              <doc xml:space="preserve">the local repository which the refs are being resolved for,
   which provides configuration information and GPG keys</doc>
              <type name="Repo" c:type="OstreeRepo*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="5">
              <doc xml:space="preserve">asynchronous completion callback</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="5">
              <doc xml:space="preserve">data to pass to @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="resolve_finish">
        <callback name="resolve_finish" throws="1">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">array of zero
   or more results</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="RepoFinderResult"/>
            </array>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve">an #OstreeRepoFinder</doc>
              <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">#GAsyncResult from the callback</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="RepoFinderMount"
           c:symbol-prefix="repo_finder_mount"
           c:type="OstreeRepoFinderMount"
           parent="GObject.Object"
           glib:type-name="OstreeRepoFinderMount"
           glib:get-type="ostree_repo_finder_mount_get_type"
           glib:type-struct="RepoFinderMountClass">
      <implements name="RepoFinder"/>
      <constructor name="new"
                   c:identifier="ostree_repo_finder_mount_new"
                   version="2017.8">
        <doc xml:space="preserve">Create a new #OstreeRepoFinderMount, using the given @monitor to look up
volumes. If @monitor is %NULL, the monitor from g_volume_monitor_get() will
be used.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #OstreeRepoFinderMount</doc>
          <type name="RepoFinderMount" c:type="OstreeRepoFinderMount*"/>
        </return-value>
        <parameters>
          <parameter name="monitor"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">volume monitor to use, or %NULL to use
   the system default</doc>
            <type name="Gio.VolumeMonitor" c:type="GVolumeMonitor*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="monitor"
                version="2017.8"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">Volume monitor to use to look up mounted volumes when queried.</doc>
        <type name="Gio.VolumeMonitor"/>
      </property>
    </class>
    <record name="RepoFinderMountClass"
            c:type="OstreeRepoFinderMountClass"
            glib:is-gtype-struct-for="RepoFinderMount">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="RepoFinderResult"
            c:type="OstreeRepoFinderResult"
            version="2017.8"
            glib:type-name="OstreeRepoFinderResult"
            glib:get-type="ostree_repo_finder_result_get_type"
            c:symbol-prefix="repo_finder_result">
      <doc xml:space="preserve">#OstreeRepoFinderResult gives a single result from an
ostree_repo_finder_resolve_async() or ostree_repo_finder_resolve_all_async()
operation. This represents a single remote which provides none, some or all
of the refs being resolved. The structure includes various bits of metadata
which allow ostree_repo_pull_from_remotes_async() (for example) to prioritise
how to pull the refs.

The @priority is used as one input of many to ordering functions like
ostree_repo_finder_result_compare().

@ref_to_checksum indicates which refs (out of the ones queried for as inputs
to ostree_repo_finder_resolve_async()) are provided by this remote. The refs
are present as keys (of type #OstreeCollectionRef), and the corresponding values
are the checksums of the commits the remote currently has for those refs. (These
might not be the latest commits available out of all results.) A
checksum may be %NULL if the remote does not advertise the corresponding ref.
After ostree_repo_finder_resolve_async() has been called, the commit metadata
should be available locally, so the details for each checksum can be looked
up using ostree_repo_load_commit().</doc>
      <field name="remote" writable="1">
        <doc xml:space="preserve">#OstreeRemote which contains the transport details for the result,
   such as its URI and GPG key</doc>
        <type name="Remote" c:type="OstreeRemote*"/>
      </field>
      <field name="finder" writable="1">
        <doc xml:space="preserve">the #OstreeRepoFinder instance which produced this result</doc>
        <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
      </field>
      <field name="priority" writable="1">
        <doc xml:space="preserve">static priority of the result, where higher numbers indicate lower
   priority</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="ref_to_checksum" writable="1">
        <doc xml:space="preserve">map of collection–ref
   pairs to checksums provided by this remote; values may be %NULL to
   indicate this remote doesn’t provide that ref</doc>
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="CollectionRef"/>
          <type name="utf8"/>
        </type>
      </field>
      <field name="summary_last_modified" writable="1">
        <doc xml:space="preserve">Unix timestamp (seconds since the epoch, UTC) when
   the summary file on the remote was last modified, or `0` if unknown</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="4">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <constructor name="new"
                   c:identifier="ostree_repo_finder_result_new"
                   version="2017.8">
        <doc xml:space="preserve">Create a new #OstreeRepoFinderResult instance. The semantics for the arguments
are as described in the #OstreeRepoFinderResult documentation.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #OstreeRepoFinderResult</doc>
          <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
        </return-value>
        <parameters>
          <parameter name="remote" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRemote containing the transport details
   for the result</doc>
            <type name="Remote" c:type="OstreeRemote*"/>
          </parameter>
          <parameter name="finder" transfer-ownership="none">
            <doc xml:space="preserve">the #OstreeRepoFinder instance which produced the
   result</doc>
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </parameter>
          <parameter name="priority" transfer-ownership="none">
            <doc xml:space="preserve">static priority of the result, where higher numbers indicate lower
   priority</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="ref_to_checksum" transfer-ownership="none">
            <doc xml:space="preserve">map of collection–ref pairs
   to checksums provided by this result</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="CollectionRef"/>
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="summary_last_modified" transfer-ownership="none">
            <doc xml:space="preserve">Unix timestamp (seconds since the epoch, UTC) when
   the summary file for the result was last modified, or `0` if this is unknown</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="compare"
              c:identifier="ostree_repo_finder_result_compare"
              version="2017.8">
        <doc xml:space="preserve">Compare two #OstreeRepoFinderResult instances to work out which one is better
to pull from, and hence needs to be ordered before the other.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">&lt;0 if @a is ordered before @b, 0 if they are ordered equally,
   &gt;0 if @b is ordered before @a</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="a" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepoFinderResult</doc>
            <type name="RepoFinderResult"
                  c:type="const OstreeRepoFinderResult*"/>
          </instance-parameter>
          <parameter name="b" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepoFinderResult</doc>
            <type name="RepoFinderResult"
                  c:type="const OstreeRepoFinderResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dup"
              c:identifier="ostree_repo_finder_result_dup"
              version="2017.8">
        <doc xml:space="preserve">Copy an #OstreeRepoFinderResult.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated copy of @result</doc>
          <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">an #OstreeRepoFinderResult to copy</doc>
            <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="ostree_repo_finder_result_free"
              version="2017.8">
        <doc xml:space="preserve">Free the given @result.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="full">
            <doc xml:space="preserve">an #OstreeRepoFinderResult</doc>
            <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="freev"
                c:identifier="ostree_repo_finder_result_freev"
                version="2017.8">
        <doc xml:space="preserve">Free the given @results array, freeing each element and the container.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="results" transfer-ownership="full">
            <doc xml:space="preserve">an #OstreeRepoFinderResult</doc>
            <array c:type="OstreeRepoFinderResult**">
              <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
            </array>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="RepoImportArchiveOptions"
            c:type="OstreeRepoImportArchiveOptions"
            introspectable="0">
      <doc xml:space="preserve">An extensible options structure controlling archive import.  Ensure that
you have entirely zeroed the structure, then set just the desired
options.  This is used by ostree_repo_import_archive_to_mtree().</doc>
      <field name="ignore_unsupported_content" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="autocreate_parents" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="use_ostree_convention" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="callback_with_entry_pathname" writable="1" bits="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="reserved" writable="1" bits="28">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="unused_uint" writable="1">
        <array zero-terminated="0" c:type="guint" fixed-size="8">
          <type name="guint" c:type="guint"/>
        </array>
      </field>
      <field name="translate_pathname" writable="1">
        <type name="RepoImportArchiveTranslatePathname"
              c:type="OstreeRepoImportArchiveTranslatePathname"/>
      </field>
      <field name="translate_pathname_user_data" writable="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="6">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <callback name="RepoImportArchiveTranslatePathname"
              c:type="OstreeRepoImportArchiveTranslatePathname"
              version="2017.11">
      <doc xml:space="preserve">Possibly change a pathname while importing an archive. If %NULL is returned,
then @src_path will be used unchanged.  Otherwise, return a new pathname which
will be freed via `g_free()`.

This pathname translation will be performed *before* any processing from an
active `OstreeRepoCommitModifier`. Will be invoked for all directory and file
types, first with outer directories, then their sub-files and directories.

Note that enabling pathname translation will always override the setting for
`use_ostree_convention`.</doc>
      <return-value transfer-ownership="full">
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="repo" transfer-ownership="none">
          <doc xml:space="preserve">Repo</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </parameter>
        <parameter name="stbuf"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Stat buffer</doc>
          <type name="gpointer" c:type="const stat*"/>
        </parameter>
        <parameter name="src_path" transfer-ownership="none">
          <doc xml:space="preserve">Path in the archive</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve">User data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <bitfield name="RepoListObjectsFlags" c:type="OstreeRepoListObjectsFlags">
      <member name="loose"
              value="1"
              c:identifier="OSTREE_REPO_LIST_OBJECTS_LOOSE">
        <doc xml:space="preserve">List only loose (plain file) objects</doc>
      </member>
      <member name="packed"
              value="2"
              c:identifier="OSTREE_REPO_LIST_OBJECTS_PACKED">
        <doc xml:space="preserve">List only packed (compacted into blobs) objects</doc>
      </member>
      <member name="all" value="4" c:identifier="OSTREE_REPO_LIST_OBJECTS_ALL">
        <doc xml:space="preserve">List all objects</doc>
      </member>
      <member name="no_parents"
              value="8"
              c:identifier="OSTREE_REPO_LIST_OBJECTS_NO_PARENTS">
        <doc xml:space="preserve">Only list objects in this repo, not parents</doc>
      </member>
    </bitfield>
    <bitfield name="RepoListRefsExtFlags" c:type="OstreeRepoListRefsExtFlags">
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_LIST_REFS_EXT_NONE">
        <doc xml:space="preserve">No flags.</doc>
      </member>
      <member name="aliases"
              value="1"
              c:identifier="OSTREE_REPO_LIST_REFS_EXT_ALIASES">
        <doc xml:space="preserve">Only list aliases.  Since: 2017.10</doc>
      </member>
      <member name="exclude_remotes"
              value="2"
              c:identifier="OSTREE_REPO_LIST_REFS_EXT_EXCLUDE_REMOTES">
        <doc xml:space="preserve">Exclude remote refs.  Since: 2017.11</doc>
      </member>
    </bitfield>
    <enumeration name="RepoMode" c:type="OstreeRepoMode">
      <doc xml:space="preserve">See the documentation of #OstreeRepo for more information about the
possible modes.</doc>
      <member name="bare" value="0" c:identifier="OSTREE_REPO_MODE_BARE">
        <doc xml:space="preserve">Files are stored as themselves; checkouts are hardlinks; can only be written as root</doc>
      </member>
      <member name="archive" value="1" c:identifier="OSTREE_REPO_MODE_ARCHIVE">
        <doc xml:space="preserve">Files are compressed, should be owned by non-root.  Can be served via HTTP.  Since: 2017.12</doc>
      </member>
      <member name="archive_z2"
              value="1"
              c:identifier="OSTREE_REPO_MODE_ARCHIVE_Z2">
        <doc xml:space="preserve">Legacy alias for `OSTREE_REPO_MODE_ARCHIVE`</doc>
      </member>
      <member name="bare_user"
              value="2"
              c:identifier="OSTREE_REPO_MODE_BARE_USER">
        <doc xml:space="preserve">Files are stored as themselves, except ownership; can be written by user. Hardlinks work only in user checkouts.</doc>
      </member>
      <member name="bare_user_only"
              value="3"
              c:identifier="OSTREE_REPO_MODE_BARE_USER_ONLY">
        <doc xml:space="preserve">Same as BARE_USER, but all metadata is not stored, so it can only be used for user checkouts. Does not need xattrs.</doc>
      </member>
    </enumeration>
    <enumeration name="RepoPruneFlags" c:type="OstreeRepoPruneFlags">
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_PRUNE_FLAGS_NONE">
        <doc xml:space="preserve">No special options for pruning</doc>
      </member>
      <member name="no_prune"
              value="1"
              c:identifier="OSTREE_REPO_PRUNE_FLAGS_NO_PRUNE">
        <doc xml:space="preserve">Don't actually delete objects</doc>
      </member>
      <member name="refs_only"
              value="2"
              c:identifier="OSTREE_REPO_PRUNE_FLAGS_REFS_ONLY">
        <doc xml:space="preserve">Do not traverse individual commit objects, only follow refs</doc>
      </member>
    </enumeration>
    <record name="RepoPruneOptions" c:type="OstreeRepoPruneOptions">
      <field name="flags" writable="1">
        <type name="RepoPruneFlags" c:type="OstreeRepoPruneFlags"/>
      </field>
      <field name="reachable" writable="1">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="unused_bools" writable="1">
        <array zero-terminated="0" c:type="gboolean" fixed-size="6">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
      <field name="unused_ints" writable="1">
        <array zero-terminated="0" c:type="int" fixed-size="6">
          <type name="gint" c:type="int"/>
        </array>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="RepoPullFlags" c:type="OstreeRepoPullFlags">
      <member name="none" value="0" c:identifier="OSTREE_REPO_PULL_FLAGS_NONE">
        <doc xml:space="preserve">No special options for pull</doc>
      </member>
      <member name="mirror"
              value="1"
              c:identifier="OSTREE_REPO_PULL_FLAGS_MIRROR">
        <doc xml:space="preserve">Write out refs suitable for mirrors and fetch all refs if none requested</doc>
      </member>
      <member name="commit_only"
              value="2"
              c:identifier="OSTREE_REPO_PULL_FLAGS_COMMIT_ONLY">
        <doc xml:space="preserve">Fetch only the commit metadata</doc>
      </member>
      <member name="untrusted"
              value="4"
              c:identifier="OSTREE_REPO_PULL_FLAGS_UNTRUSTED">
        <doc xml:space="preserve">Do verify checksums of local (filesystem-accessible) repositories (defaults on for HTTP)</doc>
      </member>
      <member name="bareuseronly_files"
              value="8"
              c:identifier="OSTREE_REPO_PULL_FLAGS_BAREUSERONLY_FILES">
        <doc xml:space="preserve">Since 2017.7.  Reject writes of content objects with modes outside of 0775.</doc>
      </member>
      <member name="trusted_http"
              value="16"
              c:identifier="OSTREE_REPO_PULL_FLAGS_TRUSTED_HTTP">
        <doc xml:space="preserve">Don't verify checksums of objects HTTP repositories (Since: 2017.12)</doc>
      </member>
    </bitfield>
    <enumeration name="RepoRemoteChange" c:type="OstreeRepoRemoteChange">
      <doc xml:space="preserve">The remote change operation.</doc>
      <member name="add"
              value="0"
              c:identifier="OSTREE_REPO_REMOTE_CHANGE_ADD">
        <doc xml:space="preserve">Add a remote</doc>
      </member>
      <member name="add_if_not_exists"
              value="1"
              c:identifier="OSTREE_REPO_REMOTE_CHANGE_ADD_IF_NOT_EXISTS">
        <doc xml:space="preserve">Like above, but do nothing if the remote exists</doc>
      </member>
      <member name="delete"
              value="2"
              c:identifier="OSTREE_REPO_REMOTE_CHANGE_DELETE">
        <doc xml:space="preserve">Delete a remote</doc>
      </member>
      <member name="delete_if_exists"
              value="3"
              c:identifier="OSTREE_REPO_REMOTE_CHANGE_DELETE_IF_EXISTS">
        <doc xml:space="preserve">Delete a remote, do nothing if the remote does not exist</doc>
      </member>
    </enumeration>
    <enumeration name="RepoResolveRevExtFlags"
                 c:type="OstreeRepoResolveRevExtFlags">
      <member name="repo_resolve_rev_ext_none"
              value="0"
              c:identifier="OSTREE_REPO_RESOLVE_REV_EXT_NONE">
        <doc xml:space="preserve">No flags.</doc>
      </member>
    </enumeration>
    <record name="RepoTransactionStats"
            c:type="OstreeRepoTransactionStats"
            glib:type-name="OstreeRepoTransactionStats"
            glib:get-type="ostree_repo_transaction_stats_get_type"
            c:symbol-prefix="repo_transaction_stats">
      <doc xml:space="preserve">A list of statistics for each transaction that may be
interesting for reporting purposes.</doc>
      <field name="metadata_objects_total" writable="1">
        <doc xml:space="preserve">The total number of metadata objects
in the repository after this transaction has completed.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="metadata_objects_written" writable="1">
        <doc xml:space="preserve">The number of metadata objects that
were written to the repository in this transaction.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="content_objects_total" writable="1">
        <doc xml:space="preserve">The total number of content objects
in the repository after this transaction has completed.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="content_objects_written" writable="1">
        <doc xml:space="preserve">The number of content objects that
were written to the repository in this transaction.</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="content_bytes_written" writable="1">
        <doc xml:space="preserve">The amount of data added to the repository,
in bytes, counting only content objects.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="padding1" writable="1">
        <doc xml:space="preserve">reserved</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="padding2" writable="1">
        <doc xml:space="preserve">reserved</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="padding3" writable="1">
        <doc xml:space="preserve">reserved</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="padding4" writable="1">
        <doc xml:space="preserve">reserved</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
    </record>
    <record name="RollsumMatches" c:type="OstreeRollsumMatches">
      <field name="from_rollsums" writable="1">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="to_rollsums" writable="1">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="crcmatches" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="bufmatches" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="total" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="match_size" writable="1">
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="matches" writable="1">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <constant name="SHA256_DIGEST_LEN"
              value="32"
              c:type="OSTREE_SHA256_DIGEST_LEN">
      <doc xml:space="preserve">Length of a sha256 digest when expressed as raw bytes</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SHA256_STRING_LEN"
              value="64"
              c:type="OSTREE_SHA256_STRING_LEN">
      <doc xml:space="preserve">Length of a sha256 digest when expressed as a hexadecimal string</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SUMMARY_GVARIANT_STRING"
              value="(a(s(taya{sv}))a{sv})"
              c:type="OSTREE_SUMMARY_GVARIANT_STRING">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SUMMARY_SIG_GVARIANT_STRING"
              value="a{sv}"
              c:type="OSTREE_SUMMARY_SIG_GVARIANT_STRING">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="SePolicy"
           c:symbol-prefix="sepolicy"
           c:type="OstreeSePolicy"
           parent="GObject.Object"
           glib:type-name="OstreeSePolicy"
           glib:get-type="ostree_sepolicy_get_type">
      <implements name="Gio.Initable"/>
      <constructor name="new" c:identifier="ostree_sepolicy_new" throws="1">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An accessor object for SELinux policy in root located at @path</doc>
          <type name="SePolicy" c:type="OstreeSePolicy*"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">Path to a root directory</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_at"
                   c:identifier="ostree_sepolicy_new_at"
                   throws="1">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An accessor object for SELinux policy in root located at @rootfs_dfd</doc>
          <type name="SePolicy" c:type="OstreeSePolicy*"/>
        </return-value>
        <parameters>
          <parameter name="rootfs_dfd" transfer-ownership="none">
            <doc xml:space="preserve">Directory fd for rootfs (will not be cloned)</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="fscreatecon_cleanup"
                c:identifier="ostree_sepolicy_fscreatecon_cleanup">
        <doc xml:space="preserve">Cleanup function for ostree_sepolicy_setfscreatecon().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="unused"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Not used, just in case you didn't infer that from the parameter name</doc>
            <type name="gpointer" c:type="void**"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_csum" c:identifier="ostree_sepolicy_get_csum">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Checksum of current policy</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_label"
              c:identifier="ostree_sepolicy_get_label"
              throws="1">
        <doc xml:space="preserve">Store in @out_label the security context for the given @relpath and
mode @unix_mode.  If the policy does not specify a label, %NULL
will be returned.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </instance-parameter>
          <parameter name="relpath" transfer-ownership="none">
            <doc xml:space="preserve">Path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="unix_mode" transfer-ownership="none">
            <doc xml:space="preserve">Unix mode</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="out_label"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">Return location for security context</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="ostree_sepolicy_get_name">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Type of current policy</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_path" c:identifier="ostree_sepolicy_get_path">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Path to rootfs</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="restorecon"
              c:identifier="ostree_sepolicy_restorecon"
              throws="1">
        <doc xml:space="preserve">Reset the security context of @target based on the SELinux policy.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">Path string to use for policy lookup</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="info"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">File attributes</doc>
            <type name="Gio.FileInfo" c:type="GFileInfo*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve">Physical path to target file</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Flags controlling behavior</doc>
            <type name="SePolicyRestoreconFlags"
                  c:type="OstreeSePolicyRestoreconFlags"/>
          </parameter>
          <parameter name="out_new_label"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">New label, or %NULL if unchanged</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="setfscreatecon"
              c:identifier="ostree_sepolicy_setfscreatecon"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Policy</doc>
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">Use this path to determine a label</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">Used along with @path</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <property name="path"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Gio.File"/>
      </property>
      <property name="rootfs-dfd"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
    </class>
    <bitfield name="SePolicyRestoreconFlags"
              c:type="OstreeSePolicyRestoreconFlags">
      <member name="none"
              value="0"
              c:identifier="OSTREE_SEPOLICY_RESTORECON_FLAGS_NONE">
      </member>
      <member name="allow_nolabel"
              value="1"
              c:identifier="OSTREE_SEPOLICY_RESTORECON_FLAGS_ALLOW_NOLABEL">
      </member>
      <member name="keep_existing"
              value="2"
              c:identifier="OSTREE_SEPOLICY_RESTORECON_FLAGS_KEEP_EXISTING">
      </member>
    </bitfield>
    <enumeration name="StaticDeltaGenerateOpt"
                 c:type="OstreeStaticDeltaGenerateOpt">
      <doc xml:space="preserve">Parameters controlling optimization of static deltas.</doc>
      <member name="lowlatency"
              value="0"
              c:identifier="OSTREE_STATIC_DELTA_GENERATE_OPT_LOWLATENCY">
        <doc xml:space="preserve">Optimize for speed of delta creation over space</doc>
      </member>
      <member name="major"
              value="1"
              c:identifier="OSTREE_STATIC_DELTA_GENERATE_OPT_MAJOR">
        <doc xml:space="preserve">Optimize for delta size (may be very slow)</doc>
      </member>
    </enumeration>
    <class name="Sysroot"
           c:symbol-prefix="sysroot"
           c:type="OstreeSysroot"
           parent="GObject.Object"
           glib:type-name="OstreeSysroot"
           glib:get-type="ostree_sysroot_get_type">
      <constructor name="new" c:identifier="ostree_sysroot_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An accessor object for an system root located at @path</doc>
          <type name="Sysroot" c:type="OstreeSysroot*"/>
        </return-value>
        <parameters>
          <parameter name="path"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Path to a system root directory, or %NULL</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_default"
                   c:identifier="ostree_sysroot_new_default">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An accessor for the current visible root / filesystem</doc>
          <type name="Sysroot" c:type="OstreeSysroot*"/>
        </return-value>
      </constructor>
      <function name="get_deployment_origin_path"
                c:identifier="ostree_sysroot_get_deployment_origin_path">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Path to deployment origin file</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <parameter name="deployment_path" transfer-ownership="none">
            <doc xml:space="preserve">A deployment path</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </function>
      <method name="cleanup" c:identifier="ostree_sysroot_cleanup" throws="1">
        <doc xml:space="preserve">Delete any state that resulted from a partially completed
transaction, such as incomplete deployments.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deploy_tree"
              c:identifier="ostree_sysroot_deploy_tree"
              throws="1">
        <doc xml:space="preserve">Check out deployment tree with revision @revision, performing a 3
way merge with @provided_merge_deployment for configuration.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="osname"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">osname to use for merge deployment</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="revision" transfer-ownership="none">
            <doc xml:space="preserve">Checksum to add</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="origin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Origin to use for upgrades</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
          <parameter name="provided_merge_deployment"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Use this deployment for merge path</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="override_kernel_argv"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Use these as kernel arguments; if %NULL, inherit options from provided_merge_deployment</doc>
            <array c:type="char**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="out_new_deployment"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The new deployment path</doc>
            <type name="Deployment" c:type="OstreeDeployment**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deployment_set_kargs"
              c:identifier="ostree_sysroot_deployment_set_kargs"
              throws="1">
        <doc xml:space="preserve">Entirely replace the kernel arguments of @deployment with the
values in @new_kargs.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="new_kargs" transfer-ownership="none">
            <doc xml:space="preserve">Replace deployment's kernel arguments</doc>
            <array c:type="char**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deployment_set_mutable"
              c:identifier="ostree_sysroot_deployment_set_mutable"
              throws="1">
        <doc xml:space="preserve">By default, deployment directories are not mutable.  This function
will allow making them temporarily mutable, for example to allow
layering additional non-OSTree content.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="is_mutable" transfer-ownership="none">
            <doc xml:space="preserve">Whether or not deployment's files can be changed</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deployment_unlock"
              c:identifier="ostree_sysroot_deployment_unlock"
              throws="1">
        <doc xml:space="preserve">Configure the target deployment @deployment such that it
is writable.  There are multiple modes, essentially differing
in whether or not any changes persist across reboot.

The `OSTREE_DEPLOYMENT_UNLOCKED_HOTFIX` state is persistent
across reboots.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="unlocked_state" transfer-ownership="none">
            <doc xml:space="preserve">Transition to this unlocked state</doc>
            <type name="DeploymentUnlockedState"
                  c:type="OstreeDeploymentUnlockedState"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ensure_initialized"
              c:identifier="ostree_sysroot_ensure_initialized"
              throws="1">
        <doc xml:space="preserve">Ensure that @self is set up as a valid rootfs, by creating
/ostree/repo, among other things.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_booted_deployment"
              c:identifier="ostree_sysroot_get_booted_deployment">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The currently booted deployment, or %NULL if none</doc>
          <type name="Deployment" c:type="OstreeDeployment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bootversion"
              c:identifier="ostree_sysroot_get_bootversion">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_deployment_directory"
              c:identifier="ostree_sysroot_get_deployment_directory">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Path to deployment root directory</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_deployment_dirpath"
              c:identifier="ostree_sysroot_get_deployment_dirpath">
        <doc xml:space="preserve">Note this function only returns a *relative* path - if you want
to access, it, you must either use fd-relative api such as openat(),
or concatenate it with the full ostree_sysroot_get_path().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Path to deployment root directory, relative to sysroot</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_deployments"
              c:identifier="ostree_sysroot_get_deployments">
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">Ordered list of deployments</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Deployment"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_fd" c:identifier="ostree_sysroot_get_fd">
        <doc xml:space="preserve">Access a file descriptor that refers to the root directory of this
sysroot.  ostree_sysroot_load() must have been invoked prior to
calling this function.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A file descriptor valid for the lifetime of @self</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_merge_deployment"
              c:identifier="ostree_sysroot_get_merge_deployment">
        <doc xml:space="preserve">Find the deployment to use as a configuration merge source; this is
the first one in the current deployment list which matches osname.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Configuration merge deployment</doc>
          <type name="Deployment" c:type="OstreeDeployment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="osname"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Operating system group</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_path" c:identifier="ostree_sysroot_get_path">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Path to rootfs</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_repo"
              c:identifier="ostree_sysroot_get_repo"
              throws="1">
        <doc xml:space="preserve">Retrieve the OSTree repository in sysroot @self.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="out_repo"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Repository in sysroot @self</doc>
            <type name="Repo" c:type="OstreeRepo**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_subbootversion"
              c:identifier="ostree_sysroot_get_subbootversion">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init_osname"
              c:identifier="ostree_sysroot_init_osname"
              throws="1">
        <doc xml:space="preserve">Initialize the directory structure for an "osname", which is a
group of operating system deployments, with a shared `/var`.  One
is required for generating a deployment.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="osname" transfer-ownership="none">
            <doc xml:space="preserve">Name group of operating system checkouts</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load" c:identifier="ostree_sysroot_load" throws="1">
        <doc xml:space="preserve">Load deployment list, bootversion, and subbootversion from the
rootfs @self.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_if_changed"
              c:identifier="ostree_sysroot_load_if_changed"
              throws="1">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="out_changed" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lock" c:identifier="ostree_sysroot_lock" throws="1">
        <doc xml:space="preserve">Acquire an exclusive multi-process write lock for @self.  This call
blocks until the lock has been acquired.  The lock is not
reentrant.

Release the lock with ostree_sysroot_unlock().  The lock will also
be released if @self is deallocated.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lock_async" c:identifier="ostree_sysroot_lock_async">
        <doc xml:space="preserve">An asynchronous version of ostree_sysroot_lock().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">Callback</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">User data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="lock_finish"
              c:identifier="ostree_sysroot_lock_finish"
              throws="1">
        <doc xml:space="preserve">Call when ostree_sysroot_lock_async() is ready.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">Result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="origin_new_from_refspec"
              c:identifier="ostree_sysroot_origin_new_from_refspec">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A new config file which sets @refspec as an origin</doc>
          <type name="GLib.KeyFile" c:type="GKeyFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="refspec" transfer-ownership="none">
            <doc xml:space="preserve">A refspec</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepare_cleanup"
              c:identifier="ostree_sysroot_prepare_cleanup"
              throws="1">
        <doc xml:space="preserve">Like ostree_sysroot_cleanup() in that it cleans up incomplete deployments
and old boot versions, but does NOT prune the repository.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_deployments_for"
              c:identifier="ostree_sysroot_query_deployments_for"
              version="2017.7">
        <doc xml:space="preserve">Find the pending and rollback deployments for @osname. Pass %NULL for @osname
to use the booted deployment's osname. By default, pending deployment is the
first deployment in the order that matches @osname, and @rollback will be the
next one after the booted deployment, or the deployment after the pending if
we're not looking at the booted deployment.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="osname"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">"stateroot" name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_pending"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">The pending deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment**"/>
          </parameter>
          <parameter name="out_rollback"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">The rollback deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment**"/>
          </parameter>
        </parameters>
      </method>
      <method name="repo" c:identifier="ostree_sysroot_repo">
        <doc xml:space="preserve">This function is a variant of ostree_sysroot_get_repo() that cannot fail, and
returns a cached repository. Can only be called after ostree_sysroot_load()
has been invoked successfully.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The OSTree repository in sysroot @self.</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="simple_write_deployment"
              c:identifier="ostree_sysroot_simple_write_deployment"
              throws="1">
        <doc xml:space="preserve">Prepend @new_deployment to the list of deployments, commit, and
cleanup.  By default, all other deployments for the given @osname
except the merge deployment and the booted deployment will be
garbage collected.

If %OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_RETAIN is
specified, then all current deployments will be kept.

If %OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_RETAIN_PENDING is
specified, then pending deployments will be kept.

If %OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_RETAIN_ROLLBACK is
specified, then rollback deployments will be kept.

If %OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_NOT_DEFAULT is
specified, then instead of prepending, the new deployment will be
added right after the booted or merge deployment, instead of first.

If %OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_NO_CLEAN is
specified, then no cleanup will be performed after adding the
deployment. Make sure to call ostree_sysroot_cleanup() sometime
later, instead.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="sysroot" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="osname"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">OS name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="new_deployment" transfer-ownership="none">
            <doc xml:space="preserve">Prepend this deployment to the list</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="merge_deployment"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Use this deployment for configuration merge</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Flags controlling behavior</doc>
            <type name="SysrootSimpleWriteDeploymentFlags"
                  c:type="OstreeSysrootSimpleWriteDeploymentFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="try_lock"
              c:identifier="ostree_sysroot_try_lock"
              throws="1">
        <doc xml:space="preserve">Try to acquire an exclusive multi-process write lock for @self.  If
another process holds the lock, this function will return
immediately, setting @out_acquired to %FALSE, and returning %TRUE
(and no error).

Release the lock with ostree_sysroot_unlock().  The lock will also
be released if @self is deallocated.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="out_acquired"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Whether or not the lock has been acquired</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unload" c:identifier="ostree_sysroot_unload">
        <doc xml:space="preserve">Release any resources such as file descriptors referring to the
root directory of this sysroot.  Normally, those resources are
cleared by finalization, but in garbage collected languages that
may not be predictable.

This undoes the effect of `ostree_sysroot_load()`.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unlock" c:identifier="ostree_sysroot_unlock">
        <doc xml:space="preserve">Clear the lock previously acquired with ostree_sysroot_lock().  It
is safe to call this function if the lock has not been previously
acquired.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write_deployments"
              c:identifier="ostree_sysroot_write_deployments"
              throws="1">
        <doc xml:space="preserve">Older version of ostree_sysroot_write_deployments_with_options(). This
version will perform post-deployment cleanup by default.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="new_deployments" transfer-ownership="none">
            <doc xml:space="preserve">List of new deployments</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="Deployment"/>
            </array>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_deployments_with_options"
              c:identifier="ostree_sysroot_write_deployments_with_options"
              throws="1">
        <doc xml:space="preserve">Assuming @new_deployments have already been deployed in place on disk via
ostree_sysroot_deploy_tree(), atomically update bootloader configuration. By
default, no post-transaction cleanup will be performed. You should invoke
ostree_sysroot_cleanup() at some point after the transaction, or specify
`do_postclean` in @opts.  Skipping the post-transaction cleanup is useful
if for example you want to control pruning of the repository.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="new_deployments" transfer-ownership="none">
            <doc xml:space="preserve">List of new deployments</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="Deployment"/>
            </array>
          </parameter>
          <parameter name="opts" transfer-ownership="none">
            <doc xml:space="preserve">Options</doc>
            <type name="SysrootWriteDeploymentsOpts"
                  c:type="OstreeSysrootWriteDeploymentsOpts*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_origin_file"
              c:identifier="ostree_sysroot_write_origin_file"
              throws="1">
        <doc xml:space="preserve">Immediately replace the origin file of the referenced @deployment
with the contents of @new_origin.  If @new_origin is %NULL,
this function will write the current origin of @deployment.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="sysroot" transfer-ownership="none">
            <doc xml:space="preserve">System root</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="new_origin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Origin content</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="path"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Gio.File"/>
      </property>
      <glib:signal name="journal-msg" when="last" version="2017.10">
        <doc xml:space="preserve">libostree will log to the journal various events, such as the /etc merge
status, and transaction completion. Connect to this signal to also
synchronously receive the text for those messages. This is intended to be
used by command line tools which link to libostree as a library.

Currently, the structured data is only available via the systemd journal.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="msg" transfer-ownership="none">
            <doc xml:space="preserve">Human-readable string (should not contain newlines)</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <bitfield name="SysrootSimpleWriteDeploymentFlags"
              c:type="OstreeSysrootSimpleWriteDeploymentFlags">
      <member name="none"
              value="0"
              c:identifier="OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_NONE">
      </member>
      <member name="retain"
              value="1"
              c:identifier="OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_RETAIN">
      </member>
      <member name="not_default"
              value="2"
              c:identifier="OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_NOT_DEFAULT">
      </member>
      <member name="no_clean"
              value="4"
              c:identifier="OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_NO_CLEAN">
      </member>
      <member name="retain_pending"
              value="8"
              c:identifier="OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_RETAIN_PENDING">
      </member>
      <member name="retain_rollback"
              value="16"
              c:identifier="OSTREE_SYSROOT_SIMPLE_WRITE_DEPLOYMENT_FLAGS_RETAIN_ROLLBACK">
      </member>
    </bitfield>
    <class name="SysrootUpgrader"
           c:symbol-prefix="sysroot_upgrader"
           c:type="OstreeSysrootUpgrader"
           parent="GObject.Object"
           glib:type-name="OstreeSysrootUpgrader"
           glib:get-type="ostree_sysroot_upgrader_get_type">
      <implements name="Gio.Initable"/>
      <constructor name="new"
                   c:identifier="ostree_sysroot_upgrader_new"
                   throws="1">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An upgrader</doc>
          <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
        </return-value>
        <parameters>
          <parameter name="sysroot" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeSysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_for_os"
                   c:identifier="ostree_sysroot_upgrader_new_for_os"
                   throws="1">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An upgrader</doc>
          <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
        </return-value>
        <parameters>
          <parameter name="sysroot" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeSysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </parameter>
          <parameter name="osname"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Operating system name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_for_os_with_flags"
                   c:identifier="ostree_sysroot_upgrader_new_for_os_with_flags"
                   throws="1">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An upgrader</doc>
          <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
        </return-value>
        <parameters>
          <parameter name="sysroot" transfer-ownership="none">
            <doc xml:space="preserve">An #OstreeSysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </parameter>
          <parameter name="osname"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Operating system name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Flags</doc>
            <type name="SysrootUpgraderFlags"
                  c:type="OstreeSysrootUpgraderFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="check_timestamps"
                c:identifier="ostree_sysroot_upgrader_check_timestamps"
                throws="1">
        <doc xml:space="preserve">Check that the timestamp on @to_rev is equal to or newer than
@from_rev.  This protects systems against man-in-the-middle
attackers which provide a client with an older commit.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="from_rev" transfer-ownership="none">
            <doc xml:space="preserve">From revision</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="to_rev" transfer-ownership="none">
            <doc xml:space="preserve">To revision</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <method name="deploy"
              c:identifier="ostree_sysroot_upgrader_deploy"
              throws="1">
        <doc xml:space="preserve">Write the new deployment to disk, perform a configuration merge
with /etc, and update the bootloader configuration.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Self</doc>
            <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dup_origin"
              c:identifier="ostree_sysroot_upgrader_dup_origin">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A copy of the origin file, or %NULL if unknown</doc>
          <type name="GLib.KeyFile" c:type="GKeyFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_origin"
              c:identifier="ostree_sysroot_upgrader_get_origin">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The origin file, or %NULL if unknown</doc>
          <type name="GLib.KeyFile" c:type="GKeyFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_origin_description"
              c:identifier="ostree_sysroot_upgrader_get_origin_description">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A one-line descriptive summary of the origin, or %NULL if unknown</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Upgrader</doc>
            <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="pull"
              c:identifier="ostree_sysroot_upgrader_pull"
              throws="1">
        <doc xml:space="preserve">Perform a pull from the origin.  First check if the ref has
changed, if so download the linked objects, and store the updated
ref locally.  Then @out_changed will be %TRUE.

If the origin remote is unchanged, @out_changed will be set to
%FALSE.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Upgrader</doc>
            <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Flags controlling pull behavior</doc>
            <type name="RepoPullFlags" c:type="OstreeRepoPullFlags"/>
          </parameter>
          <parameter name="upgrader_flags" transfer-ownership="none">
            <doc xml:space="preserve">Flags controlling upgrader behavior</doc>
            <type name="SysrootUpgraderPullFlags"
                  c:type="OstreeSysrootUpgraderPullFlags"/>
          </parameter>
          <parameter name="progress"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Progress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="out_changed"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Whether or not the origin changed</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="pull_one_dir"
              c:identifier="ostree_sysroot_upgrader_pull_one_dir"
              throws="1">
        <doc xml:space="preserve">Like ostree_sysroot_upgrader_pull(), but allows retrieving just a
subpath of the tree.  This can be used to download metadata files
from inside the tree such as package databases.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Upgrader</doc>
            <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
          </instance-parameter>
          <parameter name="dir_to_pull" transfer-ownership="none">
            <doc xml:space="preserve">Subdirectory path (should include a leading /)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">Flags controlling pull behavior</doc>
            <type name="RepoPullFlags" c:type="OstreeRepoPullFlags"/>
          </parameter>
          <parameter name="upgrader_flags" transfer-ownership="none">
            <doc xml:space="preserve">Flags controlling upgrader behavior</doc>
            <type name="SysrootUpgraderPullFlags"
                  c:type="OstreeSysrootUpgraderPullFlags"/>
          </parameter>
          <parameter name="progress"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Progress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="out_changed"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Whether or not the origin changed</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_origin"
              c:identifier="ostree_sysroot_upgrader_set_origin"
              throws="1">
        <doc xml:space="preserve">Replace the origin with @origin.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">Sysroot</doc>
            <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
          </instance-parameter>
          <parameter name="origin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The new origin</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="flags"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="SysrootUpgraderFlags"/>
      </property>
      <property name="osname"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="sysroot"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Sysroot"/>
      </property>
    </class>
    <bitfield name="SysrootUpgraderFlags"
              glib:type-name="OstreeSysrootUpgraderFlags"
              glib:get-type="ostree_sysroot_upgrader_flags_get_type"
              c:type="OstreeSysrootUpgraderFlags">
      <doc xml:space="preserve">Flags controlling operation of an #OstreeSysrootUpgrader.</doc>
      <member name="ignore_unconfigured"
              value="2"
              c:identifier="OSTREE_SYSROOT_UPGRADER_FLAGS_IGNORE_UNCONFIGURED"
              glib:nick="ignore-unconfigured">
        <doc xml:space="preserve">Do not error if the origin has an unconfigured-state key</doc>
      </member>
    </bitfield>
    <bitfield name="SysrootUpgraderPullFlags"
              c:type="OstreeSysrootUpgraderPullFlags">
      <member name="none"
              value="0"
              c:identifier="OSTREE_SYSROOT_UPGRADER_PULL_FLAGS_NONE">
      </member>
      <member name="allow_older"
              value="1"
              c:identifier="OSTREE_SYSROOT_UPGRADER_PULL_FLAGS_ALLOW_OLDER">
      </member>
      <member name="synthetic"
              value="2"
              c:identifier="OSTREE_SYSROOT_UPGRADER_PULL_FLAGS_SYNTHETIC">
      </member>
    </bitfield>
    <record name="SysrootWriteDeploymentsOpts"
            c:type="OstreeSysrootWriteDeploymentsOpts">
      <field name="do_postclean" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="unused_bools" writable="1">
        <array zero-terminated="0" c:type="gboolean" fixed-size="7">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
      <field name="unused_ints" writable="1">
        <array zero-terminated="0" c:type="int" fixed-size="7">
          <type name="gint" c:type="int"/>
        </array>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <constant name="TIMESTAMP" value="0" c:type="OSTREE_TIMESTAMP">
      <doc xml:space="preserve">The mtime used for stored files.  This was originally 0, changed to 1 for
a few releases, then was reverted due to regressions it introduced from
users who had been using zero before.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="TREE_GVARIANT_STRING"
              value="(a(say)a(sayay))"
              c:type="OSTREE_TREE_GVARIANT_STRING">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="TlsCertInteraction"
            c:type="OstreeTlsCertInteraction"
            disguised="1">
    </record>
    <record name="TlsCertInteractionClass"
            c:type="OstreeTlsCertInteractionClass"
            disguised="1">
    </record>
    <constant name="VERSION"
              value="2017.120000"
              c:type="OSTREE_VERSION"
              version="2017.4">
      <doc xml:space="preserve">ostree version.</doc>
      <type name="gdouble" c:type="gdouble"/>
    </constant>
    <constant name="VERSION_S"
              value="2017.12"
              c:type="OSTREE_VERSION_S"
              version="2017.4">
      <doc xml:space="preserve">ostree version, encoded as a string, useful for printing and
concatenation.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="YEAR_VERSION"
              value="2017"
              c:type="OSTREE_YEAR_VERSION"
              version="2017.4">
      <doc xml:space="preserve">ostree year version component (e.g. 2017 if %OSTREE_VERSION is 2017.2)</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <function name="check_version" c:identifier="ostree_check_version">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if current libostree has at least the requested version, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="required_year" transfer-ownership="none">
          <doc xml:space="preserve">Major/year required</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="required_release" transfer-ownership="none">
          <doc xml:space="preserve">Release version required</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_b64_from_bytes"
              c:identifier="ostree_checksum_b64_from_bytes">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">Modified base64 encoding of @csum

The "modified" term refers to the fact that instead of '/', the '_'
character is used.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="csum" transfer-ownership="none">
          <doc xml:space="preserve">An binary checksum of length 32</doc>
          <array zero-terminated="0" c:type="guchar*" fixed-size="32">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_b64_inplace_from_bytes"
              c:identifier="ostree_checksum_b64_inplace_from_bytes"
              introspectable="0">
      <doc xml:space="preserve">Overwrite the contents of @buf with modified base64 encoding of @csum.
The "modified" term refers to the fact that instead of '/', the '_'
character is used.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="csum" transfer-ownership="none">
          <doc xml:space="preserve">An binary checksum of length 32</doc>
          <array zero-terminated="0" c:type="guchar*" fixed-size="32">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve">Output location, must be at least 44 bytes in length</doc>
          <type name="utf8" c:type="char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_b64_inplace_to_bytes"
              c:identifier="ostree_checksum_b64_inplace_to_bytes"
              introspectable="0">
      <doc xml:space="preserve">Overwrite the contents of @buf with stringified version of @csum.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve">An binary checksum of length 32</doc>
          <array zero-terminated="0" c:type="char*" fixed-size="32">
            <type name="utf8" c:type="char"/>
          </array>
        </parameter>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve">Output location, must be at least 45 bytes in length</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_b64_to_bytes"
              c:identifier="ostree_checksum_b64_to_bytes">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">Binary version of @checksum.</doc>
        <array zero-terminated="0" c:type="guchar*" fixed-size="32">
          <type name="guint8" c:type="guchar"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve">An ASCII checksum</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_bytes_peek"
              c:identifier="ostree_checksum_bytes_peek">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">Binary checksum data in @bytes; do not free.  If @bytes does not have the correct length, return %NULL.</doc>
        <array zero-terminated="0" c:type="guchar*" fixed-size="32">
          <type name="guint8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve">#GVariant of type ay</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_bytes_peek_validate"
              c:identifier="ostree_checksum_bytes_peek_validate"
              throws="1">
      <doc xml:space="preserve">Like ostree_checksum_bytes_peek(), but also throws @error.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">Binary checksum data</doc>
        <array zero-terminated="0" c:type="guchar*" fixed-size="32">
          <type name="guint8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve">#GVariant of type ay</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_file"
              c:identifier="ostree_checksum_file"
              throws="1">
      <doc xml:space="preserve">Compute the OSTree checksum for a given file.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="f" transfer-ownership="none">
          <doc xml:space="preserve">File path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve">Object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
        <parameter name="out_csum"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Return location for binary checksum</doc>
          <array zero-terminated="0" c:type="guchar**" fixed-size="32">
            <type name="guint8" c:type="guchar*"/>
          </array>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_file_async"
              c:identifier="ostree_checksum_file_async">
      <doc xml:space="preserve">Asynchronously compute the OSTree checksum for a given file;
complete with ostree_checksum_file_async_finish().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="f" transfer-ownership="none">
          <doc xml:space="preserve">File path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve">Object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
        <parameter name="io_priority" transfer-ownership="none">
          <doc xml:space="preserve">Priority for operation, see %G_IO_PRIORITY_DEFAULT</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async"
                   closure="5">
          <doc xml:space="preserve">Invoked when operation is complete</doc>
          <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Data for @callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_file_async_finish"
              c:identifier="ostree_checksum_file_async_finish"
              throws="1">
      <doc xml:space="preserve">Finish computing the OSTree checksum for a given file; see
ostree_checksum_file_async().</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="f" transfer-ownership="none">
          <doc xml:space="preserve">File path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve">Async result</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
        <parameter name="out_csum"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Return location for binary checksum</doc>
          <array zero-terminated="0" c:type="guchar**" fixed-size="32">
            <type name="guint8" c:type="guchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_file_from_input"
              c:identifier="ostree_checksum_file_from_input"
              throws="1">
      <doc xml:space="preserve">Compute the OSTree checksum for a given input.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="file_info" transfer-ownership="none">
          <doc xml:space="preserve">File information</doc>
          <type name="Gio.FileInfo" c:type="GFileInfo*"/>
        </parameter>
        <parameter name="xattrs"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Optional extended attributes</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
        <parameter name="in"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">File content, should be %NULL for symbolic links</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </parameter>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve">Object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
        <parameter name="out_csum"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Return location for binary checksum</doc>
          <array zero-terminated="0" c:type="guchar**" fixed-size="32">
            <type name="guint8" c:type="guchar*"/>
          </array>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_from_bytes"
              c:identifier="ostree_checksum_from_bytes">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">String form of @csum</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="csum" transfer-ownership="none">
          <doc xml:space="preserve">An binary checksum of length 32</doc>
          <array zero-terminated="0" c:type="guchar*" fixed-size="32">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_from_bytes_v"
              c:identifier="ostree_checksum_from_bytes_v">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">String form of @csum_bytes</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="csum_v" transfer-ownership="none">
          <doc xml:space="preserve">#GVariant of type ay</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_inplace_from_bytes"
              c:identifier="ostree_checksum_inplace_from_bytes"
              introspectable="0">
      <doc xml:space="preserve">Overwrite the contents of @buf with stringified version of @csum.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="csum" transfer-ownership="none">
          <doc xml:space="preserve">An binary checksum of length 32</doc>
          <array zero-terminated="0" c:type="guchar*" fixed-size="32">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve">Output location, must be at least OSTREE_SHA256_STRING_LEN+1 bytes in length</doc>
          <type name="utf8" c:type="char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_inplace_to_bytes"
              c:identifier="ostree_checksum_inplace_to_bytes">
      <doc xml:space="preserve">Convert @checksum from a string to binary in-place, without
allocating memory.  Use this function in hot code paths.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve">a SHA256 string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve">Output buffer with at least 32 bytes of space</doc>
          <type name="guint8" c:type="guchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_to_bytes" c:identifier="ostree_checksum_to_bytes">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">Binary checksum from @checksum of length 32; free with g_free().</doc>
        <array zero-terminated="0" c:type="guchar*" fixed-size="32">
          <type name="guint8" c:type="guchar"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve">An ASCII checksum</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_to_bytes_v"
              c:identifier="ostree_checksum_to_bytes_v">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">New #GVariant of type ay with length 32</doc>
        <type name="GLib.Variant" c:type="GVariant*"/>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve">An ASCII checksum</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="cmd__private__" c:identifier="ostree_cmd__private__">
      <return-value transfer-ownership="none">
        <type name="CmdPrivateVTable" c:type="const OstreeCmdPrivateVTable*"/>
      </return-value>
    </function>
    <function name="cmp_checksum_bytes"
              c:identifier="ostree_cmp_checksum_bytes">
      <doc xml:space="preserve">Compare two binary checksums, using memcmp().</doc>
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="a" transfer-ownership="none">
          <doc xml:space="preserve">A binary checksum</doc>
          <type name="guint8" c:type="const guchar*"/>
        </parameter>
        <parameter name="b" transfer-ownership="none">
          <doc xml:space="preserve">A binary checksum</doc>
          <type name="guint8" c:type="const guchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="collection_ref_dupv"
              c:identifier="ostree_collection_ref_dupv"
              moved-to="CollectionRef.dupv"
              version="2017.8">
      <doc xml:space="preserve">Copy an array of #OstreeCollectionRefs, including deep copies of all its
elements. @refs must be %NULL-terminated; it may be empty, but must not be
%NULL.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly allocated copy of @refs</doc>
        <array c:type="OstreeCollectionRef**">
          <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="refs" transfer-ownership="none">
          <doc xml:space="preserve">%NULL-terminated array of #OstreeCollectionRefs</doc>
          <array c:type="OstreeCollectionRef**">
            <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="collection_ref_equal"
              c:identifier="ostree_collection_ref_equal"
              moved-to="CollectionRef.equal"
              version="2017.8">
      <doc xml:space="preserve">Compare @ref1 and @ref2 and return %TRUE if they have the same collection ID and
ref name, and %FALSE otherwise. Both @ref1 and @ref2 must be non-%NULL.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @ref1 and @ref2 are equal, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="ref1"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">an #OstreeCollectionRef</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
        <parameter name="ref2"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">another #OstreeCollectionRef</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="collection_ref_freev"
              c:identifier="ostree_collection_ref_freev"
              moved-to="CollectionRef.freev"
              version="2017.8">
      <doc xml:space="preserve">Free the given array of @refs, including freeing all its elements. @refs
must be %NULL-terminated; it may be empty, but must not be %NULL.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="refs" transfer-ownership="full">
          <doc xml:space="preserve">an array of #OstreeCollectionRefs</doc>
          <array c:type="OstreeCollectionRef**">
            <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="collection_ref_hash"
              c:identifier="ostree_collection_ref_hash"
              moved-to="CollectionRef.hash"
              version="2017.8">
      <doc xml:space="preserve">Hash the given @ref. This function is suitable for use with #GHashTable.
@ref must be non-%NULL.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">hash value for @ref</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="ref"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">an #OstreeCollectionRef</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="commit_get_parent" c:identifier="ostree_commit_get_parent">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">Checksum of the parent commit of @commit_variant, or %NULL
if none</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="commit_variant" transfer-ownership="none">
          <doc xml:space="preserve">Variant of type %OSTREE_OBJECT_TYPE_COMMIT</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="commit_get_timestamp"
              c:identifier="ostree_commit_get_timestamp">
      <return-value transfer-ownership="none">
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="commit_variant" transfer-ownership="none">
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="content_file_parse"
              c:identifier="ostree_content_file_parse"
              throws="1">
      <doc xml:space="preserve">A thin wrapper for ostree_content_stream_parse(); this function
converts an object content stream back into components.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="compressed" transfer-ownership="none">
          <doc xml:space="preserve">Whether or not the stream is zlib-compressed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="content_path" transfer-ownership="none">
          <doc xml:space="preserve">Path to file containing content</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="trusted" transfer-ownership="none">
          <doc xml:space="preserve">If %TRUE, assume the content has been validated</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="out_input"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">The raw file content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream**"/>
        </parameter>
        <parameter name="out_file_info"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Normal metadata</doc>
          <type name="Gio.FileInfo" c:type="GFileInfo**"/>
        </parameter>
        <parameter name="out_xattrs"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Extended attributes</doc>
          <type name="GLib.Variant" c:type="GVariant**"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="content_file_parse_at"
              c:identifier="ostree_content_file_parse_at"
              throws="1">
      <doc xml:space="preserve">A thin wrapper for ostree_content_stream_parse(); this function
converts an object content stream back into components.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="compressed" transfer-ownership="none">
          <doc xml:space="preserve">Whether or not the stream is zlib-compressed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="parent_dfd" transfer-ownership="none">
          <doc xml:space="preserve">Directory file descriptor</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve">Subpath</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="trusted" transfer-ownership="none">
          <doc xml:space="preserve">If %TRUE, assume the content has been validated</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="out_input"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">The raw file content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream**"/>
        </parameter>
        <parameter name="out_file_info"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Normal metadata</doc>
          <type name="Gio.FileInfo" c:type="GFileInfo**"/>
        </parameter>
        <parameter name="out_xattrs"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Extended attributes</doc>
          <type name="GLib.Variant" c:type="GVariant**"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="content_stream_parse"
              c:identifier="ostree_content_stream_parse"
              throws="1">
      <doc xml:space="preserve">The reverse of ostree_raw_file_to_content_stream(); this function
converts an object content stream back into components.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="compressed" transfer-ownership="none">
          <doc xml:space="preserve">Whether or not the stream is zlib-compressed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="input" transfer-ownership="none">
          <doc xml:space="preserve">Object content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </parameter>
        <parameter name="input_length" transfer-ownership="none">
          <doc xml:space="preserve">Length of stream</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="trusted" transfer-ownership="none">
          <doc xml:space="preserve">If %TRUE, assume the content has been validated</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="out_input"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">The raw file content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream**"/>
        </parameter>
        <parameter name="out_file_info"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Normal metadata</doc>
          <type name="Gio.FileInfo" c:type="GFileInfo**"/>
        </parameter>
        <parameter name="out_xattrs"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Extended attributes</doc>
          <type name="GLib.Variant" c:type="GVariant**"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="create_directory_metadata"
              c:identifier="ostree_create_directory_metadata">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">A new #GVariant containing %OSTREE_OBJECT_TYPE_DIR_META</doc>
        <type name="GLib.Variant" c:type="GVariant*"/>
      </return-value>
      <parameters>
        <parameter name="dir_info" transfer-ownership="none">
          <doc xml:space="preserve">a #GFileInfo containing directory information</doc>
          <type name="Gio.FileInfo" c:type="GFileInfo*"/>
        </parameter>
        <parameter name="xattrs"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Optional extended attributes</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="diff_dirs" c:identifier="ostree_diff_dirs" throws="1">
      <doc xml:space="preserve">Compute the difference between directory @a and @b as 3 separate
sets of #OstreeDiffItem in @modified, @removed, and @added.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve">Flags</doc>
          <type name="DiffFlags" c:type="OstreeDiffFlags"/>
        </parameter>
        <parameter name="a" transfer-ownership="none">
          <doc xml:space="preserve">First directory path, or %NULL</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="b" transfer-ownership="none">
          <doc xml:space="preserve">First directory path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="modified" transfer-ownership="none">
          <doc xml:space="preserve">Modified files</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="DiffItem"/>
          </array>
        </parameter>
        <parameter name="removed" transfer-ownership="none">
          <doc xml:space="preserve">Removed files</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Gio.File"/>
          </array>
        </parameter>
        <parameter name="added" transfer-ownership="none">
          <doc xml:space="preserve">Added files</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Gio.File"/>
          </array>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="diff_dirs_with_options"
              c:identifier="ostree_diff_dirs_with_options"
              throws="1">
      <doc xml:space="preserve">Compute the difference between directory @a and @b as 3 separate
sets of #OstreeDiffItem in @modified, @removed, and @added.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve">Flags</doc>
          <type name="DiffFlags" c:type="OstreeDiffFlags"/>
        </parameter>
        <parameter name="a" transfer-ownership="none">
          <doc xml:space="preserve">First directory path, or %NULL</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="b" transfer-ownership="none">
          <doc xml:space="preserve">First directory path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="modified" transfer-ownership="none">
          <doc xml:space="preserve">Modified files</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="DiffItem"/>
          </array>
        </parameter>
        <parameter name="removed" transfer-ownership="none">
          <doc xml:space="preserve">Removed files</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Gio.File"/>
          </array>
        </parameter>
        <parameter name="added" transfer-ownership="none">
          <doc xml:space="preserve">Added files</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Gio.File"/>
          </array>
        </parameter>
        <parameter name="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Options</doc>
          <type name="DiffDirsOptions" c:type="OstreeDiffDirsOptions*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="diff_print" c:identifier="ostree_diff_print">
      <doc xml:space="preserve">Print the contents of a diff to stdout.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="a" transfer-ownership="none">
          <doc xml:space="preserve">First directory path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="b" transfer-ownership="none">
          <doc xml:space="preserve">First directory path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="modified" transfer-ownership="none">
          <doc xml:space="preserve">Modified files</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="DiffItem"/>
          </array>
        </parameter>
        <parameter name="removed" transfer-ownership="none">
          <doc xml:space="preserve">Removed files</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Gio.File"/>
          </array>
        </parameter>
        <parameter name="added" transfer-ownership="none">
          <doc xml:space="preserve">Added files</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Gio.File"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="gpg_error_quark" c:identifier="ostree_gpg_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="hash_object_name" c:identifier="ostree_hash_object_name">
      <doc xml:space="preserve">Use this function with #GHashTable and ostree_object_name_serialize().</doc>
      <return-value transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="a"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">A #GVariant containing a serialized object</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="metadata_variant_type"
              c:identifier="ostree_metadata_variant_type">
      <return-value transfer-ownership="none">
        <type name="GLib.VariantType" c:type="const GVariantType*"/>
      </return-value>
      <parameters>
        <parameter name="objtype" transfer-ownership="none">
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
      </parameters>
    </function>
    <function name="object_from_string"
              c:identifier="ostree_object_from_string">
      <doc xml:space="preserve">Reverse ostree_object_to_string().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">An ASCII checksum</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="out_checksum"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Parsed checksum</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
        <parameter name="out_objtype"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Parsed object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType*"/>
        </parameter>
      </parameters>
    </function>
    <function name="object_name_deserialize"
              c:identifier="ostree_object_name_deserialize">
      <doc xml:space="preserve">Reverse ostree_object_name_serialize().  Note that @out_checksum is
only valid for the lifetime of @variant, and must not be freed.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="variant" transfer-ownership="none">
          <doc xml:space="preserve">A #GVariant of type (su)</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
        <parameter name="out_checksum"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="none">
          <doc xml:space="preserve">Pointer into string memory of @variant with checksum</doc>
          <type name="utf8" c:type="const char**"/>
        </parameter>
        <parameter name="out_objtype"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Return object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType*"/>
        </parameter>
      </parameters>
    </function>
    <function name="object_name_serialize"
              c:identifier="ostree_object_name_serialize">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">A new floating #GVariant containing checksum string and objtype</doc>
        <type name="GLib.Variant" c:type="GVariant*"/>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve">An ASCII checksum</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve">An object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
      </parameters>
    </function>
    <function name="object_to_string" c:identifier="ostree_object_to_string">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">A string containing both @checksum and a stringifed version of @objtype</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve">An ASCII checksum</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve">Object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
      </parameters>
    </function>
    <function name="object_type_from_string"
              c:identifier="ostree_object_type_from_string">
      <doc xml:space="preserve">The reverse of ostree_object_type_to_string().</doc>
      <return-value transfer-ownership="none">
        <type name="ObjectType" c:type="OstreeObjectType"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">A stringified version of #OstreeObjectType</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="object_type_to_string"
              c:identifier="ostree_object_type_to_string">
      <doc xml:space="preserve">Serialize @objtype to a string; this is used for file extensions.</doc>
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve">an #OstreeObjectType</doc>
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
      </parameters>
    </function>
    <function name="parse_refspec"
              c:identifier="ostree_parse_refspec"
              throws="1">
      <doc xml:space="preserve">Split a refspec like "gnome-ostree:gnome-ostree/buildmaster" into
two parts; @out_remote will be set to "gnome-ostree", and @out_ref
will be "gnome-ostree/buildmaster".

If @refspec refers to a local ref, @out_remote will be %NULL.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="refspec" transfer-ownership="none">
          <doc xml:space="preserve">A "refspec" string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="out_remote"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve">The remote name, or %NULL if the refspec refs to a local ref</doc>
          <type name="utf8" c:type="char**"/>
        </parameter>
        <parameter name="out_ref"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve">Name of ref</doc>
          <type name="utf8" c:type="char**"/>
        </parameter>
      </parameters>
    </function>
    <function name="raw_file_to_archive_z2_stream"
              c:identifier="ostree_raw_file_to_archive_z2_stream"
              throws="1">
      <doc xml:space="preserve">Convert from a "bare" file representation into an
OSTREE_OBJECT_TYPE_FILE stream suitable for ostree pull.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="input" transfer-ownership="none">
          <doc xml:space="preserve">File raw content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </parameter>
        <parameter name="file_info" transfer-ownership="none">
          <doc xml:space="preserve">A file info</doc>
          <type name="Gio.FileInfo" c:type="GFileInfo*"/>
        </parameter>
        <parameter name="xattrs"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Optional extended attributes</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
        <parameter name="out_input"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Serialized object stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream**"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="raw_file_to_archive_z2_stream_with_options"
              c:identifier="ostree_raw_file_to_archive_z2_stream_with_options"
              version="2017.3"
              throws="1">
      <doc xml:space="preserve">Like ostree_raw_file_to_archive_z2_stream(), but supports an extensible set
of flags. The following flags are currently defined:

- `compression-level` (`i`): Level of compression to use, 0–9, with 0 being
  the least compression, and &lt;0 giving the default level (currently 6).</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="input" transfer-ownership="none">
          <doc xml:space="preserve">File raw content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </parameter>
        <parameter name="file_info" transfer-ownership="none">
          <doc xml:space="preserve">A file info</doc>
          <type name="Gio.FileInfo" c:type="GFileInfo*"/>
        </parameter>
        <parameter name="xattrs"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Optional extended attributes</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
        <parameter name="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">A GVariant `a{sv}` with an extensible set of flags</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
        <parameter name="out_input"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Serialized object stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream**"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="raw_file_to_content_stream"
              c:identifier="ostree_raw_file_to_content_stream"
              throws="1">
      <doc xml:space="preserve">Convert from a "bare" file representation into an
OSTREE_OBJECT_TYPE_FILE stream.  This is a fundamental operation
for writing data to an #OstreeRepo.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="input" transfer-ownership="none">
          <doc xml:space="preserve">File raw content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </parameter>
        <parameter name="file_info" transfer-ownership="none">
          <doc xml:space="preserve">A file info</doc>
          <type name="Gio.FileInfo" c:type="GFileInfo*"/>
        </parameter>
        <parameter name="xattrs"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Optional extended attributes</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
        <parameter name="out_input"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Serialized object stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream**"/>
        </parameter>
        <parameter name="out_length"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">Length of stream</doc>
          <type name="guint64" c:type="guint64*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="repo_commit_traverse_iter_cleanup"
              c:identifier="ostree_repo_commit_traverse_iter_cleanup"
              moved-to="RepoCommitTraverseIter.cleanup">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="p"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </function>
    <function name="repo_finder_resolve_all_async"
              c:identifier="ostree_repo_finder_resolve_all_async"
              moved-to="RepoFinder.resolve_all_async"
              version="2017.8">
      <doc xml:space="preserve">A version of ostree_repo_finder_resolve_async() which queries one or more
@finders in parallel and combines the results.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="finders" transfer-ownership="none">
          <doc xml:space="preserve">non-empty array of #OstreeRepoFinders</doc>
          <array c:type="OstreeRepoFinder**">
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </array>
        </parameter>
        <parameter name="refs" transfer-ownership="none">
          <doc xml:space="preserve">non-empty array of collection–ref pairs to find remotes for</doc>
          <array c:type="OstreeCollectionRef**">
            <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
          </array>
        </parameter>
        <parameter name="parent_repo" transfer-ownership="none">
          <doc xml:space="preserve">the local repository which the refs are being resolved for,
   which provides configuration information and GPG keys</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async"
                   closure="5">
          <doc xml:space="preserve">asynchronous completion callback</doc>
          <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">data to pass to @callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="repo_finder_resolve_all_finish"
              c:identifier="ostree_repo_finder_resolve_all_finish"
              moved-to="RepoFinder.resolve_all_finish"
              version="2017.8"
              throws="1">
      <doc xml:space="preserve">Get the results from a ostree_repo_finder_resolve_all_async() operation.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">array of zero
   or more results</doc>
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="RepoFinderResult"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve">#GAsyncResult from the callback</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
    <function name="repo_finder_result_freev"
              c:identifier="ostree_repo_finder_result_freev"
              moved-to="RepoFinderResult.freev"
              version="2017.8">
      <doc xml:space="preserve">Free the given @results array, freeing each element and the container.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="results" transfer-ownership="full">
          <doc xml:space="preserve">an #OstreeRepoFinderResult</doc>
          <array c:type="OstreeRepoFinderResult**">
            <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="validate_checksum_string"
              c:identifier="ostree_validate_checksum_string"
              throws="1">
      <doc xml:space="preserve">Use this function to see if input strings are checksums.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @sha256 is a valid checksum string, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="sha256" transfer-ownership="none">
          <doc xml:space="preserve">SHA256 hex string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_remote_name"
              c:identifier="ostree_validate_remote_name"
              version="2017.8"
              throws="1">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @remote_name is a valid remote name</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="remote_name" transfer-ownership="none">
          <doc xml:space="preserve">A remote name</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_rev"
              c:identifier="ostree_validate_rev"
              throws="1">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @rev is a valid ref string</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="rev" transfer-ownership="none">
          <doc xml:space="preserve">A revision string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_structureof_checksum_string"
              c:identifier="ostree_validate_structureof_checksum_string"
              throws="1">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @checksum is a valid ASCII SHA256 checksum</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve">an ASCII string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_structureof_commit"
              c:identifier="ostree_validate_structureof_commit"
              throws="1">
      <doc xml:space="preserve">Use this to validate the basic structure of @commit, independent of
any other objects it references.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @commit is structurally valid</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="commit" transfer-ownership="none">
          <doc xml:space="preserve">A commit object, %OSTREE_OBJECT_TYPE_COMMIT</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_structureof_csum_v"
              c:identifier="ostree_validate_structureof_csum_v"
              throws="1">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @checksum is a valid binary SHA256 checksum</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve">a #GVariant of type "ay"</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_structureof_dirmeta"
              c:identifier="ostree_validate_structureof_dirmeta"
              throws="1">
      <doc xml:space="preserve">Use this to validate the basic structure of @dirmeta.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @dirmeta is structurally valid</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="dirmeta" transfer-ownership="none">
          <doc xml:space="preserve">A dirmeta object, %OSTREE_OBJECT_TYPE_DIR_META</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_structureof_dirtree"
              c:identifier="ostree_validate_structureof_dirtree"
              throws="1">
      <doc xml:space="preserve">Use this to validate the basic structure of @dirtree, independent of
any other objects it references.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @dirtree is structurally valid</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="dirtree" transfer-ownership="none">
          <doc xml:space="preserve">A dirtree object, %OSTREE_OBJECT_TYPE_DIR_TREE</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_structureof_file_mode"
              c:identifier="ostree_validate_structureof_file_mode"
              throws="1">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @mode represents a valid file type and permissions</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="mode" transfer-ownership="none">
          <doc xml:space="preserve">A Unix filesystem mode</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_structureof_objtype"
              c:identifier="ostree_validate_structureof_objtype"
              throws="1">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if @objtype represents a valid object type</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="objtype" transfer-ownership="none">
          <type name="guint8" c:type="guchar"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
