<?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:doc="http://www.gtk.org/introspection/doc/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Gio" version="2.0"/>
  <package name="ostree-1"/>
  <c:include name="ostree.h"/>
  <doc:format name="unknown"/>
  <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"
           introspectable="0">
      <doc xml:space="preserve"
           filename="ostree-ref.h"
           line="71">A %NULL-terminated array of #OstreeCollectionRef instances, designed to
be used with g_auto():

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

|[&lt;!-- language="C" --&gt;
g_auto(OstreeRepoFinderResultv) results = NULL;
]|</doc>
      <source-position filename="ostree-repo-finder.h" line="157"/>
      <type name="RepoFinderResult" c:type="OstreeRepoFinderResult**"/>
    </alias>
    <function-macro name="ASYNC_PROGRESS"
                    c:identifier="OSTREE_ASYNC_PROGRESS"
                    introspectable="0">
      <source-position filename="ostree-async-progress.h" line="27"/>
      <parameters>
        <parameter name="o">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ASYNC_PROGRESS_CLASS"
                    c:identifier="OSTREE_ASYNC_PROGRESS_CLASS"
                    introspectable="0">
      <source-position filename="ostree-async-progress.h" line="29"/>
      <parameters>
        <parameter name="k">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ASYNC_PROGRESS_GET_CLASS"
                    c:identifier="OSTREE_ASYNC_PROGRESS_GET_CLASS"
                    introspectable="0">
      <source-position filename="ostree-async-progress.h" line="34"/>
      <parameters>
        <parameter name="o">
        </parameter>
      </parameters>
    </function-macro>
    <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">
      <source-position filename="ostree-async-progress.h" line="45"/>
      <constructor name="new" c:identifier="ostree_async_progress_new">
        <source-position filename="ostree-async-progress.h" line="51"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-async-progress.c"
               line="445">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"
                   introspectable="0">
        <source-position filename="ostree-async-progress.h" line="54"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-async-progress.c"
               line="458">A new progress object</doc>
          <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
        </return-value>
        <parameters>
          <parameter name="changed"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-async-progress.c"
                 line="455">a notification callback</doc>
            <type name="gpointer" c:type="gpointer*"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-async-progress.c"
                 line="456">data to pass to @changed</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="changed">
        <source-position filename="ostree-async-progress.h" line="44"/>
        <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="copy_state"
              c:identifier="ostree_async_progress_copy_state"
              version="2019.6">
        <doc xml:space="preserve"
             filename="ostree-async-progress.c"
             line="409">Atomically copies all the state from @self to @dest, without invoking the
callback.
This is used for proxying progress objects across different #GMainContexts.</doc>
        <source-position filename="ostree-async-progress.h" line="88"/>
        <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"
                 filename="ostree-async-progress.c"
                 line="411">An #OstreeAsyncProgress to copy from</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-async-progress.c"
                 line="412">An #OstreeAsyncProgress to copy to</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
        </parameters>
      </method>
      <method name="finish" c:identifier="ostree_async_progress_finish">
        <doc xml:space="preserve"
             filename="ostree-async-progress.c"
             line="470">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>
        <source-position filename="ostree-async-progress.h" line="85"/>
        <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"
                 filename="ostree-async-progress.c"
                 line="472">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"
             filename="ostree-async-progress.c"
             line="156">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>
        <source-position filename="ostree-async-progress.h" line="61"/>
        <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"
                 filename="ostree-async-progress.c"
                 line="158">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-async-progress.c"
                 line="159">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"
             filename="ostree-async-progress.c"
             line="259">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>
        <source-position filename="ostree-async-progress.h" line="58"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-async-progress.c"
               line="269">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"
                 filename="ostree-async-progress.c"
                 line="261">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_uint" c:identifier="ostree_async_progress_get_uint">
        <source-position filename="ostree-async-progress.h" line="64"/>
        <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">
        <source-position filename="ostree-async-progress.h" line="66"/>
        <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"
             filename="ostree-async-progress.c"
             line="111">Look up a key in the #OstreeAsyncProgress and return the #GVariant associated
with it. The lookup is thread-safe.</doc>
        <source-position filename="ostree-async-progress.h" line="68"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-async-progress.c"
               line="119">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"
                 filename="ostree-async-progress.c"
                 line="113">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-async-progress.c"
                 line="114">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"
             filename="ostree-async-progress.c"
             line="282">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>
        <source-position filename="ostree-async-progress.h" line="74"/>
        <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"
                 filename="ostree-async-progress.c"
                 line="284">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-async-progress.c"
                 line="285">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"
             filename="ostree-async-progress.c"
             line="240">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>
        <source-position filename="ostree-async-progress.h" line="71"/>
        <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"
                 filename="ostree-async-progress.c"
                 line="242">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"
                 filename="ostree-async-progress.c"
                 line="243">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">
        <source-position filename="ostree-async-progress.h" line="77"/>
        <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">
        <source-position filename="ostree-async-progress.h" line="79"/>
        <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"
             filename="ostree-async-progress.c"
             line="354">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>
        <source-position filename="ostree-async-progress.h" line="81"/>
        <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"
                 filename="ostree-async-progress.c"
                 line="356">an #OstreeAsyncProgress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-async-progress.c"
                 line="357">a key to set</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-async-progress.c"
                 line="358">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"
             filename="ostree-async-progress.c"
             line="92">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">
      <source-position filename="ostree-async-progress.h" line="45"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="changed">
        <callback name="changed">
          <source-position filename="ostree-async-progress.h" line="44"/>
          <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>
    <function-macro name="BOOTCONFIG_PARSER"
                    c:identifier="OSTREE_BOOTCONFIG_PARSER"
                    introspectable="0">
      <source-position filename="ostree-bootconfig-parser.h" line="25"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <interface name="BlobReader"
               c:symbol-prefix="blob_reader"
               c:type="OstreeBlobReader"
               glib:type-name="OstreeBlobReader"
               glib:get-type="ostree_blob_reader_get_type"
               glib:type-struct="BlobReaderInterface">
      <source-position filename="ostree-blob-reader.h" line="36"/>
      <virtual-method name="read_blob"
                      invoker="read_blob"
                      version="2016.5"
                      throws="1">
        <doc xml:space="preserve"
             filename="ostree-blob-reader.c"
             line="32">Read one blob from the reader, or %NULL if there are no more.
On error, @error is set and %NULL is returned.</doc>
        <source-position filename="ostree-blob-reader.h" line="35"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-blob-reader.c"
               line="41">A #GBytes blob, or %NULL if there are no more</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-blob-reader.c"
                 line="34">A OstreeBlobReader</doc>
            <type name="BlobReader" c:type="OstreeBlobReader*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-blob-reader.c"
                 line="35">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="read_blob"
              c:identifier="ostree_blob_reader_read_blob"
              version="2016.5"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-blob-reader.c"
             line="32">Read one blob from the reader, or %NULL if there are no more.
On error, @error is set and %NULL is returned.</doc>
        <source-position filename="ostree-blob-reader.h" line="39"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-blob-reader.c"
               line="41">A #GBytes blob, or %NULL if there are no more</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-blob-reader.c"
                 line="34">A OstreeBlobReader</doc>
            <type name="BlobReader" c:type="OstreeBlobReader*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-blob-reader.c"
                 line="35">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="BlobReaderInterface"
            c:type="OstreeBlobReaderInterface"
            glib:is-gtype-struct-for="BlobReader">
      <source-position filename="ostree-blob-reader.h" line="36"/>
      <field name="g_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="read_blob">
        <callback name="read_blob" throws="1">
          <source-position filename="ostree-blob-reader.h" line="35"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="ostree-blob-reader.c"
                 line="41">A #GBytes blob, or %NULL if there are no more</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-blob-reader.c"
                   line="34">A OstreeBlobReader</doc>
              <type name="BlobReader" c:type="OstreeBlobReader*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="ostree-blob-reader.c"
                   line="35">a #GCancellable</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </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">
        <source-position filename="ostree-bootconfig-parser.h" line="36"/>
        <return-value transfer-ownership="full">
          <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
        </return-value>
      </constructor>
      <method name="clone" c:identifier="ostree_bootconfig_parser_clone">
        <source-position filename="ostree-bootconfig-parser.h" line="39"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-bootconfig-parser.c"
               line="47">Copy of @self</doc>
          <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="45">Bootconfig to clone</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get" c:identifier="ostree_bootconfig_parser_get">
        <doc xml:space="preserve"
             filename="ostree-bootconfig-parser.c"
             line="228">Get the value corresponding to @key from the boot configuration dictionary.</doc>
        <source-position filename="ostree-bootconfig-parser.h" line="62"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-bootconfig-parser.c"
               line="235">The corresponding value, or %NULL if the key hasn't been
found.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="230">Parser</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="231">the key name to retrieve</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_overlay_initrds"
              c:identifier="ostree_bootconfig_parser_get_overlay_initrds"
              version="2020.7">
        <source-position filename="ostree-bootconfig-parser.h" line="68"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-bootconfig-parser.c"
               line="267">Array of initrds or %NULL
if none are set.</doc>
          <array c:type="char**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="265">Parser</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tries_done"
              c:identifier="ostree_bootconfig_parser_get_tries_done">
        <source-position filename="ostree-bootconfig-parser.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-bootconfig-parser.c"
               line="125">Amount of boot tries</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="123">Parser</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tries_left"
              c:identifier="ostree_bootconfig_parser_get_tries_left"
              version="2025.2">
        <source-position filename="ostree-bootconfig-parser.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-bootconfig-parser.c"
               line="111">Amount of boot tries left</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="109">Parser</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="parse"
              c:identifier="ostree_bootconfig_parser_parse"
              throws="1">
        <source-position filename="ostree-bootconfig-parser.h" line="42"/>
        <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"
             filename="ostree-bootconfig-parser.c"
             line="139">Initialize a bootconfig from the given file.</doc>
        <source-position filename="ostree-bootconfig-parser.h" line="46"/>
        <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"
                 filename="ostree-bootconfig-parser.c"
                 line="141">Parser</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
          <parameter name="dfd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="142">Directory fd</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="143">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"
                 filename="ostree-bootconfig-parser.c"
                 line="144">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="ostree_bootconfig_parser_set">
        <doc xml:space="preserve"
             filename="ostree-bootconfig-parser.c"
             line="214">Set the @key/@value pair to the boot configuration dictionary.</doc>
        <source-position filename="ostree-bootconfig-parser.h" line="58"/>
        <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"
                 filename="ostree-bootconfig-parser.c"
                 line="216">Parser</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="217">the key</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="218">the key</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_overlay_initrds"
              c:identifier="ostree_bootconfig_parser_set_overlay_initrds"
              version="2020.7">
        <doc xml:space="preserve"
             filename="ostree-bootconfig-parser.c"
             line="244">These are rendered as additional `initrd` keys in the final bootloader configs. The
base initrd is part of the primary keys.</doc>
        <source-position filename="ostree-bootconfig-parser.h" line="65"/>
        <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"
                 filename="ostree-bootconfig-parser.c"
                 line="246">Parser</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </instance-parameter>
          <parameter name="initrds"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-bootconfig-parser.c"
                 line="247">Array of overlay
   initrds or %NULL to unset.</doc>
            <array c:type="char**">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="write"
              c:identifier="ostree_bootconfig_parser_write"
              throws="1">
        <source-position filename="ostree-bootconfig-parser.h" line="50"/>
        <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">
        <source-position filename="ostree-bootconfig-parser.h" line="54"/>
        <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>
    <function-macro name="CHECK_VERSION"
                    c:identifier="OSTREE_CHECK_VERSION"
                    version="2017.4"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="ostree-version.h"
           line="79">Compile-time version checking. Evaluates to %TRUE if the version
of ostree is equal or greater than the required one.</doc>
      <source-position filename="ostree-version.h" line="88"/>
      <parameters>
        <parameter name="year">
          <doc xml:space="preserve"
               filename="ostree-version.h"
               line="81">required year version</doc>
        </parameter>
        <parameter name="release">
          <doc xml:space="preserve"
               filename="ostree-version.h"
               line="82">required release version</doc>
        </parameter>
      </parameters>
    </function-macro>
    <constant name="COMMIT_GVARIANT_STRING"
              value="(a{sv}aya(say)sstayay)"
              c:type="OSTREE_COMMIT_GVARIANT_STRING">
      <source-position filename="ostree-core.h" line="153"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="COMMIT_META_KEY_ARCHITECTURE"
              value="ostree.architecture"
              c:type="OSTREE_COMMIT_META_KEY_ARCHITECTURE"
              version="2020.4">
      <doc xml:space="preserve"
           filename="ostree-core.h"
           line="231">GVariant type `s`.  Intended to describe the CPU architecture.  This is a freeform string, and
some distributions which have existing package managers might want to match that schema.  If you
don't have a prior schema, it's recommended to use `uname -m` by default (i.e. the Linux kernel
schema).  In the future ostree might include a builtin function to compare architectures.</doc>
      <source-position filename="ostree-core.h" line="241"/>
      <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="2018.6">
      <doc xml:space="preserve"
           filename="ostree-core.h"
           line="293">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>
      <source-position filename="ostree-core.h" line="304"/>
      <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"
           filename="ostree-core.h"
           line="253">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>
      <source-position filename="ostree-core.h" line="262"/>
      <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"
           filename="ostree-core.h"
           line="243">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>
      <source-position filename="ostree-core.h" line="252"/>
      <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"
           filename="ostree-core.h"
           line="280">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>
      <source-position filename="ostree-core.h" line="292"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="COMMIT_META_KEY_SOURCE_TITLE"
              value="ostree.source-title"
              c:type="OSTREE_COMMIT_META_KEY_SOURCE_TITLE"
              version="2017.13">
      <doc xml:space="preserve"
           filename="ostree-core.h"
           line="263">GVariant type `s`. This should hold a relatively short single line value
containing a human-readable "source" for a commit, intended to be displayed
near the origin ref.  This is particularly useful for systems that inject
content into an OSTree commit from elsewhere - for example, generating from
an OCI or qcow2 image. Or if generating from packages, the enabled repository
names and their versions.

Try to keep this key short (e.g. &lt; 80 characters) and human-readable; if you
desire machine readable data, consider injecting separate metadata keys.</doc>
      <source-position filename="ostree-core.h" line="278"/>
      <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"
           filename="ostree-core.h"
           line="219">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>
      <source-position filename="ostree-core.h" line="229"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <bitfield name="ChecksumFlags"
              version="2017.13"
              c:type="OstreeChecksumFlags">
      <doc xml:space="preserve"
           filename="ostree-core.h"
           line="436">Flags influencing checksumming logic.</doc>
      <source-position filename="ostree-core.h" line="454"/>
      <member name="none" value="0" c:identifier="OSTREE_CHECKSUM_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="438">Default checksumming without tweaks.
   (Since: 2017.13.)</doc>
      </member>
      <member name="ignore_xattrs"
              value="1"
              c:identifier="OSTREE_CHECKSUM_FLAGS_IGNORE_XATTRS">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="440">Ignore xattrs when checksumming.
   (Since: 2017.13.)</doc>
      </member>
      <member name="canonical_permissions"
              value="2"
              c:identifier="OSTREE_CHECKSUM_FLAGS_CANONICAL_PERMISSIONS">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="442">Use canonical uid/gid/mode
   values, for bare-user-only mode. (Since: 2021.4.)</doc>
      </member>
    </bitfield>
    <record name="CollectionRef"
            c:type="OstreeCollectionRef"
            version="2018.6"
            glib:type-name="OstreeCollectionRef"
            glib:get-type="ostree_collection_ref_get_type"
            c:symbol-prefix="collection_ref">
      <doc xml:space="preserve"
           filename="ostree-ref.h"
           line="33">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>
      <source-position filename="ostree-ref.h" line="49"/>
      <field name="collection_id" writable="1">
        <doc xml:space="preserve"
             filename="ostree-ref.h"
             line="35">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"
             filename="ostree-ref.h"
             line="37">ref name</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <constructor name="new"
                   c:identifier="ostree_collection_ref_new"
                   version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-ref.c"
             line="38">Create a new #OstreeCollectionRef containing (@collection_id, @ref_name). If
@collection_id is %NULL, this is equivalent to a plain ref name string (not a
refspec; no remote name is included), which can be used for non-P2P
operations.</doc>
        <source-position filename="ostree-ref.h" line="55"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-ref.c"
               line="48">a new #OstreeCollectionRef</doc>
          <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
        </return-value>
        <parameters>
          <parameter name="collection_id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-ref.c"
                 line="40">a collection ID, or %NULL for a plain ref</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="ref_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-ref.c"
                 line="41">a ref name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="dup"
              c:identifier="ostree_collection_ref_dup"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-ref.c"
             line="67">Create a copy of the given @ref.</doc>
        <source-position filename="ostree-ref.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-ref.c"
               line="73">a newly allocated copy of @ref</doc>
          <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-ref.c"
                 line="69">an #OstreeCollectionRef</doc>
            <type name="CollectionRef" c:type="const OstreeCollectionRef*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="equal"
              c:identifier="ostree_collection_ref_equal"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-ref.c"
             line="123">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>
        <source-position filename="ostree-ref.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-ref.c"
               line="131">%TRUE if @ref1 and @ref2 are equal, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ref1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-ref.c"
                 line="125">an #OstreeCollectionRef</doc>
            <type name="CollectionRef" c:type="gconstpointer"/>
          </instance-parameter>
          <parameter name="ref2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-ref.c"
                 line="126">another #OstreeCollectionRef</doc>
            <type name="CollectionRef" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="ostree_collection_ref_free"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-ref.c"
             line="84">Free the given @ref.</doc>
        <source-position filename="ostree-ref.h" line="59"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ref" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-ref.c"
                 line="86">an #OstreeCollectionRef</doc>
            <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="hash"
              c:identifier="ostree_collection_ref_hash"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-ref.c"
             line="102">Hash the given @ref. This function is suitable for use with #GHashTable.
@ref must be non-%NULL.</doc>
        <source-position filename="ostree-ref.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-ref.c"
               line="109">hash value for @ref</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-ref.c"
                 line="104">an #OstreeCollectionRef</doc>
            <type name="CollectionRef" c:type="gconstpointer"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="dupv"
                c:identifier="ostree_collection_ref_dupv"
                version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-ref.c"
             line="143">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>
        <source-position filename="ostree-ref.h" line="67"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-ref.c"
               line="151">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"
                 filename="ostree-ref.c"
                 line="145">%NULL-terminated array of #OstreeCollectionRefs</doc>
            <array c:type="const OstreeCollectionRef* const*">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
        </parameters>
      </function>
      <function name="freev"
                c:identifier="ostree_collection_ref_freev"
                version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-ref.c"
             line="171">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>
        <source-position filename="ostree-ref.h" line="69"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="refs" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-ref.c"
                 line="173">an array of #OstreeCollectionRefs</doc>
            <array c:type="OstreeCollectionRef**">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="CommitSizesEntry"
            c:type="OstreeCommitSizesEntry"
            version="2020.1"
            glib:type-name="OstreeCommitSizesEntry"
            glib:get-type="ostree_commit_sizes_entry_get_type"
            c:symbol-prefix="commit_sizes_entry">
      <doc xml:space="preserve"
           filename="ostree-core.h"
           line="504">Structure representing an entry in the "ostree.sizes" commit metadata. Each
entry corresponds to an object in the associated commit.</doc>
      <source-position filename="ostree-core.h" line="522"/>
      <field name="checksum" writable="1">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="506">object checksum</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="objtype" writable="1">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="507">object type</doc>
        <type name="ObjectType" c:type="OstreeObjectType"/>
      </field>
      <field name="unpacked" writable="1">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="508">unpacked object size</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="archived" writable="1">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="509">compressed object size</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <constructor name="new"
                   c:identifier="ostree_commit_sizes_entry_new"
                   version="2020.1">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2475">Create a new #OstreeCommitSizesEntry for representing an object in a
commit's "ostree.sizes" metadata.</doc>
        <source-position filename="ostree-core.h" line="528"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="2485">a new #OstreeCommitSizesEntry</doc>
          <type name="CommitSizesEntry" c:type="OstreeCommitSizesEntry*"/>
        </return-value>
        <parameters>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-core.c"
                 line="2477">object checksum</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-core.c"
                 line="2478">object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="unpacked" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-core.c"
                 line="2479">unpacked object size</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="archived" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-core.c"
                 line="2480">compressed object size</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy"
              c:identifier="ostree_commit_sizes_entry_copy"
              version="2020.1">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2503">Create a copy of the given @entry.</doc>
        <source-position filename="ostree-core.h" line="532"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="2509">a new copy of @entry</doc>
          <type name="CommitSizesEntry" c:type="OstreeCommitSizesEntry*"/>
        </return-value>
        <parameters>
          <instance-parameter name="entry" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-core.c"
                 line="2505">an #OstreeCommitSizesEntry</doc>
            <type name="CommitSizesEntry"
                  c:type="const OstreeCommitSizesEntry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="ostree_commit_sizes_entry_free"
              version="2020.1">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2521">Free given @entry.</doc>
        <source-position filename="ostree-core.h" line="534"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="entry" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-core.c"
                 line="2523">an #OstreeCommitSizesEntry</doc>
            <type name="CommitSizesEntry" c:type="OstreeCommitSizesEntry*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="ContentWriter"
           c:symbol-prefix="content_writer"
           c:type="OstreeContentWriter"
           parent="Gio.OutputStream"
           glib:type-name="OstreeContentWriter"
           glib:get-type="ostree_content_writer_get_type"
           glib:type-struct="ContentWriterClass">
      <source-position filename="ostree-content-writer.h" line="28"/>
      <method name="finish"
              c:identifier="ostree_content_writer_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-content-writer.c"
             line="107">Complete the object write and return the checksum.</doc>
        <source-position filename="ostree-content-writer.h" line="32"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-content-writer.c"
               line="114">Checksum, or %NULL on error</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-content-writer.c"
                 line="109">Writer</doc>
            <type name="ContentWriter" c:type="OstreeContentWriter*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-content-writer.c"
                 line="110">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="ContentWriterClass"
            c:type="OstreeContentWriterClass"
            glib:is-gtype-struct-for="ContentWriter">
      <source-position filename="ostree-content-writer.h" line="28"/>
      <field name="parent_class">
        <type name="Gio.OutputStreamClass" c:type="GOutputStreamClass"/>
      </field>
    </record>
    <function-macro name="DEPLOYMENT"
                    c:identifier="OSTREE_DEPLOYMENT"
                    introspectable="0">
      <source-position filename="ostree-deployment.h" line="26"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="DIRMETA_GVARIANT_STRING"
              value="(uuua(ayay))"
              c:type="OSTREE_DIRMETA_GVARIANT_STRING">
      <source-position filename="ostree-core.h" line="113"/>
      <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">
        <source-position filename="ostree-deployment.h" line="52"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="362">New deployment</doc>
          <type name="Deployment" c:type="OstreeDeployment*"/>
        </return-value>
        <parameters>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="355">Global index into the bootloader entries</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="osname" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="356">"stateroot" for this deployment</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="csum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="357">OSTree commit that will be deployed</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="deployserial" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="358">Unique counter</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="bootcsum"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="359">Kernel/initrd checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="bootserial" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="360">Unique index</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="origin_remove_transient_state"
                c:identifier="ostree_deployment_origin_remove_transient_state"
                version="2018.3">
        <doc xml:space="preserve"
             filename="ostree-deployment.c"
             line="183">The intention of an origin file is primarily describe the "inputs" that
resulted in a deployment, and it's commonly used to derive the new state. For
example, a key value (in pure libostree mode) is the "refspec". However,
libostree (or other applications) may want to store "transient" state that
should not be carried across upgrades.

This function just removes all members of the `libostree-transient` group.
The name of that group is available to all libostree users; best practice
would be to prefix values underneath there with a short identifier for your
software.

Additionally, this function will remove the `origin/unlocked` and
`origin/override-commit` members; these should be considered transient state
that should have been under an explicit group.</doc>
        <source-position filename="ostree-deployment.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="origin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="185">An origin</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
        </parameters>
      </function>
      <function name="unlocked_state_to_string"
                c:identifier="ostree_deployment_unlocked_state_to_string"
                version="2016.4">
        <source-position filename="ostree-deployment.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="409">Description of state</doc>
          <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">
        <source-position filename="ostree-deployment.h" line="94"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="250">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"
                 filename="ostree-deployment.c"
                 line="248">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="ostree_deployment_equal">
        <source-position filename="ostree-deployment.h" line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="306">%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"
                 filename="ostree-deployment.c"
                 line="303">A deployment</doc>
            <type name="Deployment" c:type="gconstpointer"/>
          </instance-parameter>
          <parameter name="bp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="304">A deployment</doc>
            <type name="Deployment" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bootconfig"
              c:identifier="ostree_deployment_get_bootconfig">
        <source-position filename="ostree-deployment.h" line="68"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="93">Boot configuration</doc>
          <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="91">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bootcsum"
              c:identifier="ostree_deployment_get_bootcsum">
        <source-position filename="ostree-deployment.h" line="64"/>
        <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">
        <source-position filename="ostree-deployment.h" line="66"/>
        <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">
        <source-position filename="ostree-deployment.h" line="62"/>
        <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">
        <source-position filename="ostree-deployment.h" line="60"/>
        <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">
        <source-position filename="ostree-deployment.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="117">The global index into the bootloader ordering</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="115">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_origin" c:identifier="ostree_deployment_get_origin">
        <source-position filename="ostree-deployment.h" line="70"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="105">Origin</doc>
          <type name="GLib.KeyFile" c:type="GKeyFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="103">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"
             filename="ostree-deployment.c"
             line="388">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>
        <source-position filename="ostree-deployment.h" line="97"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="396">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"
                 filename="ostree-deployment.c"
                 line="390">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_osname" c:identifier="ostree_deployment_get_osname">
        <source-position filename="ostree-deployment.h" line="58"/>
        <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"
              version="2016.4">
        <source-position filename="ostree-deployment.h" line="111"/>
        <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="hash" c:identifier="ostree_deployment_hash">
        <source-position filename="ostree-deployment.h" line="47"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="291">An integer suitable for use in a `GHashTable`</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="v" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="289">Deployment</doc>
            <type name="Deployment" c:type="gconstpointer"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_finalization_locked"
              c:identifier="ostree_deployment_is_finalization_locked"
              version="2023.8">
        <source-position filename="ostree-deployment.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="474">`TRUE` if deployment is queued to be "finalized" at shutdown time, but requires
additional action.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="472">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_pinned"
              c:identifier="ostree_deployment_is_pinned"
              version="2018.3">
        <doc xml:space="preserve"
             filename="ostree-deployment.c"
             line="440">See ostree_sysroot_deployment_set_pinned().</doc>
        <source-position filename="ostree-deployment.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="446">`TRUE` if deployment will not be subject to GC</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="442">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_soft_reboot_target"
              c:identifier="ostree_deployment_is_soft_reboot_target"
              version="2025.3">
        <source-position filename="ostree-deployment.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="489">`TRUE` if deployment is set for a soft reboot.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="487">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_staged"
              c:identifier="ostree_deployment_is_staged"
              version="2018.3">
        <source-position filename="ostree-deployment.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-deployment.c"
               line="461">`TRUE` if deployment should be "finalized" at shutdown time</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="459">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_bootconfig"
              c:identifier="ostree_deployment_set_bootconfig">
        <doc xml:space="preserve"
             filename="ostree-deployment.c"
             line="151">Set or clear the bootloader configuration.</doc>
        <source-position filename="ostree-deployment.h" line="86"/>
        <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"
                 filename="ostree-deployment.c"
                 line="153">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
          <parameter name="bootconfig"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="154">Bootloader configuration object</doc>
            <type name="BootconfigParser" c:type="OstreeBootconfigParser*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_bootserial"
              c:identifier="ostree_deployment_set_bootserial">
        <doc xml:space="preserve"
             filename="ostree-deployment.c"
             line="138">Should never have been made public API; don't use this.</doc>
        <source-position filename="ostree-deployment.h" line="84"/>
        <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"
                 filename="ostree-deployment.c"
                 line="140">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="141">Don't use this</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_index" c:identifier="ostree_deployment_set_index">
        <doc xml:space="preserve"
             filename="ostree-deployment.c"
             line="125">Sets the global index into the bootloader ordering.</doc>
        <source-position filename="ostree-deployment.h" line="82"/>
        <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"
                 filename="ostree-deployment.c"
                 line="127">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="128">Index into bootloader ordering</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_origin" c:identifier="ostree_deployment_set_origin">
        <doc xml:space="preserve"
             filename="ostree-deployment.c"
             line="164">Replace the "origin", which is a description of the source
of the deployment and how to update to the next version.</doc>
        <source-position filename="ostree-deployment.h" line="88"/>
        <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"
                 filename="ostree-deployment.c"
                 line="166">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </instance-parameter>
          <parameter name="origin"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-deployment.c"
                 line="167">Set the origin for this deployment</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <enumeration name="DeploymentUnlockedState"
                 c:type="OstreeDeploymentUnlockedState">
      <source-position filename="ostree-deployment.h" line="105"/>
      <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>
      <member name="transient"
              value="3"
              c:identifier="OSTREE_DEPLOYMENT_UNLOCKED_TRANSIENT">
      </member>
    </enumeration>
    <record name="DiffDirsOptions" c:type="OstreeDiffDirsOptions">
      <doc xml:space="preserve"
           filename="ostree-diff.h"
           line="69">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>
      <source-position filename="ostree-diff.h" line="87"/>
      <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" fixed-size="7">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
      <field name="unused_ints" writable="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gint" c:type="int"/>
        </array>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="DiffFlags" c:type="OstreeDiffFlags">
      <source-position filename="ostree-diff.h" line="36"/>
      <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">
      <source-position filename="ostree-diff.h" line="54"/>
      <field name="refcount" writable="1">
        <type name="gint" c:type="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">
        <source-position filename="ostree-diff.h" line="57"/>
        <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">
        <source-position filename="ostree-diff.h" line="59"/>
        <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>
    <function-macro name="ENCODE_VERSION"
                    c:identifier="OSTREE_ENCODE_VERSION"
                    introspectable="0">
      <source-position filename="ostree-version.h" line="65"/>
      <parameters>
        <parameter name="year">
        </parameter>
        <parameter name="release">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="FILEMETA_GVARIANT_STRING"
              value="(uuua(ayay))"
              c:type="OSTREE_FILEMETA_GVARIANT_STRING">
      <source-position filename="ostree-core.h" line="129"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="GPG_KEY_GVARIANT_STRING"
              value="(aa{sv}aa{sv}a{sv})"
              c:type="OSTREE_GPG_KEY_GVARIANT_STRING">
      <source-position filename="ostree-repo.h" line="1227"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="GPG_VERIFY_RESULT"
                    c:identifier="OSTREE_GPG_VERIFY_RESULT"
                    introspectable="0">
      <source-position filename="ostree-gpg-verify-result.h" line="28"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <enumeration name="GpgError"
                 version="2017.10"
                 c:type="OstreeGpgError"
                 glib:error-domain="OstreeGpgError">
      <doc xml:space="preserve"
           filename="ostree-gpg-verify-result.h"
           line="149">Errors returned by signature creation and verification operations in OSTree.
These may be returned by any API which creates or verifies signatures.</doc>
      <source-position filename="ostree-gpg-verify-result.h" line="174"/>
      <member name="no_signature"
              value="0"
              c:identifier="OSTREE_GPG_ERROR_NO_SIGNATURE">
        <doc xml:space="preserve"
             filename="ostree-gpg-verify-result.h"
             line="151">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"
             filename="ostree-gpg-verify-result.h"
             line="152">A signature was malformed.</doc>
      </member>
      <member name="missing_key"
              value="2"
              c:identifier="OSTREE_GPG_ERROR_MISSING_KEY">
        <doc xml:space="preserve"
             filename="ostree-gpg-verify-result.h"
             line="153">A signature was found, but was created with a key not in the
configured keyrings.</doc>
      </member>
      <member name="expired_signature"
              value="3"
              c:identifier="OSTREE_GPG_ERROR_EXPIRED_SIGNATURE">
        <doc xml:space="preserve"
             filename="ostree-gpg-verify-result.h"
             line="155">A signature was expired. Since: 2020.1.</doc>
      </member>
      <member name="expired_key"
              value="4"
              c:identifier="OSTREE_GPG_ERROR_EXPIRED_KEY">
        <doc xml:space="preserve"
             filename="ostree-gpg-verify-result.h"
             line="156">A signature was found, but the key used to
  sign it has expired. Since: 2020.1.</doc>
      </member>
      <member name="revoked_key"
              value="5"
              c:identifier="OSTREE_GPG_ERROR_REVOKED_KEY">
        <doc xml:space="preserve"
             filename="ostree-gpg-verify-result.h"
             line="158">A signature was found, but the key used to
  sign it has been revoked. Since: 2020.1.</doc>
      </member>
    </enumeration>
    <enumeration name="GpgSignatureAttr" c:type="OstreeGpgSignatureAttr">
      <doc xml:space="preserve"
           filename="ostree-gpg-verify-result.h"
           line="35">Signature attributes available from an #OstreeGpgVerifyResult.
The attribute's #GVariantType is shown in brackets.</doc>
      <source-position filename="ostree-gpg-verify-result.h" line="99"/>
      <member name="valid"
              value="0"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_VALID">
        <doc xml:space="preserve"
             filename="ostree-gpg-verify-result.h"
             line="37">[#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"
             filename="ostree-gpg-verify-result.h"
             line="39">[#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"
             filename="ostree-gpg-verify-result.h"
             line="41">[#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"
             filename="ostree-gpg-verify-result.h"
             line="43">[#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"
             filename="ostree-gpg-verify-result.h"
             line="45">[#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"
             filename="ostree-gpg-verify-result.h"
             line="47">[#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"
             filename="ostree-gpg-verify-result.h"
             line="49">[#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"
             filename="ostree-gpg-verify-result.h"
             line="51">[#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"
             filename="ostree-gpg-verify-result.h"
             line="54">[#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"
             filename="ostree-gpg-verify-result.h"
             line="57">[#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"
             filename="ostree-gpg-verify-result.h"
             line="60">[#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"
             filename="ostree-gpg-verify-result.h"
             line="62">[#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"
             filename="ostree-gpg-verify-result.h"
             line="65">[#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>
      <member name="key_exp_timestamp"
              value="13"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_KEY_EXP_TIMESTAMP">
        <doc xml:space="preserve"
             filename="ostree-gpg-verify-result.h"
             line="70">[#G_VARIANT_TYPE_INT64] Key expiration Unix timestamp (0 if no
  expiration or if the key is missing)</doc>
      </member>
      <member name="key_exp_timestamp_primary"
              value="14"
              c:identifier="OSTREE_GPG_SIGNATURE_ATTR_KEY_EXP_TIMESTAMP_PRIMARY">
        <doc xml:space="preserve"
             filename="ostree-gpg-verify-result.h"
             line="73">[#G_VARIANT_TYPE_INT64] Key expiration Unix timestamp of the signing key's
  primary key (will be the same as OSTREE_GPG_SIGNATURE_ATTR_KEY_EXP_TIMESTAMP
  if the signing key is the primary key and 0 if no expiration or if the key
  is missing)</doc>
      </member>
    </enumeration>
    <bitfield name="GpgSignatureFormatFlags"
              c:type="OstreeGpgSignatureFormatFlags">
      <doc xml:space="preserve"
           filename="ostree-gpg-verify-result.h"
           line="121">Formatting flags for ostree_gpg_verify_result_describe().  Currently
there's only one possible output format, but this enumeration allows
for future variations.</doc>
      <source-position filename="ostree-gpg-verify-result.h" line="133"/>
      <member name="gpg_signature_format_default"
              value="0"
              c:identifier="OSTREE_GPG_SIGNATURE_FORMAT_DEFAULT">
        <doc xml:space="preserve"
             filename="ostree-gpg-verify-result.h"
             line="123">Use the default output format</doc>
      </member>
    </bitfield>
    <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"
             filename="ostree-gpg-verify-result.c"
             line="554">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>
        <source-position filename="ostree-gpg-verify-result.h" line="141"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="variant" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="556">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"
                 filename="ostree-gpg-verify-result.c"
                 line="557">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"
                 filename="ostree-gpg-verify-result.c"
                 line="558">optional line prefix string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="559">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"
             filename="ostree-gpg-verify-result.c"
             line="165">Counts all the signatures in @result.</doc>
        <source-position filename="ostree-gpg-verify-result.h" line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-gpg-verify-result.c"
               line="171">signature count</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="167">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"
             filename="ostree-gpg-verify-result.c"
             line="189">Counts only the valid signatures in @result.</doc>
        <source-position filename="ostree-gpg-verify-result.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-gpg-verify-result.c"
               line="195">valid signature count</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="191">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"
             filename="ostree-gpg-verify-result.c"
             line="491">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>
        <source-position filename="ostree-gpg-verify-result.h" line="136"/>
        <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"
                 filename="ostree-gpg-verify-result.c"
                 line="493">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
          <parameter name="signature_index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="494">which signature to describe</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="output_buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="495">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"
                 filename="ostree-gpg-verify-result.c"
                 line="496">optional line prefix string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="497">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"
             filename="ostree-gpg-verify-result.c"
             line="275">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>
        <source-position filename="ostree-gpg-verify-result.h" line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-gpg-verify-result.c"
               line="290">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"
                 filename="ostree-gpg-verify-result.c"
                 line="277">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
          <parameter name="signature_index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="278">which signature to get attributes from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="attrs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="279">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"
                 filename="ostree-gpg-verify-result.c"
                 line="280">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"
             filename="ostree-gpg-verify-result.c"
             line="451">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>
        <source-position filename="ostree-gpg-verify-result.h" line="119"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-gpg-verify-result.c"
               line="480">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"
                 filename="ostree-gpg-verify-result.c"
                 line="453">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
          <parameter name="signature_index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="454">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"
             filename="ostree-gpg-verify-result.c"
             line="214">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>
        <source-position filename="ostree-gpg-verify-result.h" line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-gpg-verify-result.c"
               line="227">%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"
                 filename="ostree-gpg-verify-result.c"
                 line="216">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
          <parameter name="key_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-gpg-verify-result.c"
                 line="217">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"
                 filename="ostree-gpg-verify-result.c"
                 line="218">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"
              version="2016.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-gpg-verify-result.c"
             line="698">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>
        <source-position filename="ostree-gpg-verify-result.h" line="146"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-gpg-verify-result.c"
               line="708">%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"
                 filename="ostree-gpg-verify-result.c"
                 line="700">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult" c:type="OstreeGpgVerifyResult*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <function-macro name="IS_ASYNC_PROGRESS"
                    c:identifier="OSTREE_IS_ASYNC_PROGRESS"
                    introspectable="0">
      <source-position filename="ostree-async-progress.h" line="31"/>
      <parameters>
        <parameter name="o">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ASYNC_PROGRESS_CLASS"
                    c:identifier="OSTREE_IS_ASYNC_PROGRESS_CLASS"
                    introspectable="0">
      <source-position filename="ostree-async-progress.h" line="32"/>
      <parameters>
        <parameter name="k">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BOOTCONFIG_PARSER"
                    c:identifier="OSTREE_IS_BOOTCONFIG_PARSER"
                    introspectable="0">
      <source-position filename="ostree-bootconfig-parser.h" line="27"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DEPLOYMENT"
                    c:identifier="OSTREE_IS_DEPLOYMENT"
                    introspectable="0">
      <source-position filename="ostree-deployment.h" line="28"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_GPG_VERIFY_RESULT"
                    c:identifier="OSTREE_IS_GPG_VERIFY_RESULT"
                    introspectable="0">
      <source-position filename="ostree-gpg-verify-result.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MUTABLE_TREE"
                    c:identifier="OSTREE_IS_MUTABLE_TREE"
                    introspectable="0">
      <source-position filename="ostree-mutable-tree.h" line="33"/>
      <parameters>
        <parameter name="o">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MUTABLE_TREE_CLASS"
                    c:identifier="OSTREE_IS_MUTABLE_TREE_CLASS"
                    introspectable="0">
      <source-position filename="ostree-mutable-tree.h" line="34"/>
      <parameters>
        <parameter name="k">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_REPO"
                    c:identifier="OSTREE_IS_REPO"
                    introspectable="0">
      <source-position filename="ostree-repo.h" line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_REPO_FILE"
                    c:identifier="OSTREE_IS_REPO_FILE"
                    introspectable="0">
      <source-position filename="ostree-repo-file.h" line="33"/>
      <parameters>
        <parameter name="o">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_REPO_FILE_CLASS"
                    c:identifier="OSTREE_IS_REPO_FILE_CLASS"
                    introspectable="0">
      <source-position filename="ostree-repo-file.h" line="34"/>
      <parameters>
        <parameter name="k">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SEPOLICY"
                    c:identifier="OSTREE_IS_SEPOLICY"
                    introspectable="0">
      <source-position filename="ostree-sepolicy.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SYSROOT"
                    c:identifier="OSTREE_IS_SYSROOT"
                    introspectable="0">
      <source-position filename="ostree-sysroot.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SYSROOT_UPGRADER"
                    c:identifier="OSTREE_IS_SYSROOT_UPGRADER"
                    introspectable="0">
      <source-position filename="ostree-sysroot-upgrader.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <record name="KernelArgs"
            c:type="OstreeKernelArgs"
            disguised="1"
            opaque="1">
      <source-position filename="ostree-types.h" line="41"/>
      <method name="append"
              c:identifier="ostree_kernel_args_append"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="543">Appends @arg which is in the form of key=value pair to the hash table kargs-&gt;table
(appends to the value list if key is already in the hash table)
and appends key to kargs-&gt;order if it is not in the hash table already.</doc>
        <source-position filename="ostree-kernel-args.h" line="46"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="545">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="arg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="546">key or key/value pair to be added</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="append_argv"
              c:identifier="ostree_kernel_args_append_argv"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="634">Appends each value in @argv to the corresponding value array and
appends key to kargs-&gt;order if it is not in the hash table already.</doc>
        <source-position filename="ostree-kernel-args.h" line="49"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="636">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="argv" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="637">an array of key=value argument pairs</doc>
            <array c:type="char**">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="append_argv_filtered"
              c:identifier="ostree_kernel_args_append_argv_filtered"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="610">Appends each argument that does not have one of the @prefixes as prefix to the @kargs</doc>
        <source-position filename="ostree-kernel-args.h" line="52"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="612">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="argv" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="613">an array of key=value argument pairs</doc>
            <array c:type="char**">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
          <parameter name="prefixes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="614">an array of prefix strings</doc>
            <array c:type="char**">
              <type name="utf8" c:type="char*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="append_if_missing"
              c:identifier="ostree_kernel_args_append_if_missing"
              version="2022.5">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="845">Appends @arg which is in the form of key=value pair to the hash table kargs-&gt;table
(appends to the value list if key is not in the hash table)
and appends key to kargs-&gt;order if it is not in the hash table.</doc>
        <source-position filename="ostree-kernel-args.h" line="85"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="847">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="arg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="848">key or key/value pair to be added</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="append_proc_cmdline"
              c:identifier="ostree_kernel_args_append_proc_cmdline"
              version="2019.3"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="650">Appends the command line arguments in the file "/proc/cmdline"
that does not have "BOOT_IMAGE=" and "initrd=" as prefixes to the @kargs</doc>
        <source-position filename="ostree-kernel-args.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="659">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="652">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="653">optional GCancellable object, NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains"
              c:identifier="ostree_kernel_args_contains"
              version="2022.7">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="866">Search for @arg which is in the form of key=value pair at the hash table kargs-&gt;table
and returns true if finds it.</doc>
        <source-position filename="ostree-kernel-args.h" line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="874">%TRUE if @arg is contained in @kargs, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="868">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="arg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="869">key or key/value pair to check</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete"
              c:identifier="ostree_kernel_args_delete"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="403">There are few scenarios being handled for deletion:

 1: for input arg with a single key(i.e without = for split),
 the key/value pair will be deleted if there is only
 one value that is associated with the key

 2: for input arg wth key/value pair, the specific key
 value pair will be deleted from the pointer array
 if those exist.

 3: If the found key has only one value
 associated with it, the key entry in the table will also
 be removed, and the key will be removed from order table

 Returns: %TRUE on success, %FALSE on failure

 Since: 2019.3</doc>
        <source-position filename="ostree-kernel-args.h" line="59"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="405">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="arg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="406">key or key/value pair for deletion</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_if_present"
              c:identifier="ostree_kernel_args_delete_if_present"
              version="2022.7"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="887">Deletes @arg which is in the form of key=value pair from the hash table kargs-&gt;table.</doc>
        <source-position filename="ostree-kernel-args.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="895">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="889">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="arg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="890">key or key/value pair to be deleted</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_key_entry"
              c:identifier="ostree_kernel_args_delete_key_entry"
              version="2019.3"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="366">This function removes the key entry from the hashtable
as well from the order pointer array inside kargs

Note: since both table and order inside kernel args
are with free function, no extra free functions are
being called as they are done automatically by GLib</doc>
        <source-position filename="ostree-kernel-args.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="379">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="368">an OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="369">the key to remove</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="ostree_kernel_args_free"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="227">Frees the kargs structure</doc>
        <source-position filename="ostree-kernel-args.h" line="28"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="229">An OstreeKernelArgs that represents kernel arguments</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_last_value"
              c:identifier="ostree_kernel_args_get_last_value"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="818">Finds and returns the last element of value array
corresponding to the @key in @kargs hash table. Note that the application
will be terminated if the @key is found but the value array is empty</doc>
        <source-position filename="ostree-kernel-args.h" line="73"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="827">%NULL if @key is not found in the @kargs hash table,
otherwise returns last element of value array corresponding to @key</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="820">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="821">a key to look for in @kargs hash table</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_replace"
              c:identifier="ostree_kernel_args_new_replace"
              version="2019.3"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="295">This function implements the basic logic behind key/value pair
replacement. Do note that the arg need to be properly formatted

When replacing key with exact one value, the arg can be in
the form:
key, key=new_val, or key=old_val=new_val
The first one swaps the old_val with the key to an empty value
The second and third replace the old_val into the new_val

When replacing key with multiple values, the arg can only be
in the form of:
key=old_val=new_val. Unless there is a special case where
there is an empty value associated with the key, then
key=new_val will work because old_val is empty. The empty
val will be swapped with the new_val in that case</doc>
        <source-position filename="ostree-kernel-args.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="317">%TRUE on success, %FALSE on failure (and in some other instances such as:
1. key not found in @kargs
2. old value not found when @arg is in the form of key=old_val=new_val
3. multiple old values found when @arg is in the form of key=old_val)</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="297">OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="arg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="298">a string argument</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_append"
              c:identifier="ostree_kernel_args_parse_append"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="691">Parses @options by separating it by whitespaces and appends each argument to @kargs</doc>
        <source-position filename="ostree-kernel-args.h" line="70"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="693">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="694">a string representing command line arguments</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="replace"
              c:identifier="ostree_kernel_args_replace"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="526">Finds and replaces the old key if @arg is already in the hash table,
otherwise adds @arg as new key and split_keyeq (arg) as value.
Note that when replacing old key value pair, the old values are freed.</doc>
        <source-position filename="ostree-kernel-args.h" line="40"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="528">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="arg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="529">key or key/value pair for replacement</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="replace_argv"
              c:identifier="ostree_kernel_args_replace_argv"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="587">Finds and replaces each non-null arguments of @argv in the hash table,
otherwise adds individual arg as new key and split_keyeq (arg) as value.
Note that when replacing old key value pair, the old values are freed.</doc>
        <source-position filename="ostree-kernel-args.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="589">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="argv" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="590">an array of key or key/value pairs</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="replace_take"
              c:identifier="ostree_kernel_args_replace_take"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="475">Finds and replaces the old key if @arg is already in the hash table,
otherwise adds @arg as new key and split_keyeq (arg) as value.
Note that when replacing old key, the old values are freed.</doc>
        <source-position filename="ostree-kernel-args.h" line="37"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="477">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
          <parameter name="arg" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="478">key or key/value pair for replacement</doc>
            <type name="utf8" c:type="char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="ostree_kernel_args_to_string"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="773">Extracts all key value pairs in @kargs and appends to a temporary
GString in forms of "key=value" or "key" if value is NULL separated
by a single whitespace, and returns the temporary string with the
GString wrapper freed

Note: the application will be terminated if one of the values array
in @kargs is NULL</doc>
        <source-position filename="ostree-kernel-args.h" line="82"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="785">a string of "key=value" pairs or "key" if value is NULL,
separated by single whitespaces</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="775">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="to_strv"
              c:identifier="ostree_kernel_args_to_strv"
              version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="740">Extracts all key value pairs in @kargs and appends to a temporary
array in forms of "key=value" or "key" if value is NULL, and returns
the temporary array with the GPtrArray wrapper freed</doc>
        <source-position filename="ostree-kernel-args.h" line="79"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="748">an array of "key=value" pairs or "key" if value is NULL</doc>
          <array c:type="char**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="742">a OstreeKernelArgs instance</doc>
            <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="cleanup"
                c:identifier="ostree_kernel_args_cleanup"
                version="2019.3">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="245">Frees the OstreeKernelArgs structure pointed by *loc</doc>
        <source-position filename="ostree-kernel-args.h" line="34"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="loc"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="247">Address of an OstreeKernelArgs pointer</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </function>
      <function name="from_string"
                c:identifier="ostree_kernel_args_from_string"
                version="2019.3"
                introspectable="0">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="718">Initializes a new OstreeKernelArgs then parses and appends @options
to the empty OstreeKernelArgs</doc>
        <source-position filename="ostree-kernel-args.h" line="76"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="725">newly allocated #OstreeKernelArgs with @options appended</doc>
          <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
        </return-value>
        <parameters>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-kernel-args.c"
                 line="720">a string representing command line arguments</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new"
                c:identifier="ostree_kernel_args_new"
                version="2019.3"
                introspectable="0">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="205">Initializes a new OstreeKernelArgs structure and returns it</doc>
        <source-position filename="ostree-kernel-args.h" line="31"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="210">A newly created #OstreeKernelArgs for kernel arguments</doc>
          <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
        </return-value>
      </function>
    </record>
    <constant name="MAX_METADATA_SIZE"
              value="134217728"
              c:type="OSTREE_MAX_METADATA_SIZE">
      <doc xml:space="preserve"
           filename="ostree-core.h"
           line="30">Default limit for maximum permitted size in bytes of metadata objects fetched
over HTTP (including repo/config files, refs, and commit/dirtree/dirmeta
objects). This is an arbitrary number intended to mitigate disk space
exhaustion attacks.</doc>
      <source-position filename="ostree-core.h" line="38"/>
      <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"
           filename="ostree-core.h"
           line="40">This variable is no longer meaningful, it is kept only for compatibility.</doc>
      <source-position filename="ostree-core.h" line="45"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="METADATA_KEY_BOOTABLE"
              value="ostree.bootable"
              c:type="OSTREE_METADATA_KEY_BOOTABLE"
              version="2021.1">
      <doc xml:space="preserve"
           filename="ostree-repo-os.h"
           line="26">GVariant type `b`: Set if this commit is intended to be bootable</doc>
      <source-position filename="ostree-repo-os.h" line="32"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="METADATA_KEY_LINUX"
              value="ostree.linux"
              c:type="OSTREE_METADATA_KEY_LINUX"
              version="2021.1">
      <doc xml:space="preserve"
           filename="ostree-repo-os.h"
           line="33">GVariant type `s`: Contains the Linux kernel release (i.e. `uname -r`)</doc>
      <source-position filename="ostree-repo-os.h" line="39"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="META_KEY_DEPLOY_COLLECTION_ID"
              value="ostree.deploy-collection-id"
              c:type="OSTREE_META_KEY_DEPLOY_COLLECTION_ID"
              version="2018.9">
      <doc xml:space="preserve"
           filename="ostree-repo.h"
           line="1385">GVariant type `s`. This key can be used in the repo metadata which is stored
in OSTREE_REPO_METADATA_REF as well as in the summary. The semantics of this
are that the remote repository wants clients to update their remote config
to add this collection ID (clients can't do P2P operations involving a
remote without a collection ID configured on it, even if one is configured
on the server side). Clients must never change or remove a collection ID
already set in their remote config.

Currently, OSTree does not implement changing a remote config based on this
key, but it may do so in a later release, and until then clients such as
Flatpak may implement it.

This is a replacement for the similar metadata key implemented by flatpak,
`xa.collection-id`, which is now deprecated as clients which supported it had
bugs with their P2P implementations.</doc>
      <source-position filename="ostree-repo.h" line="1405"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="MUTABLE_TREE"
                    c:identifier="OSTREE_MUTABLE_TREE"
                    introspectable="0">
      <source-position filename="ostree-mutable-tree.h" line="29"/>
      <parameters>
        <parameter name="o">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MUTABLE_TREE_CLASS"
                    c:identifier="OSTREE_MUTABLE_TREE_CLASS"
                    introspectable="0">
      <source-position filename="ostree-mutable-tree.h" line="31"/>
      <parameters>
        <parameter name="k">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MUTABLE_TREE_GET_CLASS"
                    c:identifier="OSTREE_MUTABLE_TREE_GET_CLASS"
                    introspectable="0">
      <source-position filename="ostree-mutable-tree.h" line="35"/>
      <parameters>
        <parameter name="o">
        </parameter>
      </parameters>
    </function-macro>
    <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"
           filename="ostree-mutable-tree.c"
           line="51">Private instance structure.</doc>
      <source-position filename="ostree-mutable-tree.h" line="49"/>
      <constructor name="new" c:identifier="ostree_mutable_tree_new">
        <source-position filename="ostree-mutable-tree.h" line="55"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-mutable-tree.c"
               line="622">A new tree</doc>
          <type name="MutableTree" c:type="OstreeMutableTree*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_checksum"
                   c:identifier="ostree_mutable_tree_new_from_checksum"
                   version="2018.7">
        <doc xml:space="preserve"
             filename="ostree-mutable-tree.c"
             line="630">Creates a new OstreeMutableTree with the contents taken from the given repo
and checksums.  The data will be loaded from the repo lazily as needed.</doc>
        <source-position filename="ostree-mutable-tree.h" line="62"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-mutable-tree.c"
               line="639">A new tree</doc>
          <type name="MutableTree" c:type="OstreeMutableTree*"/>
        </return-value>
        <parameters>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="632">The repo which contains the objects refered by the checksums.</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="contents_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="633">dirtree checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="metadata_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="634">dirmeta checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_commit"
                   c:identifier="ostree_mutable_tree_new_from_commit"
                   version="2021.5"
                   throws="1">
        <doc xml:space="preserve"
             filename="ostree-mutable-tree.c"
             line="655">Creates a new OstreeMutableTree with the contents taken from the given commit.
The data will be loaded from the repo lazily as needed.</doc>
        <source-position filename="ostree-mutable-tree.h" line="58"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-mutable-tree.c"
               line="663">A new tree</doc>
          <type name="MutableTree" c:type="OstreeMutableTree*"/>
        </return-value>
        <parameters>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="657">The repo which contains the objects refered by the checksums.</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="rev" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="658">ref or SHA-256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="check_error"
              c:identifier="ostree_mutable_tree_check_error"
              version="2018.7"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-mutable-tree.c"
             line="595">In some cases, a tree may be in a "lazy" state that loads
data in the background; if an error occurred during a non-throwing
API call, it will have been cached.  This function checks for a
cached error.  The tree remains in error state.</doc>
        <source-position filename="ostree-mutable-tree.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-mutable-tree.c"
               line="605">`TRUE` on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="597">Tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ensure_dir"
              c:identifier="ostree_mutable_tree_ensure_dir"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-mutable-tree.c"
             line="343">Returns the subdirectory of self with filename @name, creating an empty one
it if it doesn't exist.</doc>
        <source-position filename="ostree-mutable-tree.h" line="87"/>
        <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"
                 filename="ostree-mutable-tree.c"
                 line="345">Tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="346">Name of subdirectory of self to retrieve/creates</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_subdir"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="347">the subdirectory</doc>
            <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"
             filename="ostree-mutable-tree.c"
             line="418">Create all parent trees necessary for the given @split_path to
exist.</doc>
        <source-position filename="ostree-mutable-tree.h" line="96"/>
        <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"
                 filename="ostree-mutable-tree.c"
                 line="420">Tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="split_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="421">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"
                 filename="ostree-mutable-tree.c"
                 line="422">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"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="423">The parent tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree**"/>
          </parameter>
        </parameters>
      </method>
      <method name="fill_empty_from_dirtree"
              c:identifier="ostree_mutable_tree_fill_empty_from_dirtree"
              version="2018.7">
        <doc xml:space="preserve"
             filename="ostree-mutable-tree.c"
             line="471">Merges @self with the tree given by @contents_checksum and
@metadata_checksum, but only if it's possible without writing new objects to
the @repo.  We can do this if either @self is empty, the tree given by
@contents_checksum is empty or if both trees already have the same
@contents_checksum.</doc>
        <source-position filename="ostree-mutable-tree.h" line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-mutable-tree.c"
               line="480">@TRUE if merge was successful, @FALSE if it was not possible.

This function enables optimisations when composing trees.  The provided
checksums are not loaded or checked when this function is called.  Instead
the contents will be loaded only when needed.</doc>
          <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="repo" transfer-ownership="none">
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="contents_checksum" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="metadata_checksum" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contents_checksum"
              c:identifier="ostree_mutable_tree_get_contents_checksum">
        <source-position filename="ostree-mutable-tree.h" line="76"/>
        <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">
        <source-position filename="ostree-mutable-tree.h" line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-mutable-tree.c"
               line="586">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">
        <source-position filename="ostree-mutable-tree.h" line="70"/>
        <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">
        <source-position filename="ostree-mutable-tree.h" line="113"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-mutable-tree.c"
               line="573">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">
        <doc xml:space="preserve"
             filename="ostree-mutable-tree.c"
             line="380">Lookup @name and returns @out_file_checksum or @out_subdir depending on its
file type.</doc>
        <source-position filename="ostree-mutable-tree.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-mutable-tree.c"
               line="391">%TRUE on success and either @out_file_checksum or @out_subdir are
filled, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="382">Tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="383">name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_file_checksum"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="384">checksum</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="out_subdir"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="385">subdirectory</doc>
            <type name="MutableTree" c:type="OstreeMutableTree**"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove"
              c:identifier="ostree_mutable_tree_remove"
              version="2018.9"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-mutable-tree.c"
             line="311">Remove the file or subdirectory named @name from the mutable tree @self.</doc>
        <source-position filename="ostree-mutable-tree.h" line="83"/>
        <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"
                 filename="ostree-mutable-tree.c"
                 line="313">Tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="314">Name of file or subdirectory to remove</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="allow_noent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="315">If @FALSE, an error will be thrown if @name does not exist in the tree</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="replace_file"
              c:identifier="ostree_mutable_tree_replace_file"
              throws="1">
        <source-position filename="ostree-mutable-tree.h" line="79"/>
        <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">
        <source-position filename="ostree-mutable-tree.h" line="73"/>
        <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">
        <source-position filename="ostree-mutable-tree.h" line="67"/>
        <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"
             filename="ostree-mutable-tree.c"
             line="535">Traverse @start number of elements starting from @split_path; the
child will be returned in @out_subdir.</doc>
        <source-position filename="ostree-mutable-tree.h" line="101"/>
        <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"
                 filename="ostree-mutable-tree.c"
                 line="537">Tree</doc>
            <type name="MutableTree" c:type="OstreeMutableTree*"/>
          </instance-parameter>
          <parameter name="split_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-mutable-tree.c"
                 line="538">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"
                 filename="ostree-mutable-tree.c"
                 line="539">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"
                 filename="ostree-mutable-tree.c"
                 line="540">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">
      <source-position filename="ostree-mutable-tree.h" line="49"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="MutableTreeIter" c:type="OstreeMutableTreeIter">
      <source-position filename="ostree-mutable-tree.h" line="44"/>
      <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>
    <function-macro name="OBJECT_TYPE_IS_META"
                    c:identifier="OSTREE_OBJECT_TYPE_IS_META"
                    introspectable="0">
      <source-position filename="ostree-core.h" line="96"/>
      <parameters>
        <parameter name="t">
          <doc xml:space="preserve"
               filename="ostree-core.h"
               line="92">An #OstreeObjectType</doc>
        </parameter>
      </parameters>
    </function-macro>
    <constant name="ORIGIN_TRANSIENT_GROUP"
              value="libostree-transient"
              c:type="OSTREE_ORIGIN_TRANSIENT_GROUP"
              version="2018.3">
      <doc xml:space="preserve"
           filename="ostree-deployment.h"
           line="30">The name of a `GKeyFile` group for data that should not
be carried across upgrades.  For more information,
see ostree_deployment_origin_remove_transient_state().</doc>
      <source-position filename="ostree-deployment.h" line="39"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <enumeration name="ObjectType" c:type="OstreeObjectType">
      <doc xml:space="preserve"
           filename="ostree-core.h"
           line="61">Enumeration for core object types; %OSTREE_OBJECT_TYPE_FILE is for
content, the other types are metadata.</doc>
      <source-position filename="ostree-core.h" line="88"/>
      <member name="file" value="1" c:identifier="OSTREE_OBJECT_TYPE_FILE">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="63">Content; regular file, symbolic link</doc>
      </member>
      <member name="dir_tree"
              value="2"
              c:identifier="OSTREE_OBJECT_TYPE_DIR_TREE">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="64">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"
             filename="ostree-core.h"
             line="65">Directory metadata</doc>
      </member>
      <member name="commit" value="4" c:identifier="OSTREE_OBJECT_TYPE_COMMIT">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="66">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"
             filename="ostree-core.h"
             line="67">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"
             filename="ostree-core.h"
             line="68">Detached metadata for a commit</doc>
      </member>
      <member name="payload_link"
              value="7"
              c:identifier="OSTREE_OBJECT_TYPE_PAYLOAD_LINK">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="69">Symlink to a .file given its checksum on the payload only.</doc>
      </member>
      <member name="file_xattrs"
              value="8"
              c:identifier="OSTREE_OBJECT_TYPE_FILE_XATTRS">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="70">Detached xattrs content, for 'bare-split-xattrs' mode.</doc>
      </member>
      <member name="file_xattrs_link"
              value="9"
              c:identifier="OSTREE_OBJECT_TYPE_FILE_XATTRS_LINK">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="71">Hardlink to a .file-xattrs given the checksum of its .file
object.</doc>
      </member>
    </enumeration>
    <constant name="PATH_BOOTED"
              value="/run/ostree-booted"
              c:type="OSTREE_PATH_BOOTED"
              version="2022.2">
      <doc xml:space="preserve"
           filename="ostree-sysroot.h"
           line="27">Filesystem path that is created on an ostree-booted system.</doc>
      <source-position filename="ostree-sysroot.h" line="33"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="RELEASE_VERSION"
              value="3"
              c:type="OSTREE_RELEASE_VERSION"
              version="2017.4">
      <doc xml:space="preserve"
           filename="ostree-version.h"
           line="37">ostree release version component (e.g. 2 if %OSTREE_VERSION is 2017.2)</doc>
      <source-position filename="ostree-version.h" line="44"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <function-macro name="REPO" c:identifier="OSTREE_REPO" introspectable="0">
      <source-position filename="ostree-repo.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="REPO_FILE"
                    c:identifier="OSTREE_REPO_FILE"
                    introspectable="0">
      <source-position filename="ostree-repo-file.h" line="29"/>
      <parameters>
        <parameter name="o">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="REPO_FILE_CLASS"
                    c:identifier="OSTREE_REPO_FILE_CLASS"
                    introspectable="0">
      <source-position filename="ostree-repo-file.h" line="31"/>
      <parameters>
        <parameter name="k">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="REPO_FILE_GET_CLASS"
                    c:identifier="OSTREE_REPO_FILE_GET_CLASS"
                    introspectable="0">
      <source-position filename="ostree-repo-file.h" line="35"/>
      <parameters>
        <parameter name="o">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="REPO_METADATA_REF"
              value="ostree-metadata"
              c:type="OSTREE_REPO_METADATA_REF"
              version="2018.6">
      <doc xml:space="preserve"
           filename="ostree-repo.h"
           line="1362">The name of a ref which is used to store metadata for the entire repository,
such as its expected update time (`ostree.summary.expires`), name, or new
GPG keys. Metadata is stored on contentless commits in the ref, and hence is
signed with the commits.

This supersedes the additional metadata dictionary in the `summary` file
(see ostree_repo_regenerate_summary()), as the use of a ref means that the
metadata for multiple upstream repositories can be included in a single mirror
repository, disambiguating the refs using collection IDs. In order to support
peer to peer redistribution of repository metadata, repositories must set a
collection ID (ostree_repo_set_collection_id()).

Users of OSTree may place arbitrary metadata in commits on this ref, but the
keys must be namespaced by product or developer. For example,
`exampleos.end-of-life`. The `ostree.` prefix is reserved.</doc>
      <source-position filename="ostree-repo.h" line="1382"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="Remote"
            c:type="OstreeRemote"
            opaque="1"
            version="2018.6"
            glib:type-name="OstreeRemote"
            glib:get-type="ostree_remote_get_type"
            c:symbol-prefix="remote">
      <doc xml:space="preserve"
           filename="ostree-remote.h"
           line="36">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>
      <source-position filename="ostree-types.h" line="40"/>
      <method name="get_name"
              c:identifier="ostree_remote_get_name"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-remote.c"
             line="160">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>
        <source-position filename="ostree-remote.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-remote.c"
               line="168">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"
                 filename="ostree-remote.c"
                 line="162">an #OstreeRemote</doc>
            <type name="Remote" c:type="OstreeRemote*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_url"
              c:identifier="ostree_remote_get_url"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-remote.c"
             line="180">Get the URL from the remote.</doc>
        <source-position filename="ostree-remote.h" line="57"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-remote.c"
               line="186">the remote's URL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="remote" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-remote.c"
                 line="182">an #OstreeRemote</doc>
            <type name="Remote" c:type="OstreeRemote*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="ostree_remote_ref" version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-remote.c"
             line="112">Increase the reference count on the given @remote.</doc>
        <source-position filename="ostree-remote.h" line="49"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-remote.c"
               line="118">a copy of @remote, for convenience</doc>
          <type name="Remote" c:type="OstreeRemote*"/>
        </return-value>
        <parameters>
          <instance-parameter name="remote" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-remote.c"
                 line="114">an #OstreeRemote</doc>
            <type name="Remote" c:type="OstreeRemote*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="ostree_remote_unref" version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-remote.c"
             line="131">Decrease the reference count on the given @remote and free it if the
reference count reaches 0.</doc>
        <source-position filename="ostree-remote.h" line="51"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="remote" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-remote.c"
                 line="133">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">
        <source-position filename="ostree-repo.h" line="48"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="1348">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"
                 filename="ostree-repo.c"
                 line="1346">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"
             filename="ostree-repo.c"
             line="1415">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>
        <source-position filename="ostree-repo.h" line="54"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="1424">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"
             filename="ostree-repo.c"
             line="1399">Creates a new #OstreeRepo instance, taking the system root path explicitly
instead of assuming "/".</doc>
        <source-position filename="ostree-repo.h" line="51"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="1407">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"
                 filename="ostree-repo.c"
                 line="1401">Path to a repository</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="sysroot_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1402">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"
                version="2017.10"
                throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="2777">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>
        <source-position filename="ostree-repo.h" line="83"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="2799">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"
                 filename="ostree-repo.c"
                 line="2779">Directory fd</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2780">Path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2781">The mode to store the repository in</doc>
            <type name="RepoMode" c:type="OstreeRepoMode"/>
          </parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2782">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"
                 filename="ostree-repo.c"
                 line="2783">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">
        <source-position filename="ostree-repo.h" line="42"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2611">a repo mode as a string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_mode"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2612">the corresponding #OstreeRepoMode</doc>
            <type name="RepoMode" c:type="OstreeRepoMode*"/>
          </parameter>
        </parameters>
      </function>
      <function name="open_at"
                c:identifier="ostree_repo_open_at"
                version="2017.10"
                throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="1367">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>
        <source-position filename="ostree-repo.h" line="60"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="1376">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"
                 filename="ostree-repo.c"
                 line="1369">Directory fd</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1370">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"
             filename="ostree-repo.c"
             line="4988">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>
        <source-position filename="ostree-repo.h" line="1171"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="progress" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4990">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"
                 filename="ostree-repo.c"
                 line="4991">User data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="traverse_new_parents"
                c:identifier="ostree_repo_traverse_new_parents"
                version="2018.5">
        <doc xml:space="preserve"
             filename="ostree-repo-traverse.c"
             line="277">This hash table is a mapping from #GVariant which can be accessed
via ostree_object_name_deserialize() to a #GVariant containing either
a similar #GVariant or and array of them, listing the parents of the key.</doc>
        <source-position filename="ostree-repo.h" line="966"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="ostree-repo-traverse.c"
               line="284">A new hash table</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="GLib.Variant"/>
            <type name="GLib.Variant"/>
          </type>
        </return-value>
      </function>
      <function name="traverse_new_reachable"
                c:identifier="ostree_repo_traverse_new_reachable">
        <doc xml:space="preserve"
             filename="ostree-repo-traverse.c"
             line="262">This hash table is a set of #GVariant which can be accessed via
ostree_object_name_deserialize().</doc>
        <source-position filename="ostree-repo.h" line="963"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="ostree-repo-traverse.c"
               line="268">A new hash table</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="GLib.Variant"/>
            <type name="GLib.Variant"/>
          </type>
        </return-value>
      </function>
      <function name="traverse_parents_get_commits"
                c:identifier="ostree_repo_traverse_parents_get_commits"
                version="2018.5">
        <doc xml:space="preserve"
             filename="ostree-repo-traverse.c"
             line="328">Gets all the commits that a certain object belongs to, as recorded
by a parents table gotten from ostree_repo_traverse_commit_union_with_parents.</doc>
        <source-position filename="ostree-repo.h" line="969"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-traverse.c"
               line="334">An array of checksums for
the commits the key belongs to.</doc>
          <array c:type="char**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="parents" transfer-ownership="none">
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="gpointer" c:type="gpointer"/>
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </function>
      <method name="abort_transaction"
              c:identifier="ostree_repo_abort_transaction"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2360">Abort the active transaction; any staged objects and ref changes will be
discarded. You *must* invoke this if you have chosen not to invoke
ostree_repo_commit_transaction(). Calling this function when not in a
transaction will do nothing and return successfully.</doc>
        <source-position filename="ostree-repo.h" line="272"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2362">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"
                 filename="ostree-repo-commit.c"
                 line="2363">Cancellable</doc>
            <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"
             filename="ostree-repo.c"
             line="5372">Add a GPG signature to a summary file.</doc>
        <source-position filename="ostree-repo.h" line="1243"/>
        <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"
                 filename="ostree-repo.c"
                 line="5374">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="key_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5375">NULL-terminated array of GPG keys.</doc>
            <array c:type="const gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="homedir"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5376">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"
                 filename="ostree-repo.c"
                 line="5377">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"
             filename="ostree-repo.c"
             line="5131">Append a GPG signature to a commit.</doc>
        <source-position filename="ostree-repo.h" line="1248"/>
        <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"
                 filename="ostree-repo.c"
                 line="5133">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5134">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"
                 filename="ostree-repo.c"
                 line="5135">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"
                 filename="ostree-repo.c"
                 line="5136">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="checkout_at"
              c:identifier="ostree_repo_checkout_at"
              version="2016.8"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-checkout.c"
             line="1555">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>
        <source-position filename="ostree-repo.h" line="842"/>
        <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"
                 filename="ostree-repo-checkout.c"
                 line="1557">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"
                 filename="ostree-repo-checkout.c"
                 line="1558">Options</doc>
            <type name="RepoCheckoutAtOptions"
                  c:type="OstreeRepoCheckoutAtOptions*"/>
          </parameter>
          <parameter name="destination_dfd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1559">Directory FD for destination</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="destination_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1560">Directory for destination</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="commit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1561">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"
                 filename="ostree-repo-checkout.c"
                 line="1562">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="checkout_composefs"
              c:identifier="ostree_repo_checkout_composefs"
              version="2024.7"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-checkout.c"
             line="1276">Create a composefs filesystem metadata blob from an OSTree commit. Supported
options:

 - verity: `u`: 0 = disabled, 1 = set if present on file, 2 = enabled; any other value is a fatal
error</doc>
        <source-position filename="ostree-repo.h" line="847"/>
        <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"
                 filename="ostree-repo-checkout.c"
                 line="1278">A 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"
                 filename="ostree-repo-checkout.c"
                 line="1279">If non-NULL, must be a GVariant of type a{sv}. See below.</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="destination_dfd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1280">Parent directory fd</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="destination_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1281">Filename</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1282">OStree commit digest</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1283">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"
             filename="ostree-repo-checkout.c"
             line="1687">Call this after finishing a succession of checkout operations; it
will delete any currently-unused uncompressed objects from the
cache.</doc>
        <source-position filename="ostree-repo.h" line="852"/>
        <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"
                 filename="ostree-repo-checkout.c"
                 line="1689">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"
                 filename="ostree-repo-checkout.c"
                 line="1690">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"
             filename="ostree-repo-checkout.c"
             line="1479">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>
        <source-position filename="ostree-repo.h" line="756"/>
        <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"
                 filename="ostree-repo-checkout.c"
                 line="1481">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1482">Options controlling all files</doc>
            <type name="RepoCheckoutMode" c:type="OstreeRepoCheckoutMode"/>
          </parameter>
          <parameter name="overwrite_mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1483">Whether or not to overwrite files</doc>
            <type name="RepoCheckoutOverwriteMode"
                  c:type="OstreeRepoCheckoutOverwriteMode"/>
          </parameter>
          <parameter name="destination" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1484">Place tree here</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1485">Source tree</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </parameter>
          <parameter name="source_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1486">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"
                 filename="ostree-repo-checkout.c"
                 line="1487">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"
             filename="ostree-repo-checkout.c"
             line="1514">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>
        <source-position filename="ostree-repo-deprecated.h" line="62"/>
        <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"
                 filename="ostree-repo-checkout.c"
                 line="1516">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"
                 filename="ostree-repo-checkout.c"
                 line="1517">Options</doc>
            <type name="RepoCheckoutOptions"
                  c:type="OstreeRepoCheckoutOptions*"/>
          </parameter>
          <parameter name="destination_dfd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1518">Directory FD for destination</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="destination_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1519">Directory for destination</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="commit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1520">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"
                 filename="ostree-repo-checkout.c"
                 line="1521">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="commit_add_composefs_metadata"
              c:identifier="ostree_repo_commit_add_composefs_metadata"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-composefs.c"
             line="581">Compute the composefs digest for a filesystem tree
and insert it into metadata for a commit object.  The composefs
digest covers the entire filesystem tree and can be verified by
the composefs mount tooling.</doc>
        <source-position filename="ostree-repo.h" line="700"/>
        <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"
                 filename="ostree-repo-composefs.c"
                 line="583">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="format_version" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-composefs.c"
                 line="584">Must be zero</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="dict" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-composefs.c"
                 line="585">A GVariant builder of type a{sv}</doc>
            <type name="GLib.VariantDict" c:type="GVariantDict*"/>
          </parameter>
          <parameter name="repo_root" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-composefs.c"
                 line="586">the target filesystem tree</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-composefs.c"
                 line="587">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"
             filename="ostree-repo-commit.c"
             line="2269">Complete the transaction. Any refs set with
ostree_repo_transaction_set_ref() or
ostree_repo_transaction_set_refspec() will be written out.

Note that if multiple threads are performing writes, all such threads must
have terminated before this function is invoked.

Locking: Releases `shared` lock acquired by `ostree_repo_prepare_transaction()`
Multithreading: This function is *not* MT safe; only one transaction can be
active at a time.</doc>
        <source-position filename="ostree-repo.h" line="268"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2271">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"
                 filename="ostree-repo-commit.c"
                 line="2272">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"
                 filename="ostree-repo-commit.c"
                 line="2274">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy_config" c:identifier="ostree_repo_copy_config">
        <source-position filename="ostree-repo.h" line="119"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="1564">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"
             filename="ostree-repo.c"
             line="2733">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>
        <source-position filename="ostree-repo.h" line="80"/>
        <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"
                 filename="ostree-repo.c"
                 line="2735">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2736">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"
                 filename="ostree-repo.c"
                 line="2737">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"
             filename="ostree-repo.c"
             line="4445">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>
        <source-position filename="ostree-repo.h" line="480"/>
        <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"
                 filename="ostree-repo.c"
                 line="4447">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4448">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="sha256" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4449">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"
                 filename="ostree-repo.c"
                 line="4450">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"
             filename="ostree-repo.c"
             line="3727">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>
        <source-position filename="ostree-repo.h" line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="3736">%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"
                 filename="ostree-repo.c"
                 line="3729">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="b" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="3730">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"
             filename="ostree-repo-libarchive.c"
             line="1282">Import an archive file @archive into the repository, and write its
file structure to @mtree.</doc>
        <source-position filename="ostree-repo.h" line="690"/>
        <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"
                 filename="ostree-repo-libarchive.c"
                 line="1284">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="opts" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-libarchive.c"
                 line="1285">Options controlling conversion</doc>
            <type name="RepoExportArchiveOptions"
                  c:type="OstreeRepoExportArchiveOptions*"/>
          </parameter>
          <parameter name="root" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-libarchive.c"
                 line="1286">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"
                 filename="ostree-repo-libarchive.c"
                 line="1287">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"
                 filename="ostree-repo-libarchive.c"
                 line="1289">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_remotes_async"
              c:identifier="ostree_repo_find_remotes_async"
              version="2018.6"
              glib:finish-func="find_remotes_finish">
        <doc xml:space="preserve"
             filename="ostree-repo-pull.c"
             line="5203">Find reachable remote URIs which claim to provide any of the given named
@refs. This will search for configured remotes (#OstreeRepoFinderConfig),
mounted volumes (#OstreeRepoFinderMount) and (if enabled at compile time)
local network peers (#OstreeRepoFinderAvahi). In order to use a custom
configuration of #OstreeRepoFinder instances, call
ostree_repo_finder_resolve_all_async() on them individually.

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 of @refs, at the lowest
latency.

Each result contains a list of the subset of @refs it claims to provide. It
is possible for a non-empty list of results to be returned, but for some of
@refs to not be listed in any of the results. Callers must check for this.

Pass the results to ostree_repo_pull_from_remotes_async() to pull the given @refs
from those remotes.

The following @options are currently defined:

  * `override-commit-ids` (`as`): Array of specific commit IDs to fetch. The nth
  commit ID applies to the nth ref, so this must be the same length as @refs, if
  provided.
  * `n-network-retries` (`u`): Number of times to retry each download on
  receiving a transient network error, such as a socket timeout; default is
  5, 0 means return errors without retrying. Since: 2018.6

@finders must be a non-empty %NULL-terminated array of the #OstreeRepoFinder
instances to use, or %NULL to use the system default set of finders, which
will typically be all available finders using their default options (but
this is not guaranteed).

GPG verification of commits will be used unconditionally.

This will use the thread-default #GMainContext, but will not iterate it.</doc>
        <source-position filename="ostree-repo.h" line="1140"/>
        <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"
                 filename="ostree-repo-pull.c"
                 line="5205">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="5206">non-empty array of collection–ref pairs to find remotes for</doc>
            <array c:type="const OstreeCollectionRef* const*">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="5207">a GVariant `a{sv}` with an extensible set of flags</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="finders" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="5208">non-empty array of
   #OstreeRepoFinder instances to use, or %NULL to use the system defaults</doc>
            <array c:type="OstreeRepoFinder**">
              <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
            </array>
          </parameter>
          <parameter name="progress"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="5210">an #OstreeAsyncProgress to update with the operation’s
   progress, or %NULL</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="5212">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="6">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="5213">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"
                 filename="ostree-repo-pull.c"
                 line="5214">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_remotes_finish"
              c:identifier="ostree_repo_find_remotes_finish"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-pull.c"
             line="5999">Finish an asynchronous pull operation started with
ostree_repo_find_remotes_async().</doc>
        <source-position filename="ostree-repo.h" line="1145"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-pull.c"
               line="6008">a potentially empty array
   of #OstreeRepoFinderResults, followed by a %NULL terminator element; or
   %NULL on error</doc>
          <array c:type="OstreeRepoFinderResult**">
            <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="6001">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="6002">the asynchronous result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="fsck_object"
              c:identifier="ostree_repo_fsck_object"
              version="2017.15"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="4548">Verify consistency of the object; this performs checks only relevant to the
immediate object itself, such as checksumming. This API call will not itself
traverse metadata objects for example.</doc>
        <source-position filename="ostree-repo.h" line="484"/>
        <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"
                 filename="ostree-repo.c"
                 line="4550">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4551">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="sha256" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4552">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"
                 filename="ostree-repo.c"
                 line="4553">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bootloader"
              c:identifier="ostree_repo_get_bootloader"
              version="2019.2">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="6625">Get the bootloader configured. See the documentation for the
"sysroot.bootloader" config key.</doc>
        <source-position filename="ostree-repo.h" line="96"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="6632">bootloader configuration for the sysroot</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="6627">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_collection_id"
              c:identifier="ostree_repo_get_collection_id"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="6555">Get the collection ID of this repository. See [collection IDs][collection-ids].</doc>
        <source-position filename="ostree-repo.h" line="87"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="6561">collection ID for the repository</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="6557">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_config" c:identifier="ostree_repo_get_config">
        <source-position filename="ostree-repo.h" line="116"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="1549">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_default_repo_finders"
              c:identifier="ostree_repo_get_default_repo_finders"
              version="2018.9">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="6606">Get the set of default repo finders configured. See the documentation for
the "core.default-repo-finders" config key.</doc>
        <source-position filename="ostree-repo.h" line="93"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="6613">
   %NULL-terminated array of strings.</doc>
          <array c:type="const gchar* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="6608">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_dfd"
              c:identifier="ostree_repo_get_dfd"
              version="2016.4">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="3678">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>
        <source-position filename="ostree-repo.h" line="102"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="3687">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"
                 filename="ostree-repo.c"
                 line="3680">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"
             filename="ostree-repo.c"
             line="3629">For more information see ostree_repo_set_disable_fsync().</doc>
        <source-position filename="ostree-repo.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="3635">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"
                 filename="ostree-repo.c"
                 line="3631">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_min_free_space_bytes"
              c:identifier="ostree_repo_get_min_free_space_bytes"
              version="2018.9"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="3760">Determine the number of bytes of free disk space that are reserved according
to the repo config and return that number in @out_reserved_bytes. See the
documentation for the core.min-free-space-size and
core.min-free-space-percent repo config options.</doc>
        <source-position filename="ostree-repo.h" line="113"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="3771">%TRUE on success, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="3762">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="out_reserved_bytes"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="3763">Location to store the result</doc>
            <type name="guint64" c:type="guint64*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_mode" c:identifier="ostree_repo_get_mode">
        <source-position filename="ostree-repo.h" line="110"/>
        <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"
             filename="ostree-repo.c"
             line="3787">Before this function can be used, ostree_repo_init() must have been
called.</doc>
        <source-position filename="ostree-repo.h" line="191"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="3794">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"
                 filename="ostree-repo.c"
                 line="3789">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_path"
              c:identifier="ostree_repo_get_path"
              glib:get-property="path">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="3656">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>
        <source-position filename="ostree-repo.h" line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="3664">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"
                 filename="ostree-repo.c"
                 line="3658">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"
              version="2016.5"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="1068">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>
        <source-position filename="ostree-repo.h" line="175"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="1083">%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"
                 filename="ostree-repo.c"
                 line="1070">A OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1071">Name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="option_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1072">Option</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1073">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"
                 filename="ostree-repo.c"
                 line="1074">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"
              version="2016.5"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="999">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>
        <source-position filename="ostree-repo.h" line="170"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="1015">%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"
                 filename="ostree-repo.c"
                 line="1001">A OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1002">Name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="option_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1003">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"
                 filename="ostree-repo.c"
                 line="1004">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"
              version="2016.5"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="931">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>
        <source-position filename="ostree-repo.h" line="165"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="945">%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"
                 filename="ostree-repo.c"
                 line="933">A OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="934">Name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="option_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="935">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"
                 filename="ostree-repo.c"
                 line="936">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"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="937">Return location for value</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="gpg_sign_data"
              c:identifier="ostree_repo_gpg_sign_data"
              version="2020.8"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="5394">Sign the given @data with the specified keys in @key_id. Similar to
ostree_repo_add_gpg_signature_summary() but can be used on any
data.

You can use ostree_repo_gpg_verify_data() to verify the signatures.</doc>
        <source-position filename="ostree-repo.h" line="1253"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="5411">%TRUE if @data has been signed successfully,
%FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5396">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5397">Data as a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="old_signatures"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5398">Existing signatures to append to (or %NULL)</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="key_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5399">NULL-terminated array of GPG keys.</doc>
            <array c:type="const gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="homedir"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5400">GPG home directory, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_signatures"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5401">in case of success will contain signature</doc>
            <type name="GLib.Bytes" c:type="GBytes**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5402">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="gpg_verify_data"
              c:identifier="ostree_repo_gpg_verify_data"
              version="2016.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="5748">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>
        <source-position filename="ostree-repo.h" line="1272"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="5765">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"
                 filename="ostree-repo.c"
                 line="5750">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"
                 filename="ostree-repo.c"
                 line="5751">Name of remote</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5752">Data as a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signatures" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5753">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"
                 filename="ostree-repo.c"
                 line="5754">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"
                 filename="ostree-repo.c"
                 line="5755">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"
                 filename="ostree-repo.c"
                 line="5756">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"
             filename="ostree-repo.c"
             line="4407">Set @out_have_object to %TRUE if @self contains the given object;
%FALSE otherwise.</doc>
        <source-position filename="ostree-repo.h" line="312"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="4419">%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"
                 filename="ostree-repo.c"
                 line="4409">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4410">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4411">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"
                 filename="ostree-repo.c"
                 line="4412">%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"
                 filename="ostree-repo.c"
                 line="4413">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"
             filename="ostree-repo.c"
             line="3697">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>
        <source-position filename="ostree-repo.h" line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="3708">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"
                 filename="ostree-repo.c"
                 line="3699">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"
             filename="ostree-repo-libarchive.c"
             line="863">Import an archive file @archive into the repository, and write its
file structure to @mtree.</doc>
        <source-position filename="ostree-repo.h" line="660"/>
        <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"
                 filename="ostree-repo-libarchive.c"
                 line="865">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="opts" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-libarchive.c"
                 line="866">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"
                 filename="ostree-repo-libarchive.c"
                 line="867">Really this is "struct archive*"</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="mtree" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-libarchive.c"
                 line="868">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"
                 filename="ostree-repo-libarchive.c"
                 line="869">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"
                 filename="ostree-repo-libarchive.c"
                 line="870">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"
             filename="ostree-repo.c"
             line="4572">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>
        <source-position filename="ostree-repo.h" line="470"/>
        <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"
                 filename="ostree-repo.c"
                 line="4574">Destination repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4575">Source repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4576">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4577">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"
                 filename="ostree-repo.c"
                 line="4578">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"
              version="2016.5"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="4596">Copy object named by @objtype and @checksum into @self from the
source repository @source. If @trusted is %TRUE and 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>
        <source-position filename="ostree-repo.h" line="474"/>
        <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"
                 filename="ostree-repo.c"
                 line="4598">Destination repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4599">Source repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4600">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4601">checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="trusted" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4602">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"
                 filename="ostree-repo.c"
                 line="4603">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_system" c:identifier="ostree_repo_is_system">
        <source-position filename="ostree-repo.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="1452">%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"
                 filename="ostree-repo.c"
                 line="1450">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"
             filename="ostree-repo.c"
             line="1482">Returns whether the repository is writable by the current user.
If the repository is not writable, the @error indicates why.</doc>
        <source-position filename="ostree-repo.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="1490">%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"
                 filename="ostree-repo.c"
                 line="1484">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_collection_refs"
              c:identifier="ostree_repo_list_collection_refs"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-refs.c"
             line="1163">List all local, mirrored, and remote refs, mapping them to the commit
checksums they currently point to in @out_all_refs. If @match_collection_id
is specified, the results will be limited to those with an equal collection
ID.

#OstreeCollectionRefs are guaranteed to be returned with their collection ID
set to a non-%NULL value; so no refs from `refs/heads` will be listed if no
collection ID is configured for the repository
(ostree_repo_get_collection_id()).

If you want to exclude refs from `refs/remotes`, use
%OSTREE_REPO_LIST_REFS_EXT_EXCLUDE_REMOTES in @flags. Similarly use
%OSTREE_REPO_LIST_REFS_EXT_EXCLUDE_MIRRORS to exclude refs from
`refs/mirrors`.</doc>
        <source-position filename="ostree-repo.h" line="1165"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-refs.c"
               line="1188">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="1165">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="match_collection_id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="1166">If non-%NULL, only list refs from this collection</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_all_refs"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="container">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="1167">
   Mapping from collection–ref to checksum</doc>
            <type name="GLib.HashTable" c:type="GHashTable**">
              <type name="CollectionRef"/>
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="1169">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"
                 filename="ostree-repo-refs.c"
                 line="1170">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </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"
             filename="ostree-repo.c"
             line="4806">This function synchronously enumerates all commit objects starting
with @start, returning data in @out_commits.

To list all commit objects, provide the empty string `""` for @start.</doc>
        <source-position filename="ostree-repo.h" line="887"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="4820">%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"
                 filename="ostree-repo.c"
                 line="4808">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4809">List commits starting with this checksum (empty string for all)</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"
                 filename="ostree-repo.c"
                 line="4810">
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"
                 filename="ostree-repo.c"
                 line="4812">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"
             filename="ostree-repo.c"
             line="4777">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>
        <source-position filename="ostree-repo.h" line="882"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="4791">%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"
                 filename="ostree-repo.c"
                 line="4779">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4780">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"
                 filename="ostree-repo.c"
                 line="4781">
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"
                 filename="ostree-repo.c"
                 line="4783">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"
             filename="ostree-repo-refs.c"
             line="757">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.

@out_all_refs will be returned as a mapping from refspecs (including the
remote name) to checksums. If @refspec_prefix is non-%NULL, it will be
removed as a prefix from the hash table keys.</doc>
        <source-position filename="ostree-repo.h" line="406"/>
        <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"
                 filename="ostree-repo-refs.c"
                 line="759">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"
                 filename="ostree-repo-refs.c"
                 line="760">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="container">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="761">
   Mapping from refspec 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"
                 filename="ostree-repo-refs.c"
                 line="763">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_refs_ext"
              c:identifier="ostree_repo_list_refs_ext"
              version="2016.4"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-refs.c"
             line="782">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.

@out_all_refs will be returned as a mapping from refspecs (including the
remote name) to checksums. Differently from ostree_repo_list_refs(), the
@refspec_prefix will not be removed from the refspecs in the hash table.</doc>
        <source-position filename="ostree-repo.h" line="426"/>
        <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"
                 filename="ostree-repo-refs.c"
                 line="784">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"
                 filename="ostree-repo-refs.c"
                 line="785">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="container">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="786">
   Mapping from refspec 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"
                 filename="ostree-repo-refs.c"
                 line="788">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"
                 filename="ostree-repo-refs.c"
                 line="789">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_static_delta_indexes"
              c:identifier="ostree_repo_list_static_delta_indexes"
              version="2020.8"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-static-delta-core.c"
             line="165">This function synchronously enumerates all static delta indexes in the
repository, returning its result in @out_indexes.</doc>
        <source-position filename="ostree-repo.h" line="896"/>
        <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"
                 filename="ostree-repo-static-delta-core.c"
                 line="167">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="out_indexes"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="container">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="168">String name of delta indexes
(checksum)</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"
                 filename="ostree-repo-static-delta-core.c"
                 line="170">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"
             filename="ostree-repo-static-delta-core.c"
             line="73">This function synchronously enumerates all static deltas in the
repository, returning its result in @out_deltas.</doc>
        <source-position filename="ostree-repo.h" line="892"/>
        <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"
                 filename="ostree-repo-static-delta-core.c"
                 line="75">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"
                 filename="ostree-repo-static-delta-core.c"
                 line="76">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"
                 filename="ostree-repo-static-delta-core.c"
                 line="78">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"
             filename="ostree-repo.c"
             line="4702">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>
        <source-position filename="ostree-repo.h" line="450"/>
        <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"
                 filename="ostree-repo.c"
                 line="4704">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4705">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"
                 filename="ostree-repo.c"
                 line="4706">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"
                 filename="ostree-repo.c"
                 line="4707">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"
             filename="ostree-repo.c"
             line="4263">Load content object, decomposing it into three parts: the actual
content (for regular files), the metadata, and extended attributes.</doc>
        <source-position filename="ostree-repo.h" line="454"/>
        <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"
                 filename="ostree-repo.c"
                 line="4265">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4266">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"
                 filename="ostree-repo.c"
                 line="4267">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"
                 filename="ostree-repo.c"
                 line="4268">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"
                 filename="ostree-repo.c"
                 line="4269">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"
                 filename="ostree-repo.c"
                 line="4270">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"
             filename="ostree-repo.c"
             line="4318">Load object as a stream; useful when copying objects between
repositories.</doc>
        <source-position filename="ostree-repo.h" line="459"/>
        <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"
                 filename="ostree-repo.c"
                 line="4320">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4321">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4322">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"
                 filename="ostree-repo.c"
                 line="4323">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"
                 filename="ostree-repo.c"
                 line="4324">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"
                 filename="ostree-repo.c"
                 line="4325">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"
             filename="ostree-repo.c"
             line="4683">Load the metadata object @sha256 of type @objtype, storing the
result in @out_variant.</doc>
        <source-position filename="ostree-repo.h" line="441"/>
        <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"
                 filename="ostree-repo.c"
                 line="4685">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4686">Expected object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="sha256" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4687">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"
                 filename="ostree-repo.c"
                 line="4688">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"
             filename="ostree-repo.c"
             line="4662">Attempt to load the metadata object @sha256 of type @objtype if it
exists, storing the result in @out_variant.  If it doesn't exist,
@out_variant will be set to %NULL and the function will still
return TRUE.</doc>
        <source-position filename="ostree-repo.h" line="445"/>
        <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"
                 filename="ostree-repo.c"
                 line="4664">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4665">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="sha256" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4666">ASCII checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_variant"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4667">Metadata</doc>
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
        </parameters>
      </method>
      <method name="lock_pop"
              c:identifier="ostree_repo_lock_pop"
              version="2021.3"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="530">Release a lock of type @lock_type from the lock state. If the lock state
becomes empty, the repository is unlocked. Otherwise, the lock state only
changes when transitioning from an exclusive lock back to a shared lock. The
requested @lock_type must be the same type that was requested in the call to
ostree_repo_lock_push(). It is a programmer error if these do not match and
the program may abort if the lock would reach an invalid state.

ostree_repo_lock_pop() waits for the lock depending on the repository's
lock-timeout-secs configuration. When lock-timeout-secs is -1, a blocking lock is
attempted. Otherwise, the lock is removed non-blocking and
ostree_repo_lock_pop() will sleep synchronously up to lock-timeout-secs seconds
attempting to remove the lock. If the lock cannot be removed within the
timeout, a %G_IO_ERROR_WOULD_BLOCK error is returned.

If @self is not writable by the user, then no unlocking is attempted and
%TRUE is returned.</doc>
        <source-position filename="ostree-repo.h" line="1337"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="554">%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"
                 filename="ostree-repo.c"
                 line="532">a #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="lock_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="533">the type of lock to release</doc>
            <type name="RepoLockType" c:type="OstreeRepoLockType"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="534">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lock_push"
              c:identifier="ostree_repo_lock_push"
              version="2021.3"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="440">Takes a lock on the repository and adds it to the lock state. If @lock_type
is %OSTREE_REPO_LOCK_SHARED, a shared lock is taken. If @lock_type is
%OSTREE_REPO_LOCK_EXCLUSIVE, an exclusive lock is taken. The actual lock
state is only changed when locking a previously unlocked repository or
upgrading the lock from shared to exclusive. If the requested lock type is
unchanged or would represent a downgrade (exclusive to shared), the lock
state is not changed.

ostree_repo_lock_push() waits for the lock depending on the repository's
lock-timeout-secs configuration. When lock-timeout-secs is -1, a blocking lock is
attempted. Otherwise, the lock is taken non-blocking and
ostree_repo_lock_push() will sleep synchronously up to lock-timeout-secs seconds
attempting to acquire the lock. If the lock cannot be acquired within the
timeout, a %G_IO_ERROR_WOULD_BLOCK error is returned.

If @self is not writable by the user, then no locking is attempted and
%TRUE is returned.</doc>
        <source-position filename="ostree-repo.h" line="1334"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="465">%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"
                 filename="ostree-repo.c"
                 line="442">a #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="lock_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="443">the type of lock to acquire</doc>
            <type name="RepoLockType" c:type="OstreeRepoLockType"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="444">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="mark_commit_partial"
              c:identifier="ostree_repo_mark_commit_partial"
              version="2017.15"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2054">Commits in the "partial" state do not have all their child objects
written.  This occurs in various situations, such as during a pull,
but also if a "subpath" pull is used, as well as "commit only"
pulls.

This function is used by ostree_repo_pull_with_options(); you
should use this if you are implementing a different type of transport.</doc>
        <source-position filename="ostree-repo.h" line="276"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2056">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2057">Commit SHA-256</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="is_partial" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2058">Whether or not this commit is partial</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="mark_commit_partial_reason"
              c:identifier="ostree_repo_mark_commit_partial_reason"
              version="2019.4"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2006">Allows the setting of a reason code for a partial commit. Presently
it only supports setting reason bitmask to
OSTREE_REPO_COMMIT_STATE_FSCK_PARTIAL, or
OSTREE_REPO_COMMIT_STATE_NORMAL.  This will allow successive ostree
fsck operations to exit properly with an error code if the
repository has been truncated as a result of fsck trying to repair
it.</doc>
        <source-position filename="ostree-repo.h" line="280"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2008">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2009">Commit SHA-256</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="is_partial" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2010">Whether or not this commit is partial</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="in_state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2011">Reason bitmask for partial commit</doc>
            <type name="RepoCommitState" c:type="OstreeRepoCommitState"/>
          </parameter>
        </parameters>
      </method>
      <method name="open" c:identifier="ostree_repo_open" throws="1">
        <source-position filename="ostree-repo.h" line="57"/>
        <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"
             filename="ostree-repo-commit.c"
             line="1643">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 may result in partial commits or data in the target
repository if interrupted during ostree_repo_commit_transaction(), and
further writing refs is also not currently atomic.

There can be at most one transaction active on a repo at a time per instance
of `OstreeRepo`; however, it is safe to have multiple threads writing objects
on a single `OstreeRepo` instance as long as their lifetime is bounded by the
transaction.

Locking: Acquires a `shared` lock; release via commit or abort
Multithreading: This function is *not* MT safe; only one transaction can be
active at a time.</doc>
        <source-position filename="ostree-repo.h" line="264"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="1645">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"
                 filename="ostree-repo-commit.c"
                 line="1646">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"
                 filename="ostree-repo-commit.c"
                 line="1649">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"
             filename="ostree-repo-prune.c"
             line="357">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.

Locking: exclusive</doc>
        <source-position filename="ostree-repo.h" line="1070"/>
        <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"
                 filename="ostree-repo-prune.c"
                 line="359">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-prune.c"
                 line="360">Options controlling prune process</doc>
            <type name="RepoPruneFlags" c:type="OstreeRepoPruneFlags"/>
          </parameter>
          <parameter name="depth" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-prune.c"
                 line="361">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"
                 filename="ostree-repo-prune.c"
                 line="362">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"
                 filename="ostree-repo-prune.c"
                 line="363">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"
                 filename="ostree-repo-prune.c"
                 line="364">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"
                 filename="ostree-repo-prune.c"
                 line="365">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prune_from_reachable"
              c:identifier="ostree_repo_prune_from_reachable"
              version="2017.1"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-prune.c"
             line="456">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.

Locking: exclusive</doc>
        <source-position filename="ostree-repo.h" line="1095"/>
        <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"
                 filename="ostree-repo-prune.c"
                 line="458">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-prune.c"
                 line="459">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"
                 filename="ostree-repo-prune.c"
                 line="460">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"
                 filename="ostree-repo-prune.c"
                 line="461">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"
                 filename="ostree-repo-prune.c"
                 line="462">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"
                 filename="ostree-repo-prune.c"
                 line="463">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"
             filename="ostree-repo-prune.c"
             line="191">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.

Locking: exclusive</doc>
        <source-position filename="ostree-repo.h" line="1066"/>
        <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"
                 filename="ostree-repo-prune.c"
                 line="193">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"
                 filename="ostree-repo-prune.c"
                 line="194">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"
                 filename="ostree-repo-prune.c"
                 line="196">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"
             filename="ostree-repo.c"
             line="4882">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>
        <source-position filename="ostree-repo.h" line="1124"/>
        <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"
                 filename="ostree-repo.c"
                 line="4884">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4885">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"
                 filename="ostree-repo.c"
                 line="4886">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"
                 filename="ostree-repo.c"
                 line="4888">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"
                 filename="ostree-repo.c"
                 line="4889">Progress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4890">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="pull_from_remotes_async"
              c:identifier="ostree_repo_pull_from_remotes_async"
              version="2018.6"
              glib:finish-func="pull_from_remotes_finish">
        <doc xml:space="preserve"
             filename="ostree-repo-pull.c"
             line="6043">Pull refs from multiple remotes which have been found using
ostree_repo_find_remotes_async().

@results are expected to be in priority order, with the best remotes to pull
from listed first. ostree_repo_pull_from_remotes_async() will generally pull
from the remotes in order, but may parallelise its downloads.

If an error is encountered when pulling from a given remote, that remote will
be ignored and another will be tried instead. If any refs have not been
downloaded successfully after all remotes have been tried, %G_IO_ERROR_FAILED
will be returned. The results of any successful downloads will remain cached
in the local repository.

If @cancellable is cancelled, %G_IO_ERROR_CANCELLED will be returned
immediately. The results of any successfully completed downloads at that
point will remain cached in the local repository.

GPG verification of commits will be used unconditionally.

The following @options are currently defined:

  * `flags` (`i`): #OstreeRepoPullFlags to apply to the pull operation
  * `inherit-transaction` (`b`): %TRUE to inherit an ongoing transaction on
    the #OstreeRepo, rather than encapsulating the pull in a new one
  * `depth` (`i`): How far in the history to traverse; default is 0, -1 means infinite
  * `disable-static-deltas` (`b`): Do not use static deltas
  * `http-headers` (`a(ss)`): Additional headers to add to all HTTP requests
  * `subdirs` (`as`): Pull just these subdirectories
  * `update-frequency` (`u`): Frequency to call the async progress callback in
    milliseconds, if any; only values higher than 0 are valid
  * `append-user-agent` (`s`): Additional string to append to the user agent
  * `n-network-retries` (`u`): Number of times to retry each download on receiving
    a transient network error, such as a socket timeout; default is 5, 0
    means return errors without retrying. Since: 2018.6
  * `ref-keyring-map` (`a(sss)`): Array of (collection ID, ref name, keyring
    remote name) tuples specifying which remote's keyring should be used when
    doing GPG verification of each collection-ref. This is useful to prevent a
    remote from serving malicious updates to refs which did not originate from
    it. This can be a subset or superset of the refs being pulled; any ref
    not being pulled will be ignored and any ref without a keyring remote
    will be verified with the keyring of the remote being pulled from.
    Since: 2019.2</doc>
        <source-position filename="ostree-repo.h" line="1149"/>
        <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"
                 filename="ostree-repo-pull.c"
                 line="6045">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="results" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="6046">%NULL-terminated array of remotes to
   pull from, including the refs to pull from each</doc>
            <array c:type="const OstreeRepoFinderResult* const*">
              <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
            </array>
          </parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="6048">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"
                 filename="ostree-repo-pull.c"
                 line="6049">an #OstreeAsyncProgress to update with the operation’s
   progress, or %NULL</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="6051">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"
                 filename="ostree-repo-pull.c"
                 line="6052">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"
                 filename="ostree-repo-pull.c"
                 line="6053">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="pull_from_remotes_finish"
              c:identifier="ostree_repo_pull_from_remotes_finish"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-pull.c"
             line="6294">Finish an asynchronous pull operation started with
ostree_repo_pull_from_remotes_async().</doc>
        <source-position filename="ostree-repo.h" line="1155"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-pull.c"
               line="6303">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="6296">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="6297">the asynchronous result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="pull_one_dir"
              c:identifier="ostree_repo_pull_one_dir"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="4919">This is similar to ostree_repo_pull(), but only fetches a single
subpath.</doc>
        <source-position filename="ostree-repo.h" line="1129"/>
        <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"
                 filename="ostree-repo.c"
                 line="4921">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4922">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="dir_to_pull" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4923">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"
                 filename="ostree-repo.c"
                 line="4924">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"
                 filename="ostree-repo.c"
                 line="4926">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"
                 filename="ostree-repo.c"
                 line="4927">Progress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4928">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"
             filename="ostree-repo-pull.c"
             line="3427">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
  * `disable-sign-verify` (`b`): Disable signapi verification of commits
  * `disable-sign-verify-summary` (`b`): Disable signapi verification of the summary
  * `depth` (`i`): How far in the history to traverse; default is 0, -1 means infinite
  * `per-object-fsync` (`b`): Perform disk writes more slowly, avoiding a single large I/O sync
  * `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
  * `timestamp-check-from-rev` (`s`): Verify that all fetched commit timestamps are newer than
timestamp of given rev; Since: 2020.4
  * `max-metadata-size` (`t`): Restrict metadata objects to a maximum number of bytes; 0 to
disable.  Since: 2018.9
  * `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
  * `append-user-agent` (`s`): Additional string to append to the user agent
  * `n-network-retries` (`u`): Number of times to retry each download on receiving
    a transient network error, such as a socket timeout; default is 5, 0
    means return errors without retrying. Since: 2018.6
  * `low-speed-limit-bytes` (`u`): The average transfer speed per second of a transfer
     during the time set via "low-speed-time-seconds" for libcurl to abort.
  * `low-speed-time-seconds` (`u`): The time in number seconds that the transfer
     speed should be below the "low-speed-limit-bytes" setting for libcurl to abort.
  * `retry-all-network-errors` (`b`): Retry when network issues happen, instead of
     failing automatically. Currently only affects libcurl. (Default set to true)
  * `max-outstanding-fetcher-requests` (`u`): The max amount of concurrent connections allowed.
  * `ref-keyring-map` (`a(sss)`): Array of (collection ID, ref name, keyring
    remote name) tuples specifying which remote's keyring should be used when
    doing GPG verification of each collection-ref. This is useful to prevent a
    remote from serving malicious updates to refs which did not originate from
    it. This can be a subset or superset of the refs being pulled; any ref
    not being pulled will be ignored and any ref without a keyring remote
    will be verified with the keyring of the remote being pulled from.
    Since: 2019.2
  * `summary-bytes` (`ay'): Contents of the `summary` file to use. If this is
    specified, `summary-sig-bytes` must also be specified. This is
    useful if doing multiple pull operations in a transaction, using
    ostree_repo_remote_fetch_summary_with_options() beforehand to download
    the `summary` and `summary.sig` once for the entire transaction. If not
    specified, the `summary` will be downloaded from the remote. Since: 2020.5
  * `summary-sig-bytes` (`ay`): Contents of the `summary.sig` file. If this
    is specified, `summary-bytes` must also be specified. Since: 2020.5
  * `disable-verify-bindings` (`b`): Disable verification of commit bindings.
    Since: 2020.9</doc>
        <source-position filename="ostree-repo.h" line="1135"/>
        <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"
                 filename="ostree-repo-pull.c"
                 line="3429">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name_or_baseurl" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="3430">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"
                 filename="ostree-repo-pull.c"
                 line="3431">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"
                 filename="ostree-repo-pull.c"
                 line="3432">Progress</doc>
            <type name="AsyncProgress" c:type="OstreeAsyncProgress*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="3433">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"
             filename="ostree-repo.c"
             line="4626">Return the size in bytes of object with checksum @sha256, after any
compression has been applied.</doc>
        <source-position filename="ostree-repo.h" line="465"/>
        <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"
                 filename="ostree-repo.c"
                 line="4628">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4629">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="sha256" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4630">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"
                 filename="ostree-repo.c"
                 line="4631">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"
                 filename="ostree-repo.c"
                 line="4632">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"
             filename="ostree-repo.c"
             line="4850">Load the content for @rev into @out_root.</doc>
        <source-position filename="ostree-repo.h" line="855"/>
        <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"
                 filename="ostree-repo.c"
                 line="4852">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4853">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"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4854">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"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="4855">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"
                 filename="ostree-repo.c"
                 line="4856">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"
             filename="ostree-repo-commit.c"
             line="3052">OSTree commits can have arbitrary metadata associated; this
function retrieves them.  If none exists, @out_metadata will be set
to %NULL.</doc>
        <source-position filename="ostree-repo.h" line="717"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="3054">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="3055">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"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="3056">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"
                 filename="ostree-repo-commit.c"
                 line="3058">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="regenerate_metadata"
              c:identifier="ostree_repo_regenerate_metadata"
              version="2023.1"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="6302">Regenerate the OSTree repository metadata used by clients to describe
available branches and other metadata.

The repository metadata currently consists of the `summary` file. See
ostree_repo_regenerate_summary() and %OSTREE_SUMMARY_GVARIANT_FORMAT for
additional details on its contents.

Additionally, if the `core/collection-id` key is set in the configuration, a
%OSTREE_REPO_METADATA_REF commit will be created.

The following @options are currently defined:

  * `gpg-key-ids` (`as`): Array of GPG key IDs to sign the metadata with.
  * `gpg-homedir` (`s`): GPG home directory.
  * `sign-keys` (`av`): Array of keys to sign the metadata with. The key
  type is specific to the sign engine used.
  * `sign-type` (`s`): Sign engine type to use. If not specified,
  %OSTREE_SIGN_NAME_ED25519 is used.

Locking: shared</doc>
        <source-position filename="ostree-repo.h" line="1314"/>
        <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"
                 filename="ostree-repo.c"
                 line="6304">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"
                 filename="ostree-repo.c"
                 line="6305">A GVariant `a{sv}`, or %NULL</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="6306">A GVariant `a{sv}` with an extensible set of flags</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="6307">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"
             filename="ostree-repo.c"
             line="6269">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 any ref is
added, removed, or updated if `core/auto-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 that
have associated collection IDs 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.

Locking: shared (Prior to 2021.7, this was exclusive)</doc>
        <source-position filename="ostree-repo.h" line="1310"/>
        <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"
                 filename="ostree-repo.c"
                 line="6271">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"
                 filename="ostree-repo.c"
                 line="6272">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"
                 filename="ostree-repo.c"
                 line="6273">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="reload_config"
              c:identifier="ostree_repo_reload_config"
              version="2017.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="3428">By default, an #OstreeRepo will cache the remote configuration and its
own repo/config data.  This API can be used to reload it.</doc>
        <source-position filename="ostree-repo.h" line="122"/>
        <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"
                 filename="ostree-repo.c"
                 line="3430">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"
                 filename="ostree-repo.c"
                 line="3431">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"
             filename="ostree-repo.c"
             line="1791">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>
        <source-position filename="ostree-repo.h" line="125"/>
        <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"
                 filename="ostree-repo.c"
                 line="1793">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1794">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="url"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1795">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"
                 filename="ostree-repo.c"
                 line="1796">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"
                 filename="ostree-repo.c"
                 line="1797">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"
             filename="ostree-repo.c"
             line="1962">A combined function handling the equivalent of
ostree_repo_remote_add(), ostree_repo_remote_delete(), with more
options.</doc>
        <source-position filename="ostree-repo.h" line="152"/>
        <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"
                 filename="ostree-repo.c"
                 line="1964">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"
                 filename="ostree-repo.c"
                 line="1965">System root</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="changeop" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1966">Operation to perform</doc>
            <type name="RepoRemoteChange" c:type="OstreeRepoRemoteChange"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1967">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="url"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1968">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"
                 filename="ostree-repo.c"
                 line="1969">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"
                 filename="ostree-repo.c"
                 line="1970">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"
             filename="ostree-repo.c"
             line="1868">Delete the remote named @name.  It is an error if the provided
remote does not exist.</doc>
        <source-position filename="ostree-repo.h" line="129"/>
        <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"
                 filename="ostree-repo.c"
                 line="1870">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1871">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"
                 filename="ostree-repo.c"
                 line="1872">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"
             filename="ostree-repo.c"
             line="2542">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.

This method does not verify the signature of the downloaded summary file.
Use ostree_repo_verify_summary() for that.

Parse the summary data into a #GVariant using g_variant_new_from_bytes()
with #OSTREE_SUMMARY_GVARIANT_FORMAT as the format string.</doc>
        <source-position filename="ostree-repo.h" line="180"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="2567">%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"
                 filename="ostree-repo.c"
                 line="2544">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2545">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"
                 filename="ostree-repo.c"
                 line="2546">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"
                 filename="ostree-repo.c"
                 line="2548">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"
                 filename="ostree-repo.c"
                 line="2550">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"
              version="2016.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-pull.c"
             line="6318">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
- append-user-agent (s): Additional string to append to the user agent
- n-network-retries (u): Number of times to retry each download on receiving
  a transient network error, such as a socket timeout; default is 5, 0
  means return errors without retrying</doc>
        <source-position filename="ostree-repo.h" line="185"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-pull.c"
               line="6339">%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"
                 filename="ostree-repo-pull.c"
                 line="6320">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="6321">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"
                 filename="ostree-repo-pull.c"
                 line="6322">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"
                 filename="ostree-repo-pull.c"
                 line="6323">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"
                 filename="ostree-repo-pull.c"
                 line="6324">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"
                 filename="ostree-repo-pull.c"
                 line="6326">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_get_gpg_keys"
              c:identifier="ostree_repo_remote_get_gpg_keys"
              version="2021.4"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="2432">Enumerate the trusted GPG keys for the remote @name. If @name is
%NULL, the global GPG keys will be returned. The keys will be
returned in the @out_keys #GPtrArray. Each element in the array is a
#GVariant of format %OSTREE_GPG_KEY_GVARIANT_FORMAT. The @key_ids
array can be used to limit which keys are included. If @key_ids is
%NULL, then all keys are included.</doc>
        <source-position filename="ostree-repo.h" line="1232"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="2451">%TRUE if the GPG keys could be enumerated, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2434">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2435">name of the remote or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="key_ids"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2436">
   a %NULL-terminated array of GPG key IDs to include, or %NULL</doc>
            <array c:type="const char* const*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="out_keys"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="container"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2438">
   return location for a #GPtrArray of the remote's trusted GPG keys, or
   %NULL</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray**">
              <type name="GLib.Variant"/>
            </array>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2441">a #GCancellable, or %NULL</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"
             filename="ostree-repo.c"
             line="2107">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>
        <source-position filename="ostree-repo.h" line="1190"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="2118">%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"
                 filename="ostree-repo.c"
                 line="2109">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2110">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"
                 filename="ostree-repo.c"
                 line="2111">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"
             filename="ostree-repo.c"
             line="2139">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>
        <source-position filename="ostree-repo.h" line="1194"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="2150">%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"
                 filename="ostree-repo.c"
                 line="2141">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2142">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"
                 filename="ostree-repo.c"
                 line="2143">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"
             filename="ostree-repo.c"
             line="2067">Return the URL of the remote named @name through @out_url.  It is an
error if the provided remote does not exist.</doc>
        <source-position filename="ostree-repo.h" line="161"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="2077">%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"
                 filename="ostree-repo.c"
                 line="2069">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2070">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"
                 filename="ostree-repo.c"
                 line="2071">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"
             filename="ostree-repo.c"
             line="2160">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>
        <source-position filename="ostree-repo.h" line="1237"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="2180">%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"
                 filename="ostree-repo.c"
                 line="2162">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2163">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"
                 filename="ostree-repo.c"
                 line="2164">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"
                 filename="ostree-repo.c"
                 line="2165">a %NULL-terminated array of
GPG key IDs, or %NULL</doc>
            <array c:type="const char* const*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="out_imported"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="2167">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"
                 filename="ostree-repo.c"
                 line="2169">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"
             filename="ostree-repo.c"
             line="2018">List available remote names in an #OstreeRepo.  Remote names are sorted
alphabetically.  If no remotes are available the function returns %NULL.</doc>
        <source-position filename="ostree-repo.h" line="158"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="2026">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"
                 filename="ostree-repo.c"
                 line="2020">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"
                 filename="ostree-repo.c"
                 line="2021">Number of remotes available</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_list_collection_refs"
              c:identifier="ostree_repo_remote_list_collection_refs"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-refs.c"
             line="917">List refs advertised by @remote_name, including refs which are part of
collections. If the repository at @remote_name has a collection ID set, its
refs will be returned with that collection ID; otherwise, they will be returned
with a %NULL collection ID in each #OstreeCollectionRef key in @out_all_refs.
Any refs for other collections stored in the repository will also be returned.
No filtering is performed.</doc>
        <source-position filename="ostree-repo.h" line="436"/>
        <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"
                 filename="ostree-repo-refs.c"
                 line="919">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="920">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="container">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="921">
   Mapping from collection–ref to checksum</doc>
            <type name="GLib.HashTable" c:type="GHashTable**">
              <type name="CollectionRef"/>
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="923">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_list_refs"
              c:identifier="ostree_repo_remote_list_refs"
              throws="1">
        <source-position filename="ostree-repo.h" line="431"/>
        <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"
                 filename="ostree-repo-refs.c"
                 line="813">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="814">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="container">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="815">
   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"
                 filename="ostree-repo-refs.c"
                 line="817">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="resolve_collection_ref"
              c:identifier="ostree_repo_resolve_collection_ref"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-refs.c"
             line="459">Look up the checksum for the given collection–ref, returning it in @out_rev.
This will search through the mirrors and remote refs.

If @allow_noent is %TRUE and the given @ref cannot be found, %TRUE will be
returned and @out_rev will be set to %NULL. If @allow_noent is %FALSE and
the given @ref cannot be found, a %G_IO_ERROR_NOT_FOUND error will be
returned.

If you want to check only local refs, not remote or mirrored ones, use the
flag %OSTREE_REPO_RESOLVE_REV_EXT_LOCAL_ONLY. This is analogous to using
ostree_repo_resolve_rev_ext() but for collection-refs.</doc>
        <source-position filename="ostree-repo.h" line="400"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-refs.c"
               line="483">%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"
                 filename="ostree-repo-refs.c"
                 line="461">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="462">a collection–ref to resolve</doc>
            <type name="CollectionRef" c:type="const OstreeCollectionRef*"/>
          </parameter>
          <parameter name="allow_noent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="463">%TRUE to not throw an error if @ref doesn’t exist</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="464">options controlling behaviour</doc>
            <type name="RepoResolveRevExtFlags"
                  c:type="OstreeRepoResolveRevExtFlags"/>
          </parameter>
          <parameter name="out_rev"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="465">return location for
   the checksum corresponding to @ref, or %NULL if @allow_noent is %TRUE and
   the @ref could not be found</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="468">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="resolve_keyring_for_collection"
              c:identifier="ostree_repo_resolve_keyring_for_collection"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-pull.c"
             line="1370">Find the GPG keyring for the given @collection_id, using the local
configuration from the given #OstreeRepo. This will search the configured
remotes for ones whose `collection-id` key matches @collection_id, and will
return the first matching remote.

If multiple remotes match and have different keyrings, a debug message will
be emitted, and the first result will be returned. It is expected that the
keyrings should match.

If no match can be found, a %G_IO_ERROR_NOT_FOUND error will be returned.</doc>
        <source-position filename="ostree-repo.h" line="1159"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-pull.c"
               line="1388">#OstreeRemote containing the GPG keyring for
   @collection_id</doc>
          <type name="Remote" c:type="OstreeRemote*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="1372">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="collection_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="1373">the collection ID to look up a keyring for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull.c"
                 line="1374">a #GCancellable, or %NULL</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"
             filename="ostree-repo-refs.c"
             line="412">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>
        <source-position filename="ostree-repo.h" line="380"/>
        <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"
                 filename="ostree-repo-refs.c"
                 line="414">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="refspec" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="415">A refspec</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="allow_noent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="416">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"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="417">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"
              version="2016.7"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-refs.c"
             line="432">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.

The flag %OSTREE_REPO_RESOLVE_REV_EXT_LOCAL_ONLY is implied so
using it has no effect.</doc>
        <source-position filename="ostree-repo.h" line="395"/>
        <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"
                 filename="ostree-repo-refs.c"
                 line="434">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="refspec" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="435">A refspec</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="allow_noent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="436">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"
                 filename="ostree-repo-refs.c"
                 line="437">Options controlling behavior</doc>
            <type name="RepoResolveRevExtFlags"
                  c:type="OstreeRepoResolveRevExtFlags"/>
          </parameter>
          <parameter name="out_rev"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-refs.c"
                 line="438">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"
             filename="ostree-repo-commit.c"
             line="1604">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_repo_write_directory_to_mtree() or similar.  However,
ostree_repo_devino_cache_new() is better as it avoids scanning all objects.

Multithreading: This function is *not* MT safe.</doc>
        <source-position filename="ostree-repo.h" line="261"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="1606">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"
                 filename="ostree-repo-commit.c"
                 line="1607">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"
              version="2017.10"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2217">Like ostree_repo_set_ref_immediate(), but creates an alias.</doc>
        <source-position filename="ostree-repo.h" line="302"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2219">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"
                 filename="ostree-repo-commit.c"
                 line="2220">A remote for the ref</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2221">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"
                 filename="ostree-repo-commit.c"
                 line="2222">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"
                 filename="ostree-repo-commit.c"
                 line="2223">GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cache_dir"
              c:identifier="ostree_repo_set_cache_dir"
              version="2016.5"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="3600">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>
        <source-position filename="ostree-repo.h" line="67"/>
        <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"
                 filename="ostree-repo.c"
                 line="3602">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="dfd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="3603">directory fd</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="3604">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"
                 filename="ostree-repo.c"
                 line="3605">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_collection_id"
              c:identifier="ostree_repo_set_collection_id"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="6572">Set or clear the collection ID of this repository. See [collection IDs][collection-ids].
The update will be made in memory, but must be written out to the repository
configuration on disk using ostree_repo_write_config().</doc>
        <source-position filename="ostree-repo.h" line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="6582">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="6574">an #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="collection_id"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="6575">new collection ID, or %NULL to unset it</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_collection_ref_immediate"
              c:identifier="ostree_repo_set_collection_ref_immediate"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2238">This is like ostree_repo_transaction_set_collection_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>
        <source-position filename="ostree-repo.h" line="307"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-commit.c"
               line="2250">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2240">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2241">The collection–ref to write</doc>
            <type name="CollectionRef" c:type="const OstreeCollectionRef*"/>
          </parameter>
          <parameter name="checksum"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2242">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"
                 filename="ostree-repo-commit.c"
                 line="2243">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"
             filename="ostree-repo.c"
             line="3584">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>
        <source-position filename="ostree-repo.h" line="64"/>
        <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"
                 filename="ostree-repo.c"
                 line="3586">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="disable_fsync" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="3587">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"
             filename="ostree-repo-commit.c"
             line="2194">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.

Multithreading: This function is MT safe.</doc>
        <source-position filename="ostree-repo.h" line="297"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2196">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"
                 filename="ostree-repo-commit.c"
                 line="2197">A remote for the ref</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2198">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"
                 filename="ostree-repo-commit.c"
                 line="2199">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"
                 filename="ostree-repo-commit.c"
                 line="2200">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"
             filename="ostree-repo.c"
             line="5226">Add a GPG signature to a commit.</doc>
        <source-position filename="ostree-repo.h" line="1175"/>
        <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"
                 filename="ostree-repo.c"
                 line="5228">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5229">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"
                 filename="ostree-repo.c"
                 line="5230">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"
                 filename="ostree-repo.c"
                 line="5231">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"
                 filename="ostree-repo.c"
                 line="5232">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"
             filename="ostree-repo.c"
             line="5302">This function is deprecated, sign the summary file instead.
Add a GPG signature to a static delta.</doc>
        <source-position filename="ostree-repo.h" line="1180"/>
        <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"
                 filename="ostree-repo.c"
                 line="5304">Self</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="from_commit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5305">From commit</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="to_commit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5306">To commit</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="key_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5307">key id</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="homedir" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5308">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"
                 filename="ostree-repo.c"
                 line="5309">cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="signature_verify_commit_data"
              c:identifier="ostree_repo_signature_verify_commit_data"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-pull-verify.c"
             line="334">Validate the commit data using the commit metadata which must
contain at least one valid signature.  If GPG and signapi are
both enabled, then both must find at least one valid signature.</doc>
        <source-position filename="ostree-repo.h" line="1304"/>
        <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"
                 filename="ostree-repo-pull-verify.c"
                 line="336">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull-verify.c"
                 line="337">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="commit_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull-verify.c"
                 line="338">Commit object data (GVariant)</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="commit_metadata" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull-verify.c"
                 line="339">Commit metadata (GVariant `a{sv}`), must contain at least one valid signature</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull-verify.c"
                 line="340">Optionally disable GPG or signapi</doc>
            <type name="RepoVerifyFlags" c:type="OstreeRepoVerifyFlags"/>
          </parameter>
          <parameter name="out_results"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-pull-verify.c"
                 line="341">Textual description of results</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="static_delta_execute_offline"
              c:identifier="ostree_repo_static_delta_execute_offline"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-static-delta-core.c"
             line="618">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>
        <source-position filename="ostree-repo.h" line="953"/>
        <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"
                 filename="ostree-repo-static-delta-core.c"
                 line="620">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="dir_or_file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="621">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"
                 filename="ostree-repo-static-delta-core.c"
                 line="622">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"
                 filename="ostree-repo-static-delta-core.c"
                 line="623">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="static_delta_execute_offline_with_signature"
              c:identifier="ostree_repo_static_delta_execute_offline_with_signature"
              version="2020.7"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-static-delta-core.c"
             line="374">Given a directory representing an already-downloaded static delta
on disk, apply it, generating a new commit.
If sign is passed, the static delta signature is verified.
If sign-verify-deltas configuration option is set and static delta is signed,
signature verification will be mandatory before apply the static delta.
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>
        <source-position filename="ostree-repo.h" line="948"/>
        <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"
                 filename="ostree-repo-static-delta-core.c"
                 line="376">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="dir_or_file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="377">Path to a directory containing static delta data, or directly to the superblock</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="sign" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="378">Signature engine used to check superblock</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </parameter>
          <parameter name="skip_validation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="379">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"
                 filename="ostree-repo-static-delta-core.c"
                 line="380">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"
             filename="ostree-repo-static-delta-compilation.c"
             line="1260">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 (hard cap: 512 MiB)
  - 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 (bytestring), and parts in the same
directory.  Default saves to repository.
  - sign-name: ^ay: Signature type to use (bytestring).
  - sign-key-ids: ^as: NULL-terminated array of keys used to sign delta superblock.</doc>
        <source-position filename="ostree-repo.h" line="913"/>
        <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"
                 filename="ostree-repo-static-delta-compilation.c"
                 line="1262">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="opt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-compilation.c"
                 line="1263">High level optimization choice</doc>
            <type name="StaticDeltaGenerateOpt"
                  c:type="OstreeStaticDeltaGenerateOpt"/>
          </parameter>
          <parameter name="from"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-compilation.c"
                 line="1264">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"
                 filename="ostree-repo-static-delta-compilation.c"
                 line="1265">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"
                 filename="ostree-repo-static-delta-compilation.c"
                 line="1266">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"
                 filename="ostree-repo-static-delta-compilation.c"
                 line="1267">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"
                 filename="ostree-repo-static-delta-compilation.c"
                 line="1268">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="static_delta_reindex"
              c:identifier="ostree_repo_static_delta_reindex"
              version="2020.8"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-static-delta-core.c"
             line="1262">The delta index for a particular commit lists all the existing deltas that can be used
when downloading that commit. This operation regenerates these indexes, either for
a particular commit (if @opt_to_commit is non-%NULL), or for all commits that
are reachable by an existing delta (if @opt_to_commit is %NULL).

This is normally called automatically when the summary is updated in
ostree_repo_regenerate_summary().

Locking: shared</doc>
        <source-position filename="ostree-repo.h" line="942"/>
        <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"
                 filename="ostree-repo-static-delta-core.c"
                 line="1264">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="1265">Flags affecting the indexing operation</doc>
            <type name="StaticDeltaIndexFlags"
                  c:type="OstreeStaticDeltaIndexFlags"/>
          </parameter>
          <parameter name="opt_to_commit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="1266">ASCII SHA256 checksum of target commit, or %NULL to index all targets</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="1267">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="static_delta_verify_signature"
              c:identifier="ostree_repo_static_delta_verify_signature"
              version="2020.7"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-static-delta-core.c"
             line="1187">Verify static delta file signature.</doc>
        <source-position filename="ostree-repo.h" line="958"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-static-delta-core.c"
               line="1197">TRUE if the signature of static delta file is valid using the
signature engine provided, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="1189">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="delta_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="1190">delta path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="sign" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="1191">Signature engine used to check superblock</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </parameter>
          <parameter name="out_success_message"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-static-delta-core.c"
                 line="1192">success message</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="transaction_set_collection_ref"
              c:identifier="ostree_repo_transaction_set_collection_ref"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2153">If @checksum is not %NULL, then record it as the target of local ref named
@ref.

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.

Multithreading: Since v2017.15 this function is MT safe.</doc>
        <source-position filename="ostree-repo.h" line="293"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2155">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2156">The collection–ref to write</doc>
            <type name="CollectionRef" c:type="const OstreeCollectionRef*"/>
          </parameter>
          <parameter name="checksum"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2157">The checksum to point it to</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="transaction_set_ref"
              c:identifier="ostree_repo_transaction_set_ref">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2104">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 be written when the transaction is completed with
ostree_repo_commit_transaction(); that function takes care of writing all of
the objects (such as the commit referred to by @checksum) before updating the
refs. If the transaction is instead aborted with
ostree_repo_abort_transaction(), no changes to the ref will be made to the
repository.

Note however that currently writing *multiple* refs is not truly atomic; if
the process or system is terminated during
ostree_repo_commit_transaction(), it is possible that just some of the refs
will have been updated. Your application should take care to handle this
case.

Multithreading: Since v2017.15 this function is MT safe.</doc>
        <source-position filename="ostree-repo.h" line="289"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2106">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"
                 filename="ostree-repo-commit.c"
                 line="2107">A remote for the ref</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2108">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"
                 filename="ostree-repo-commit.c"
                 line="2109">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"
             filename="ostree-repo-commit.c"
             line="2079">Like ostree_repo_transaction_set_ref(), but takes concatenated
@refspec format as input instead of separate remote and name
arguments.

Multithreading: Since v2017.15 this function is MT safe.</doc>
        <source-position filename="ostree-repo.h" line="285"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2081">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="refspec" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2082">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"
                 filename="ostree-repo-commit.c"
                 line="2083">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"
             filename="ostree-repo-traverse.c"
             line="659">Create a new set @out_reachable containing all objects reachable
from @commit_checksum, traversing @maxdepth parent commits.</doc>
        <source-position filename="ostree-repo.h" line="972"/>
        <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"
                 filename="ostree-repo-traverse.c"
                 line="661">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="662">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="maxdepth" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="663">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"
                 filename="ostree-repo-traverse.c"
                 line="664">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"
                 filename="ostree-repo-traverse.c"
                 line="666">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"
             filename="ostree-repo-traverse.c"
             line="638">Update the set @inout_reachable containing all objects reachable
from @commit_checksum, traversing @maxdepth parent commits.</doc>
        <source-position filename="ostree-repo.h" line="977"/>
        <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"
                 filename="ostree-repo-traverse.c"
                 line="640">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="641">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="maxdepth" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="642">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"
                 filename="ostree-repo-traverse.c"
                 line="643">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"
                 filename="ostree-repo-traverse.c"
                 line="644">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="traverse_commit_union_with_parents"
              c:identifier="ostree_repo_traverse_commit_union_with_parents"
              version="2018.5"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-traverse.c"
             line="608">Update the set @inout_reachable containing all objects reachable
from @commit_checksum, traversing @maxdepth parent commits.

Additionally this constructs a mapping from each object to the parents
of the object, which can be used to track which commits an object
belongs to.</doc>
        <source-position filename="ostree-repo.h" line="982"/>
        <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"
                 filename="ostree-repo-traverse.c"
                 line="610">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="611">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="maxdepth" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="612">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"
                 filename="ostree-repo-traverse.c"
                 line="613">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="inout_parents" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="614">Map from object to parent object</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"
                 filename="ostree-repo-traverse.c"
                 line="615">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="traverse_commit_with_flags"
              c:identifier="ostree_repo_traverse_commit_with_flags"
              version="2018.5"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-traverse.c"
             line="513">Update the set @inout_reachable containing all objects reachable
from @commit_checksum, traversing @maxdepth parent commits.

Additionally this constructs a mapping from each object to the parents
of the object, which can be used to track which commits an object
belongs to.</doc>
        <source-position filename="ostree-repo.h" line="989"/>
        <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"
                 filename="ostree-repo-traverse.c"
                 line="515">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="516">change traversal behaviour according to these flags</doc>
            <type name="RepoCommitTraverseFlags"
                  c:type="OstreeRepoCommitTraverseFlags"/>
          </parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="517">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="maxdepth" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="518">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"
                 filename="ostree-repo-traverse.c"
                 line="519">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="inout_parents" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="520">Map from object to parent object</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"
                 filename="ostree-repo-traverse.c"
                 line="521">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="traverse_reachable_refs"
              c:identifier="ostree_repo_traverse_reachable_refs"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-prune.c"
             line="336">Add all commit objects directly reachable via a ref to @reachable.

Locking: shared</doc>
        <source-position filename="ostree-repo.h" line="1091"/>
        <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"
                 filename="ostree-repo-prune.c"
                 line="338">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="depth" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-prune.c"
                 line="339">Depth of traversal</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="reachable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-prune.c"
                 line="340">Set of reachable objects (will be modified)</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"
                 filename="ostree-repo-prune.c"
                 line="341">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"
             filename="ostree-repo.c"
             line="5658">Check for a valid GPG signature on commit named by the ASCII
checksum @commit_checksum.</doc>
        <source-position filename="ostree-repo.h" line="1185"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="5670">%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"
                 filename="ostree-repo.c"
                 line="5660">Repository</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5661">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"
                 filename="ostree-repo.c"
                 line="5662">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"
                 filename="ostree-repo.c"
                 line="5663">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"
                 filename="ostree-repo.c"
                 line="5664">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"
             filename="ostree-repo.c"
             line="5691">Read GPG signature(s) on the commit named by the ASCII checksum
@commit_checksum and return detailed results.</doc>
        <source-position filename="ostree-repo.h" line="1259"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="5703">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"
                 filename="ostree-repo.c"
                 line="5693">Repository</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5694">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"
                 filename="ostree-repo.c"
                 line="5695">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"
                 filename="ostree-repo.c"
                 line="5696">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"
                 filename="ostree-repo.c"
                 line="5697">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"
              version="2016.14"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="5718">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>
        <source-position filename="ostree-repo.h" line="1265"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="5730">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"
                 filename="ostree-repo.c"
                 line="5720">Repository</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5721">ASCII SHA256 checksum</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5722">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"
                 filename="ostree-repo.c"
                 line="5723">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_local_summary"
              c:identifier="ostree_repo_verify_local_summary"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="5825">Verify @signatures for @summary data using GPG keys in the given keyring (GPG
homedir), and return an #OstreeGpgVerifyResult.

This is intended to be used on a server repository, for verifying the
signatures on the summary file it exports. Use ostree_repo_verify_summary()
to verify the summary file from a configured remote in a repository.</doc>
        <source-position filename="ostree-repo.h" line="1283"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="5842">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"
                 filename="ostree-repo.c"
                 line="5827">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="summary" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5828">Summary data as a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signatures" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5829">Summary signatures as a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="keyfiledir" transfer-ownership="none">
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="extra_keyring"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5831">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"
                 filename="ostree-repo.c"
                 line="5832">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"
             filename="ostree-repo.c"
             line="5788">Verify @signatures for @summary data using GPG keys in the keyring for
@remote_name, and return an #OstreeGpgVerifyResult.</doc>
        <source-position filename="ostree-repo.h" line="1278"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo.c"
               line="5800">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"
                 filename="ostree-repo.c"
                 line="5790">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="remote_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5791">Name of remote</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="summary" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5792">Summary data as a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signatures" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="5793">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"
                 filename="ostree-repo.c"
                 line="5794">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"
             filename="ostree-repo-libarchive.c"
             line="985">Import an archive file @archive into the repository, and write its
file structure to @mtree.</doc>
        <source-position filename="ostree-repo.h" line="600"/>
        <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"
                 filename="ostree-repo-libarchive.c"
                 line="987">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="archive" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-libarchive.c"
                 line="988">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"
                 filename="ostree-repo-libarchive.c"
                 line="989">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"
                 filename="ostree-repo-libarchive.c"
                 line="990">Optional commit modifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </parameter>
          <parameter name="autocreate_parents" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-libarchive.c"
                 line="991">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"
                 filename="ostree-repo-libarchive.c"
                 line="992">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_archive_to_mtree_from_fd"
              c:identifier="ostree_repo_write_archive_to_mtree_from_fd"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-libarchive.c"
             line="1017">Read an archive from @fd and import it into the repository, writing
its file structure to @mtree.</doc>
        <source-position filename="ostree-repo.h" line="607"/>
        <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"
                 filename="ostree-repo-libarchive.c"
                 line="1019">An #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-libarchive.c"
                 line="1020">A file descriptor to read the archive from</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="mtree" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-libarchive.c"
                 line="1021">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"
                 filename="ostree-repo-libarchive.c"
                 line="1022">Optional commit modifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </parameter>
          <parameter name="autocreate_parents" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-libarchive.c"
                 line="1023">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"
                 filename="ostree-repo-libarchive.c"
                 line="1024">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"
             filename="ostree-repo-commit.c"
             line="2942">Write a commit metadata object, referencing @root_contents_checksum
and @root_metadata_checksum.
This uses the current time as the commit timestamp, but it can be
overridden with an explicit timestamp via the
[standard](https://reproducible-builds.org/specs/source-date-epoch/)
`SOURCE_DATE_EPOCH` environment flag.</doc>
        <source-position filename="ostree-repo.h" line="705"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2944">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"
                 filename="ostree-repo-commit.c"
                 line="2945">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"
                 filename="ostree-repo-commit.c"
                 line="2946">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"
                 filename="ostree-repo-commit.c"
                 line="2947">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"
                 filename="ostree-repo-commit.c"
                 line="2948">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"
                 filename="ostree-repo-commit.c"
                 line="2949">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"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2950">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"
                 filename="ostree-repo-commit.c"
                 line="2952">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"
             filename="ostree-repo-commit.c"
             line="3098">Replace any existing metadata associated with commit referred to by
@checksum with @metadata.  If @metadata is %NULL, then existing
data will be deleted.</doc>
        <source-position filename="ostree-repo.h" line="722"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="3100">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="3101">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"
                 filename="ostree-repo-commit.c"
                 line="3102">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"
                 filename="ostree-repo-commit.c"
                 line="3104">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"
             filename="ostree-repo-commit.c"
             line="3003">Write a commit metadata object, referencing @root_contents_checksum
and @root_metadata_checksum.</doc>
        <source-position filename="ostree-repo.h" line="710"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="3005">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"
                 filename="ostree-repo-commit.c"
                 line="3006">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"
                 filename="ostree-repo-commit.c"
                 line="3007">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"
                 filename="ostree-repo-commit.c"
                 line="3008">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"
                 filename="ostree-repo-commit.c"
                 line="3009">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"
                 filename="ostree-repo-commit.c"
                 line="3010">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"
                 filename="ostree-repo-commit.c"
                 line="3011">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"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="3012">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"
                 filename="ostree-repo-commit.c"
                 line="3014">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"
             filename="ostree-repo.c"
             line="1584">Save @new_config in place of this repository's config file.

Note: This will not validate many elements of the configuration.
Prefer `ostree_repo_write_config_and_reload`.</doc>
        <source-position filename="ostree-repo.h" line="194"/>
        <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"
                 filename="ostree-repo.c"
                 line="1586">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="new_config" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1587">Overwrite the config file with this data</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_config_and_reload"
              c:identifier="ostree_repo_write_config_and_reload"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="1646">Save @new_config in place of this repository's config file and reload.
The config will be validated.</doc>
        <source-position filename="ostree-repo.h" line="196"/>
        <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"
                 filename="ostree-repo.c"
                 line="1648">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="new_config" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1649">Overwrite the config file with this data, and reload</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_content"
              c:identifier="ostree_repo_write_content"
              throws="1"
              glib:async-func="write_content_async">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2686">Store the content object streamed as @object_input,
with total length @length.  The actual checksum will
be returned as @out_csum.</doc>
        <source-position filename="ostree-repo.h" line="332"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2688">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"
                 filename="ostree-repo-commit.c"
                 line="2689">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"
                 filename="ostree-repo-commit.c"
                 line="2690">Content object stream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2691">Length of @object_input</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="out_csum"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2692">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"
                 filename="ostree-repo-commit.c"
                 line="2693">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_content_async"
              c:identifier="ostree_repo_write_content_async"
              glib:finish-func="write_content_finish"
              glib:sync-func="write_content">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2878">Asynchronously store the content object @object.  If provided, the
checksum @expected_checksum will be verified.</doc>
        <source-position filename="ostree-repo.h" line="370"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2880">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"
                 filename="ostree-repo-commit.c"
                 line="2881">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"
                 filename="ostree-repo-commit.c"
                 line="2882">Input</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2883">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"
                 filename="ostree-repo-commit.c"
                 line="2884">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"
                 filename="ostree-repo-commit.c"
                 line="2885">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"
                 filename="ostree-repo-commit.c"
                 line="2886">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"
             filename="ostree-repo-commit.c"
             line="2912">Completes an invocation of ostree_repo_write_content_async().</doc>
        <source-position filename="ostree-repo.h" line="376"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2914">a #OstreeRepo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2915">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_csum"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2916">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"
             filename="ostree-repo-commit.c"
             line="2663">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>
        <source-position filename="ostree-repo.h" line="365"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2665">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2666">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"
                 filename="ostree-repo-commit.c"
                 line="2667">Content stream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2668">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"
                 filename="ostree-repo-commit.c"
                 line="2669">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"
             filename="ostree-repo-commit.c"
             line="4014">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>
        <source-position filename="ostree-repo.h" line="594"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="4016">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="dfd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="4017">Directory file descriptor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="4018">Path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="mtree" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="4019">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"
                 filename="ostree-repo-commit.c"
                 line="4020">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"
                 filename="ostree-repo-commit.c"
                 line="4021">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"
             filename="ostree-repo-commit.c"
             line="3977">Store objects for @dir and all children into the repository @self,
overlaying the resulting filesystem hierarchy into @mtree.</doc>
        <source-position filename="ostree-repo.h" line="588"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="3979">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="dir" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="3980">Path to a directory</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="mtree" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="3981">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"
                 filename="ostree-repo-commit.c"
                 line="3982">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"
                 filename="ostree-repo-commit.c"
                 line="3983">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_metadata"
              c:identifier="ostree_repo_write_metadata"
              throws="1"
              glib:async-func="write_metadata_async">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2423">Store the metadata object @object.  Return the checksum
as @out_csum.

If @expected_checksum is not %NULL, verify it against the
computed checksum.</doc>
        <source-position filename="ostree-repo.h" line="317"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2425">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2426">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"
                 filename="ostree-repo-commit.c"
                 line="2427">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"
                 filename="ostree-repo-commit.c"
                 line="2428">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"
                 filename="ostree-repo-commit.c"
                 line="2429">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"
                 filename="ostree-repo-commit.c"
                 line="2430">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_metadata_async"
              c:identifier="ostree_repo_write_metadata_async"
              glib:finish-func="write_metadata_finish"
              glib:sync-func="write_metadata">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2581">Asynchronously store the metadata object @variant.  If provided,
the checksum @expected_checksum will be verified.</doc>
        <source-position filename="ostree-repo.h" line="322"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2583">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2584">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"
                 filename="ostree-repo-commit.c"
                 line="2585">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"
                 filename="ostree-repo-commit.c"
                 line="2586">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"
                 filename="ostree-repo-commit.c"
                 line="2587">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"
                 filename="ostree-repo-commit.c"
                 line="2588">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"
                 filename="ostree-repo-commit.c"
                 line="2589">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">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2616">Complete a call to ostree_repo_write_metadata_async().</doc>
        <source-position filename="ostree-repo.h" line="328"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2618">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2619">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"
                 filename="ostree-repo-commit.c"
                 line="2620">Binary checksum value</doc>
            <array zero-terminated="0" c:type="guchar**" fixed-size="32">
              <type name="guint8"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="write_metadata_stream_trusted"
              c:identifier="ostree_repo_write_metadata_stream_trusted"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2491">Store the metadata object @variant; the provided @checksum is
trusted.</doc>
        <source-position filename="ostree-repo.h" line="359"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2493">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2494">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2495">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"
                 filename="ostree-repo-commit.c"
                 line="2496">Metadata object stream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2497">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"
                 filename="ostree-repo-commit.c"
                 line="2498">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"
             filename="ostree-repo-commit.c"
             line="2526">Store the metadata object @variant; the provided @checksum is
trusted.</doc>
        <source-position filename="ostree-repo.h" line="354"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="2528">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="objtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2529">Object type</doc>
            <type name="ObjectType" c:type="OstreeObjectType"/>
          </parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2530">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"
                 filename="ostree-repo-commit.c"
                 line="2531">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"
                 filename="ostree-repo-commit.c"
                 line="2532">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"
             filename="ostree-repo-commit.c"
             line="4062">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>
        <source-position filename="ostree-repo.h" line="696"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="4064">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </instance-parameter>
          <parameter name="mtree" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="4065">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"
                 filename="ostree-repo-commit.c"
                 line="4066">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"
                 filename="ostree-repo-commit.c"
                 line="4067">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_regfile"
              c:identifier="ostree_repo_write_regfile"
              version="2021.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2810">Create an `OstreeContentWriter` that allows streaming output into
the repository.</doc>
        <source-position filename="ostree-repo.h" line="343"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-commit.c"
               line="2824">A new writer, or %NULL on error</doc>
          <type name="ContentWriter" c:type="OstreeContentWriter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2812">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"
                 filename="ostree-repo-commit.c"
                 line="2813">Expected checksum (SHA-256 hex string)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2814">user id</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="gid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2815">group id</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2816">Unix file mode</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="content_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2817">Expected content length</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="xattrs"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2818">Extended attributes (GVariant type `(ayay)`)</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_regfile_inline"
              c:identifier="ostree_repo_write_regfile_inline"
              version="2021.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2737">Synchronously create a file object from the provided content.  This API
is intended for small files where it is reasonable to buffer the entire
content in memory.

Unlike `ostree_repo_write_content()`, if @expected_checksum is provided,
this function will not check for the presence of the object beforehand.</doc>
        <source-position filename="ostree-repo.h" line="337"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-commit.c"
               line="2756">Checksum (as a hex string) of the committed file</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2739">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"
                 filename="ostree-repo-commit.c"
                 line="2740">The expected checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2741">User id</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="gid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2742">Group id</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2743">File mode</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="xattrs"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2744">Extended attributes, GVariant of type (ayay)</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2745">File contents</doc>
            <array length="6" zero-terminated="0" c:type="const guint8*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2746">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_symlink"
              c:identifier="ostree_repo_write_symlink"
              version="2021.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="2775">Synchronously create a symlink object.

Unlike `ostree_repo_write_content()`, if @expected_checksum is provided,
this function will not check for the presence of the object beforehand.</doc>
        <source-position filename="ostree-repo.h" line="349"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-commit.c"
               line="2791">Checksum (as a hex string) of the committed file</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2777">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"
                 filename="ostree-repo-commit.c"
                 line="2778">The expected checksum</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2779">User id</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="gid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2780">Group id</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="xattrs"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2781">Extended attributes, GVariant of type (ayay)</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="symlink_target" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2782">Target of the symbolic link</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="2783">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="path"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_path">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="1238">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"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="ostree-repo.c"
             line="1267">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"
             filename="ostree-repo.c"
             line="1252">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"
             filename="ostree-repo.c"
             line="1282">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"
                 filename="ostree-repo.c"
                 line="1285">checksum of the signed object</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo.c"
                 line="1286">an #OstreeGpgVerifyResult</doc>
            <type name="GpgVerifyResult"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="RepoCheckoutAtOptions" c:type="OstreeRepoCheckoutAtOptions">
      <doc xml:space="preserve"
           filename="ostree-repo.h"
           line="791">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>
      <source-position filename="ostree-repo.h" line="826"/>
      <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="force_copy_zerosized" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="process_passthrough_whiteouts" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="unused_bools" writable="1">
        <array zero-terminated="0" fixed-size="3">
          <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" fixed-size="6">
          <type name="gint" c:type="int"/>
        </array>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" fixed-size="3">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="filter" writable="1">
        <type name="RepoCheckoutFilter" c:type="OstreeRepoCheckoutFilter"/>
      </field>
      <field name="filter_user_data" writable="1">
        <type name="gpointer" c:type="gpointer"/>
      </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>
      <method name="set_devino"
              c:identifier="ostree_repo_checkout_at_options_set_devino"
              version="2017.13">
        <doc xml:space="preserve"
             filename="ostree-repo-checkout.c"
             line="1633">This function simply assigns @cache to the `devino_to_csum_cache` member of
@opts; it's only useful for introspection.

Note that cache does *not* have its refcount incremented - the lifetime of
@cache must be equal to or greater than that of @opts.</doc>
        <source-position filename="ostree-repo.h" line="838"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="opts" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1635">Checkout options</doc>
            <type name="RepoCheckoutAtOptions"
                  c:type="OstreeRepoCheckoutAtOptions*"/>
          </instance-parameter>
          <parameter name="cache"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-checkout.c"
                 line="1636">Devino cache</doc>
            <type name="RepoDevInoCache" c:type="OstreeRepoDevInoCache*"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <callback name="RepoCheckoutFilter"
              c:type="OstreeRepoCheckoutFilter"
              version="2018.2">
      <source-position filename="ostree-repo.h" line="786"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="782">#OstreeRepoCheckoutFilterResult saying whether or not to checkout this file</doc>
        <type name="RepoCheckoutFilterResult"
              c:type="OstreeRepoCheckoutFilterResult"/>
      </return-value>
      <parameters>
        <parameter name="repo" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.h"
               line="777">Repo</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.h"
               line="778">Path to file</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="stbuf"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="ostree-repo.h"
               line="779">File information</doc>
          <type name="gpointer" c:type="stat*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve"
               filename="ostree-repo.h"
               line="780">User data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="RepoCheckoutFilterResult"
                 version="2018.2"
                 c:type="OstreeRepoCheckoutFilterResult">
      <source-position filename="ostree-repo.h" line="773"/>
      <member name="allow"
              value="0"
              c:identifier="OSTREE_REPO_CHECKOUT_FILTER_ALLOW">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="764">Do checkout this object</doc>
      </member>
      <member name="skip"
              value="1"
              c:identifier="OSTREE_REPO_CHECKOUT_FILTER_SKIP">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="765">Ignore this object</doc>
      </member>
    </enumeration>
    <enumeration name="RepoCheckoutMode" c:type="OstreeRepoCheckoutMode">
      <source-position filename="ostree-repo.h" line="735"/>
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_CHECKOUT_MODE_NONE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="728">No special options</doc>
      </member>
      <member name="user"
              value="1"
              c:identifier="OSTREE_REPO_CHECKOUT_MODE_USER">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="729">Ignore uid/gid of files</doc>
      </member>
    </enumeration>
    <record name="RepoCheckoutOptions"
            c:type="OstreeRepoCheckoutOptions"
            introspectable="0">
      <doc xml:space="preserve"
           filename="ostree-repo-deprecated.h"
           line="33">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>
      <source-position filename="ostree-repo-deprecated.h" line="59"/>
      <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" fixed-size="6">
          <type name="guint" c:type="guint"/>
        </array>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="RepoCheckoutOverwriteMode"
                 c:type="OstreeRepoCheckoutOverwriteMode">
      <source-position filename="ostree-repo.h" line="753"/>
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_CHECKOUT_OVERWRITE_NONE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="739">No special options</doc>
      </member>
      <member name="union_files"
              value="1"
              c:identifier="OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_FILES">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="740">When layering checkouts, unlink() and replace
existing files, but do not modify existing directories (unless whiteouts are enabled, then
directories are replaced)</doc>
      </member>
      <member name="add_files"
              value="2"
              c:identifier="OSTREE_REPO_CHECKOUT_OVERWRITE_ADD_FILES">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="743">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"
             filename="ostree-repo.h"
             line="744">Like UNION_FILES, but error if files are not
identical (requires hardlink checkouts)</doc>
      </member>
    </enumeration>
    <callback name="RepoCommitFilter" c:type="OstreeRepoCommitFilter">
      <source-position filename="ostree-repo.h" line="507"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="505">#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"
               filename="ostree-repo.h"
               line="500">Repo</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.h"
               line="501">Path to file</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="file_info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.h"
               line="502">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"
               filename="ostree-repo.h"
               line="503">User data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="RepoCommitFilterResult"
                 c:type="OstreeRepoCommitFilterResult">
      <source-position filename="ostree-repo.h" line="496"/>
      <member name="allow"
              value="0"
              c:identifier="OSTREE_REPO_COMMIT_FILTER_ALLOW">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="489">Do commit this object</doc>
      </member>
      <member name="skip"
              value="1"
              c:identifier="OSTREE_REPO_COMMIT_FILTER_SKIP">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="490">Ignore this object</doc>
      </member>
    </enumeration>
    <enumeration name="RepoCommitIterResult"
                 c:type="OstreeRepoCommitIterResult">
      <source-position filename="ostree-repo.h" line="1024"/>
      <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"
            opaque="1"
            glib:type-name="OstreeRepoCommitModifier"
            glib:get-type="ostree_repo_commit_modifier_get_type"
            c:symbol-prefix="repo_commit_modifier">
      <doc xml:space="preserve"
           filename="ostree-repo.h"
           line="543">A structure allowing control over commits.</doc>
      <source-position filename="ostree-repo.h" line="548"/>
      <constructor name="new" c:identifier="ostree_repo_commit_modifier_new">
        <source-position filename="ostree-repo.h" line="551"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-commit.c"
               line="4147">A new commit modifier.</doc>
          <type name="RepoCommitModifier" c:type="OstreeRepoCommitModifier*"/>
        </return-value>
        <parameters>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="4142">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"
                 filename="ostree-repo-commit.c"
                 line="4143">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"
                 filename="ostree-repo-commit.c"
                 line="4144">User data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy_notify"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="4145">A #GDestroyNotify</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="ref" c:identifier="ostree_repo_commit_modifier_ref">
        <source-position filename="ostree-repo.h" line="583"/>
        <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"
              version="2017.13">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="4266">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>
        <source-position filename="ostree-repo.h" line="579"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="4268">Modifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </instance-parameter>
          <parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="4269">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"
             filename="ostree-repo-commit.c"
             line="4217">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>
        <source-position filename="ostree-repo.h" line="569"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="4219">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"
                 filename="ostree-repo-commit.c"
                 line="4220">Policy to use for labeling</doc>
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sepolicy_from_commit"
              c:identifier="ostree_repo_commit_modifier_set_sepolicy_from_commit"
              version="2020.4"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="4239">In many cases, one wants to create a "derived" commit from base commit.
SELinux policy labels are part of that base commit.  This API allows
one to easily set up SELinux labeling from a base commit.</doc>
        <source-position filename="ostree-repo.h" line="573"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="modifier" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="4241">Commit modifier</doc>
            <type name="RepoCommitModifier"
                  c:type="OstreeRepoCommitModifier*"/>
          </instance-parameter>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="4242">OSTree repo containing @rev</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="rev" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-commit.c"
                 line="4243">Find SELinux policy from this base commit</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>
      </method>
      <method name="set_xattr_callback"
              c:identifier="ostree_repo_commit_modifier_set_xattr_callback">
        <doc xml:space="preserve"
             filename="ostree-repo-commit.c"
             line="4195">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>
        <source-position filename="ostree-repo.h" line="564"/>
        <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"
                 filename="ostree-repo-commit.c"
                 line="4197">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"
                 filename="ostree-repo-commit.c"
                 line="4198">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"
                 filename="ostree-repo-commit.c"
                 line="4199">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"
                 filename="ostree-repo-commit.c"
                 line="4200">Data for @callback:</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="ostree_repo_commit_modifier_unref">
        <source-position filename="ostree-repo.h" line="585"/>
        <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">
      <doc xml:space="preserve"
           filename="ostree-repo.h"
           line="511">Flags modifying commit behavior. In bare-user-only mode,
@OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS and
@OSTREE_REPO_COMMIT_MODIFIER_FLAGS_SKIP_XATTRS are automatically enabled.</doc>
      <source-position filename="ostree-repo.h" line="541"/>
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="513">No special flags</doc>
      </member>
      <member name="skip_xattrs"
              value="1"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_SKIP_XATTRS">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="514">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"
             filename="ostree-repo.h"
             line="515">Generate size information.</doc>
      </member>
      <member name="canonical_permissions"
              value="4"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CANONICAL_PERMISSIONS">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="516">Canonicalize permissions.</doc>
      </member>
      <member name="error_on_unlabeled"
              value="8"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_ERROR_ON_UNLABELED">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="517">Emit an error if configured SELinux
policy does not provide a label</doc>
      </member>
      <member name="consume"
              value="16"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_CONSUME">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="519">Delete added files/directories after commit; Since:
2017.13</doc>
      </member>
      <member name="devino_canonical"
              value="32"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_DEVINO_CANONICAL">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="521">If a devino cache hit is found, skip
modifier filters (non-directories only); Since: 2017.14</doc>
      </member>
      <member name="selinux_label_v1"
              value="64"
              c:identifier="OSTREE_REPO_COMMIT_MODIFIER_FLAGS_SELINUX_LABEL_V1">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="523">For SELinux and other systems, label
/usr/etc as if it was /etc.</doc>
      </member>
    </bitfield>
    <callback name="RepoCommitModifierXattrCallback"
              c:type="OstreeRepoCommitModifierXattrCallback">
      <source-position filename="ostree-repo.h" line="559"/>
      <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"
              version="2015.7"
              c:type="OstreeRepoCommitState">
      <doc xml:space="preserve"
           filename="ostree-repo.h"
           line="199">Flags representing the state of a commit in the local repository, as returned
by ostree_repo_load_commit().</doc>
      <source-position filename="ostree-repo.h" line="218"/>
      <member name="normal"
              value="0"
              c:identifier="OSTREE_REPO_COMMIT_STATE_NORMAL">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="201">Commit is complete. This is the default.
   (Since: 2017.14.)</doc>
      </member>
      <member name="partial"
              value="1"
              c:identifier="OSTREE_REPO_COMMIT_STATE_PARTIAL">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="203">One or more objects are missing from the
   local copy of the commit, but metadata is present. (Since: 2015.7.)</doc>
      </member>
      <member name="fsck_partial"
              value="2"
              c:identifier="OSTREE_REPO_COMMIT_STATE_FSCK_PARTIAL">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="205">One or more objects are missing from the
   local copy of the commit, due to an fsck --delete. (Since: 2019.4.)</doc>
      </member>
    </bitfield>
    <bitfield name="RepoCommitTraverseFlags"
              c:type="OstreeRepoCommitTraverseFlags">
      <source-position filename="ostree-repo.h" line="939"/>
      <member name="none"
              value="1"
              c:identifier="OSTREE_REPO_COMMIT_TRAVERSE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="931">No special options for traverse</doc>
      </member>
      <member name="commit_only"
              value="2"
              c:identifier="OSTREE_REPO_COMMIT_TRAVERSE_FLAG_COMMIT_ONLY">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="932">Traverse and retrieve only commit objects.
(Since: 2022.2)</doc>
      </member>
    </bitfield>
    <record name="RepoCommitTraverseIter"
            c:type="OstreeRepoCommitTraverseIter">
      <source-position filename="ostree-repo.h" line="1002"/>
      <field name="initialized" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="dummy" writable="1">
        <array zero-terminated="0" fixed-size="10">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="dummy_checksum_data" writable="1">
        <array zero-terminated="0" fixed-size="130">
          <type name="gchar" c:type="char"/>
        </array>
      </field>
      <method name="clear"
              c:identifier="ostree_repo_commit_traverse_iter_clear">
        <source-position filename="ostree-repo.h" line="1041"/>
        <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"
             filename="ostree-repo-traverse.c"
             line="220">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>
        <source-position filename="ostree-repo.h" line="1036"/>
        <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"
                 filename="ostree-repo-traverse.c"
                 line="222">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"
                 filename="ostree-repo-traverse.c"
                 line="223">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"
                 filename="ostree-repo-traverse.c"
                 line="224">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"
                 filename="ostree-repo-traverse.c"
                 line="225">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"
             filename="ostree-repo-traverse.c"
             line="201">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>
        <source-position filename="ostree-repo.h" line="1032"/>
        <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"
                 filename="ostree-repo-traverse.c"
                 line="203">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"
                 filename="ostree-repo-traverse.c"
                 line="204">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"
                 filename="ostree-repo-traverse.c"
                 line="205">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"
             filename="ostree-repo-traverse.c"
             line="41">Initialize (in place) an iterator over the root of a commit object.</doc>
        <source-position filename="ostree-repo.h" line="1007"/>
        <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"
                 filename="ostree-repo-traverse.c"
                 line="43">An iter</doc>
            <type name="RepoCommitTraverseIter"
                  c:type="OstreeRepoCommitTraverseIter*"/>
          </instance-parameter>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="44">A repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="commit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="45">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"
                 filename="ostree-repo-traverse.c"
                 line="46">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"
             filename="ostree-repo-traverse.c"
             line="82">Initialize (in place) an iterator over a directory tree.</doc>
        <source-position filename="ostree-repo.h" line="1013"/>
        <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"
                 filename="ostree-repo-traverse.c"
                 line="84">An iter</doc>
            <type name="RepoCommitTraverseIter"
                  c:type="OstreeRepoCommitTraverseIter*"/>
          </instance-parameter>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="85">A repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="dirtree" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-traverse.c"
                 line="86">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"
                 filename="ostree-repo-traverse.c"
                 line="87">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"
             filename="ostree-repo-traverse.c"
             line="108">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>
        <source-position filename="ostree-repo.h" line="1028"/>
        <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"
                 filename="ostree-repo-traverse.c"
                 line="110">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"
                 filename="ostree-repo-traverse.c"
                 line="111">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <function name="cleanup"
                c:identifier="ostree_repo_commit_traverse_iter_cleanup">
        <source-position filename="ostree-repo.h" line="1044"/>
        <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"
            opaque="1"
            glib:type-name="OstreeRepoDevInoCache"
            glib:get-type="ostree_repo_devino_cache_get_type"
            c:symbol-prefix="repo_devino_cache">
      <source-position filename="ostree-types.h" line="33"/>
      <constructor name="new" c:identifier="ostree_repo_devino_cache_new">
        <doc xml:space="preserve"
             filename="ostree-repo-checkout.c"
             line="1668">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>
        <source-position filename="ostree-repo.h" line="831"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-checkout.c"
               line="1679">Newly allocated cache</doc>
          <type name="RepoDevInoCache" c:type="OstreeRepoDevInoCache*"/>
        </return-value>
      </constructor>
      <method name="ref" c:identifier="ostree_repo_devino_cache_ref">
        <source-position filename="ostree-repo.h" line="833"/>
        <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">
        <source-position filename="ostree-repo.h" line="835"/>
        <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"
           filename="ostree-repo.h"
           line="667">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>
      <source-position filename="ostree-repo.h" line="687"/>
      <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" 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" 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">
      <source-position filename="ostree-repo-file.h" line="43"/>
      <implements name="Gio.File"/>
      <method name="ensure_resolved"
              c:identifier="ostree_repo_file_ensure_resolved"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-file.c"
             line="259">Ensure that the backing metadata is loaded.</doc>
        <source-position filename="ostree-repo-file.h" line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-file.c"
               line="266">%FALSE if the operation failed, %TRUE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="261">A repo file</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_checksum" c:identifier="ostree_repo_file_get_checksum">
        <source-position filename="ostree-repo-file.h" line="75"/>
        <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">
        <source-position filename="ostree-repo-file.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-file.c"
               line="392">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">
        <source-position filename="ostree-repo-file.h" line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-file.c"
               line="404">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">
        <source-position filename="ostree-repo-file.h" line="52"/>
        <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"
                 filename="ostree-repo-file.c"
                 line="291">#OstreeRepoFile</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
          <parameter name="out_xattrs"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="292">the 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"
                 filename="ostree-repo-file.c"
                 line="293">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="tree_find_child"
              c:identifier="ostree_repo_file_tree_find_child">
        <source-position filename="ostree-repo-file.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="747">#OstreeRepoFile</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="748">name of the child</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="is_dir"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="out_container"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
        </parameters>
      </method>
      <method name="tree_get_contents"
              c:identifier="ostree_repo_file_tree_get_contents">
        <doc xml:space="preserve"
             filename="ostree-repo-file.c"
             line="317">This API will return %NULL if the file is not "resolved" i.e. in a loaded
state.  It will also return %NULL if this path is not a directory tree.</doc>
        <source-position filename="ostree-repo-file.h" line="70"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-repo-file.c"
               line="324">The GVariant representing the children of this directory.</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="319">A repo file</doc>
            <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">
        <source-position filename="ostree-repo-file.h" line="65"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-repo-file.c"
               line="366">The SHA256 digest of the content object, or %NULL if this is not a
directory.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="364">A repo file</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="tree_get_metadata"
              c:identifier="ostree_repo_file_tree_get_metadata">
        <doc xml:space="preserve"
             filename="ostree-repo-file.c"
             line="332">This API will return %NULL if the file is not "resolved" i.e. in a loaded
state.  It will also return %NULL if this path is not a directory tree.</doc>
        <source-position filename="ostree-repo-file.h" line="72"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-repo-file.c"
               line="339">The GVariant representing the metadata for this directory.</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="334">A repo file</doc>
            <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">
        <source-position filename="ostree-repo-file.h" line="67"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-repo-file.c"
               line="379">The SHA256 digest of the metadata object, or %NULL if this is not a
directory.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="377">A repo file</doc>
            <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">
        <source-position filename="ostree-repo-file.h" line="82"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-file.c"
               line="805">%TRUE on success and the @out_info is set, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="797">#OstreeRepoFile</doc>
            <type name="RepoFile" c:type="OstreeRepoFile*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="798">the child number</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="attributes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="799">an attribute string to match, see g_file_attribute_matcher_new()</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="800">a #GFileQueryInfoFlags</doc>
            <type name="Gio.FileQueryInfoFlags" c:type="GFileQueryInfoFlags"/>
          </parameter>
          <parameter name="out_info"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="801">the #GFileInfo of the child.</doc>
            <type name="Gio.FileInfo" c:type="GFileInfo**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-file.c"
                 line="802">a #GCancellable or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="tree_set_metadata"
              c:identifier="ostree_repo_file_tree_set_metadata">
        <doc xml:space="preserve"
             filename="ostree-repo-file.c"
             line="347">Replace the metadata checksum and metadata object.</doc>
        <source-position filename="ostree-repo-file.h" line="61"/>
        <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"
                 filename="ostree-repo-file.c"
                 line="349">A repo file</doc>
            <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">
      <source-position filename="ostree-repo-file.h" line="43"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </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">
      <source-position filename="ostree-repo-finder.h" line="48"/>
      <function name="resolve_all_async"
                c:identifier="ostree_repo_finder_resolve_all_async"
                version="2018.6"
                glib:finish-func="resolve_all_finish">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="232">A version of ostree_repo_finder_resolve_async() which queries one or more
@finders in parallel and combines the results.</doc>
        <source-position filename="ostree-repo-finder.h" line="60"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="finders" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="234">non-empty array of #OstreeRepoFinders</doc>
            <array c:type="OstreeRepoFinder* const*">
              <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
            </array>
          </parameter>
          <parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="235">non-empty array of collection–ref pairs to find remotes for</doc>
            <array c:type="const OstreeCollectionRef* const*">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
          <parameter name="parent_repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="236">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"
                 filename="ostree-repo-finder.c"
                 line="238">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"
                 filename="ostree-repo-finder.c"
                 line="239">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"
                 filename="ostree-repo-finder.c"
                 line="240">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="2018.6"
                throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="388">Get the results from a ostree_repo_finder_resolve_all_async() operation.</doc>
        <source-position filename="ostree-repo-finder.h" line="65"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-finder.c"
               line="395">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"
                 filename="ostree-repo-finder.c"
                 line="390">#GAsyncResult from the callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="resolve_async"
                      invoker="resolve_async"
                      version="2018.6"
                      glib:finish-func="resolve_finish">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="104">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 checksum 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>
        <source-position filename="ostree-repo-finder.h" line="44"/>
        <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"
                 filename="ostree-repo-finder.c"
                 line="106">an #OstreeRepoFinder</doc>
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </instance-parameter>
          <parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="107">non-empty array of collection–ref pairs to find remotes for</doc>
            <array c:type="const OstreeCollectionRef* const*">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
          <parameter name="parent_repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="108">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"
                 filename="ostree-repo-finder.c"
                 line="110">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"
                 filename="ostree-repo-finder.c"
                 line="111">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"
                 filename="ostree-repo-finder.c"
                 line="112">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="2018.6"
                      throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="182">Get the results from a ostree_repo_finder_resolve_async() operation.</doc>
        <source-position filename="ostree-repo-finder.h" line="47"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-finder.c"
               line="190">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"
                 filename="ostree-repo-finder.c"
                 line="184">an #OstreeRepoFinder</doc>
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="185">#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="2018.6"
              glib:finish-func="resolve_finish">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="104">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 checksum 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>
        <source-position filename="ostree-repo-finder.h" line="51"/>
        <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"
                 filename="ostree-repo-finder.c"
                 line="106">an #OstreeRepoFinder</doc>
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </instance-parameter>
          <parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="107">non-empty array of collection–ref pairs to find remotes for</doc>
            <array c:type="const OstreeCollectionRef* const*">
              <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
            </array>
          </parameter>
          <parameter name="parent_repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="108">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"
                 filename="ostree-repo-finder.c"
                 line="110">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"
                 filename="ostree-repo-finder.c"
                 line="111">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"
                 filename="ostree-repo-finder.c"
                 line="112">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="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="182">Get the results from a ostree_repo_finder_resolve_async() operation.</doc>
        <source-position filename="ostree-repo-finder.h" line="56"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-finder.c"
               line="190">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"
                 filename="ostree-repo-finder.c"
                 line="184">an #OstreeRepoFinder</doc>
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="185">#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">
      <source-position filename="ostree-repo-finder-avahi.h" line="37"/>
      <implements name="RepoFinder"/>
      <constructor name="new"
                   c:identifier="ostree_repo_finder_avahi_new"
                   version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder-avahi.c"
             line="1286">Create a new #OstreeRepoFinderAvahi instance. It is intended that one such
instance be created per process, and it be used to answer all resolution
requests from #OstreeRepos.

The calling code is responsible for ensuring that @context is iterated while
the #OstreeRepoFinderAvahi is running (after ostree_repo_finder_avahi_start()
is called). This may be done from any thread.

If @context is %NULL, the current thread-default #GMainContext is used.</doc>
        <source-position filename="ostree-repo-finder-avahi.h" line="41"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-finder-avahi.c"
               line="1301">a new #OstreeRepoFinderAvahi</doc>
          <type name="RepoFinderAvahi" c:type="OstreeRepoFinderAvahi*"/>
        </return-value>
        <parameters>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder-avahi.c"
                 line="1288">a #GMainContext for processing Avahi
   events in, or %NULL to use the current thread-default</doc>
            <type name="GLib.MainContext" c:type="GMainContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="start"
              c:identifier="ostree_repo_finder_avahi_start"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-repo-finder-avahi.c"
             line="1329">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>
        <source-position filename="ostree-repo-finder-avahi.h" line="44"/>
        <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"
                 filename="ostree-repo-finder-avahi.c"
                 line="1331">an #OstreeRepoFinderAvahi</doc>
            <type name="RepoFinderAvahi" c:type="OstreeRepoFinderAvahi*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="stop"
              c:identifier="ostree_repo_finder_avahi_stop"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder-avahi.c"
             line="1407">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>
        <source-position filename="ostree-repo-finder-avahi.h" line="47"/>
        <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"
                 filename="ostree-repo-finder-avahi.c"
                 line="1409">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">
      <source-position filename="ostree-repo-finder-avahi.h" line="37"/>
      <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">
      <source-position filename="ostree-repo-finder-config.h" line="37"/>
      <implements name="RepoFinder"/>
      <constructor name="new"
                   c:identifier="ostree_repo_finder_config_new"
                   version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder-config.c"
             line="227">Create a new #OstreeRepoFinderConfig.</doc>
        <source-position filename="ostree-repo-finder-config.h" line="41"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-finder-config.c"
               line="232">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">
      <source-position filename="ostree-repo-finder-config.h" line="37"/>
      <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">
      <source-position filename="ostree-repo-finder.h" line="48"/>
      <field name="g_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="resolve_async">
        <callback name="resolve_async">
          <source-position filename="ostree-repo-finder.h" line="44"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-repo-finder.c"
                   line="106">an #OstreeRepoFinder</doc>
              <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
            </parameter>
            <parameter name="refs" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-repo-finder.c"
                   line="107">non-empty array of collection–ref pairs to find remotes for</doc>
              <array c:type="const OstreeCollectionRef* const*">
                <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
              </array>
            </parameter>
            <parameter name="parent_repo" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-repo-finder.c"
                   line="108">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"
                   filename="ostree-repo-finder.c"
                   line="110">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"
                   filename="ostree-repo-finder.c"
                   line="111">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"
                   filename="ostree-repo-finder.c"
                   line="112">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">
          <source-position filename="ostree-repo-finder.h" line="47"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="190">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"
                   filename="ostree-repo-finder.c"
                   line="184">an #OstreeRepoFinder</doc>
              <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-repo-finder.c"
                   line="185">#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">
      <source-position filename="ostree-repo-finder-mount.h" line="37"/>
      <implements name="RepoFinder"/>
      <constructor name="new"
                   c:identifier="ostree_repo_finder_mount_new"
                   version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder-mount.c"
             line="652">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>
        <source-position filename="ostree-repo-finder-mount.h" line="41"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-finder-mount.c"
               line="661">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"
                 filename="ostree-repo-finder-mount.c"
                 line="654">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="2018.6"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-repo-finder-mount.c"
             line="628">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">
      <source-position filename="ostree-repo-finder-mount.h" line="37"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="RepoFinderOverride"
           c:symbol-prefix="repo_finder_override"
           c:type="OstreeRepoFinderOverride"
           parent="GObject.Object"
           glib:type-name="OstreeRepoFinderOverride"
           glib:get-type="ostree_repo_finder_override_get_type"
           glib:type-struct="RepoFinderOverrideClass">
      <source-position filename="ostree-repo-finder-override.h" line="37"/>
      <implements name="RepoFinder"/>
      <constructor name="new"
                   c:identifier="ostree_repo_finder_override_new"
                   version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder-override.c"
             line="282">Create a new #OstreeRepoFinderOverride.</doc>
        <source-position filename="ostree-repo-finder-override.h" line="41"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-finder-override.c"
               line="287">a new #OstreeRepoFinderOverride</doc>
          <type name="RepoFinderOverride" c:type="OstreeRepoFinderOverride*"/>
        </return-value>
      </constructor>
      <method name="add_uri"
              c:identifier="ostree_repo_finder_override_add_uri"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder-override.c"
             line="296">Add the given @uri to the set of URIs which the repo finder will search for
matching refs when ostree_repo_finder_resolve_async() is called on it.</doc>
        <source-position filename="ostree-repo-finder-override.h" line="44"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RepoFinderOverride"
                  c:type="OstreeRepoFinderOverride*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder-override.c"
                 line="298">URI to add to the repo finder</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="RepoFinderOverrideClass"
            c:type="OstreeRepoFinderOverrideClass"
            glib:is-gtype-struct-for="RepoFinderOverride">
      <source-position filename="ostree-repo-finder-override.h" line="37"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="RepoFinderResult"
            c:type="OstreeRepoFinderResult"
            version="2018.6"
            glib:type-name="OstreeRepoFinderResult"
            glib:get-type="ostree_repo_finder_result_get_type"
            c:symbol-prefix="repo_finder_result">
      <doc xml:space="preserve"
           filename="ostree-repo-finder.h"
           line="67">#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.

An #OstreeRepoFinderResult is immutable after construction.

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().

@ref_to_timestamp provides timestamps for the set of refs in
@ref_to_checksum. The refs are keys (of type #OstreeCollectionRef) and the
values are guint64 pointers with the timestamp associated with the checksum
provided in @ref_to_checksum. @ref_to_timestamp can be %NULL, and when it's
not, the timestamps are zero when any of the following conditions are met:
(1) the override-commit-ids option was used on
ostree_repo_find_remotes_async (2) there was an error in trying to get the
commit metadata (3) the checksum for this ref is %NULL in @ref_to_checksum.</doc>
      <source-position filename="ostree-repo-finder.h" line="126"/>
      <field name="remote" writable="1">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.h"
             line="69">#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"
             filename="ostree-repo-finder.h"
             line="71">the #OstreeRepoFinder instance which produced this result</doc>
        <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
      </field>
      <field name="priority" writable="1">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.h"
             line="72">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"
             filename="ostree-repo-finder.h"
             line="74">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"
             filename="ostree-repo-finder.h"
             line="79">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="ref_to_timestamp" writable="1">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.h"
             line="77">map of
   collection–ref pairs to timestamps; values may be 0 for various reasons</doc>
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="CollectionRef"/>
          <type name="guint64"/>
        </type>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="3">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <constructor name="new"
                   c:identifier="ostree_repo_finder_result_new"
                   version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="411">Create a new #OstreeRepoFinderResult instance. The semantics for the arguments
are as described in the #OstreeRepoFinderResult documentation.</doc>
        <source-position filename="ostree-repo-finder.h" line="132"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-finder.c"
               line="430">a new #OstreeRepoFinderResult</doc>
          <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
        </return-value>
        <parameters>
          <parameter name="remote" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="413">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"
                 filename="ostree-repo-finder.c"
                 line="415">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"
                 filename="ostree-repo-finder.c"
                 line="417">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"
                 filename="ostree-repo-finder.c"
                 line="419">
   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="ref_to_timestamp"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="421">map of collection–ref pairs to timestamps provided by this
   result</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="CollectionRef"/>
              <type name="guint64"/>
            </type>
          </parameter>
          <parameter name="summary_last_modified" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="424">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="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="474">Compare two #OstreeRepoFinderResult instances to work out which one is better
to pull from, and hence needs to be ordered before the other.</doc>
        <source-position filename="ostree-repo-finder.h" line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-finder.c"
               line="482">&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"
                 filename="ostree-repo-finder.c"
                 line="476">an #OstreeRepoFinderResult</doc>
            <type name="RepoFinderResult"
                  c:type="const OstreeRepoFinderResult*"/>
          </instance-parameter>
          <parameter name="b" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="477">an #OstreeRepoFinderResult</doc>
            <type name="RepoFinderResult"
                  c:type="const OstreeRepoFinderResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dup"
              c:identifier="ostree_repo_finder_result_dup"
              version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="455">Copy an #OstreeRepoFinderResult.</doc>
        <source-position filename="ostree-repo-finder.h" line="138"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-finder.c"
               line="461">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"
                 filename="ostree-repo-finder.c"
                 line="457">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="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="524">Free the given @result.</doc>
        <source-position filename="ostree-repo-finder.h" line="143"/>
        <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"
                 filename="ostree-repo-finder.c"
                 line="526">an #OstreeRepoFinderResult</doc>
            <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="freev"
                c:identifier="ostree_repo_finder_result_freev"
                version="2018.6">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="546">Free the given @results array, freeing each element and the container.</doc>
        <source-position filename="ostree-repo-finder.h" line="160"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="results" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-repo-finder.c"
                 line="548">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"
           filename="ostree-repo.h"
           line="638">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>
      <source-position filename="ostree-repo.h" line="657"/>
      <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" 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" 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"
           filename="ostree-repo.h"
           line="613">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>
      <source-position filename="ostree-repo.h" line="633"/>
      <return-value transfer-ownership="full">
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="repo" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.h"
               line="615">Repo</doc>
          <type name="Repo" c:type="OstreeRepo*"/>
        </parameter>
        <parameter name="stbuf"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="ostree-repo.h"
               line="616">Stat buffer</doc>
          <type name="gpointer" c:type="const stat*"/>
        </parameter>
        <parameter name="src_path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo.h"
               line="617">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"
               filename="ostree-repo.h"
               line="618">User data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <bitfield name="RepoListObjectsFlags" c:type="OstreeRepoListObjectsFlags">
      <source-position filename="ostree-repo.h" line="871"/>
      <member name="loose"
              value="1"
              c:identifier="OSTREE_REPO_LIST_OBJECTS_LOOSE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="860">List only loose (plain file) objects</doc>
      </member>
      <member name="packed"
              value="2"
              c:identifier="OSTREE_REPO_LIST_OBJECTS_PACKED">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="861">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"
             filename="ostree-repo.h"
             line="862">List all objects</doc>
      </member>
      <member name="no_parents"
              value="8"
              c:identifier="OSTREE_REPO_LIST_OBJECTS_NO_PARENTS">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="863">Only list objects in this repo, not parents</doc>
      </member>
    </bitfield>
    <bitfield name="RepoListRefsExtFlags" c:type="OstreeRepoListRefsExtFlags">
      <source-position filename="ostree-repo.h" line="423"/>
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_LIST_REFS_EXT_NONE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="412">No flags.</doc>
      </member>
      <member name="aliases"
              value="1"
              c:identifier="OSTREE_REPO_LIST_REFS_EXT_ALIASES">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="413">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"
             filename="ostree-repo.h"
             line="414">Exclude remote refs.  Since: 2017.11</doc>
      </member>
      <member name="exclude_mirrors"
              value="4"
              c:identifier="OSTREE_REPO_LIST_REFS_EXT_EXCLUDE_MIRRORS">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="415">Exclude mirrored refs.  Since: 2019.2</doc>
      </member>
    </bitfield>
    <enumeration name="RepoLockType"
                 version="2021.3"
                 c:type="OstreeRepoLockType">
      <doc xml:space="preserve"
           filename="ostree-repo.h"
           line="1318">Flags controlling repository locking.</doc>
      <source-position filename="ostree-repo.h" line="1331"/>
      <member name="shared" value="0" c:identifier="OSTREE_REPO_LOCK_SHARED">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="1320">A "read only" lock; multiple readers are allowed.</doc>
      </member>
      <member name="exclusive"
              value="1"
              c:identifier="OSTREE_REPO_LOCK_EXCLUSIVE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="1321">A writable lock at most one writer can be active, and zero readers.</doc>
      </member>
    </enumeration>
    <enumeration name="RepoMode" c:type="OstreeRepoMode">
      <doc xml:space="preserve"
           filename="ostree-core.h"
           line="192">See the documentation of #OstreeRepo for more information about the
possible modes.</doc>
      <source-position filename="ostree-core.h" line="217"/>
      <member name="bare" value="0" c:identifier="OSTREE_REPO_MODE_BARE">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="194">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"
             filename="ostree-core.h"
             line="196">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"
             filename="ostree-core.h"
             line="198">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"
             filename="ostree-core.h"
             line="199">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"
             filename="ostree-core.h"
             line="201">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>
      <member name="bare_split_xattrs"
              value="4"
              c:identifier="OSTREE_REPO_MODE_BARE_SPLIT_XATTRS">
        <doc xml:space="preserve"
             filename="ostree-core.h"
             line="203">Same as BARE_USER, but xattrs are stored separately from
file content, with dedicated object types.</doc>
      </member>
    </enumeration>
    <bitfield name="RepoPruneFlags" c:type="OstreeRepoPruneFlags">
      <source-position filename="ostree-repo.h" line="1063"/>
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_PRUNE_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="1051">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"
             filename="ostree-repo.h"
             line="1052">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"
             filename="ostree-repo.h"
             line="1053">Do not traverse individual commit objects, only follow refs
for reachability calculations</doc>
      </member>
      <member name="commit_only"
              value="4"
              c:identifier="OSTREE_REPO_PRUNE_FLAGS_COMMIT_ONLY">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="1055">Only traverse commit objects.  (Since 2022.2)</doc>
      </member>
    </bitfield>
    <record name="RepoPruneOptions" c:type="OstreeRepoPruneOptions">
      <source-position filename="ostree-repo.h" line="1086"/>
      <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" fixed-size="6">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
      <field name="unused_ints" writable="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gint" c:type="int"/>
        </array>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="RepoPullFlags" c:type="OstreeRepoPullFlags">
      <source-position filename="ostree-repo.h" line="1121"/>
      <member name="none" value="0" c:identifier="OSTREE_REPO_PULL_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="1102">No special options for pull</doc>
      </member>
      <member name="mirror"
              value="1"
              c:identifier="OSTREE_REPO_PULL_FLAGS_MIRROR">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="1103">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"
             filename="ostree-repo.h"
             line="1105">Fetch only the commit metadata</doc>
      </member>
      <member name="untrusted"
              value="4"
              c:identifier="OSTREE_REPO_PULL_FLAGS_UNTRUSTED">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="1106">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"
             filename="ostree-repo.h"
             line="1108">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"
             filename="ostree-repo.h"
             line="1110">Don't verify checksums of objects HTTP repositories
(Since: 2017.12)</doc>
      </member>
    </bitfield>
    <enumeration name="RepoRemoteChange" c:type="OstreeRepoRemoteChange">
      <doc xml:space="preserve"
           filename="ostree-repo.h"
           line="132">The remote change operation.</doc>
      <source-position filename="ostree-repo.h" line="149"/>
      <member name="add"
              value="0"
              c:identifier="OSTREE_REPO_REMOTE_CHANGE_ADD">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="135">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"
             filename="ostree-repo.h"
             line="136">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"
             filename="ostree-repo.h"
             line="137">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"
             filename="ostree-repo.h"
             line="138">Delete a remote, do nothing if the remote does not
exist</doc>
      </member>
      <member name="replace"
              value="4"
              c:identifier="OSTREE_REPO_REMOTE_CHANGE_REPLACE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="140">Add or replace a remote (Since: 2019.2)</doc>
      </member>
    </enumeration>
    <bitfield name="RepoResolveRevExtFlags"
              c:type="OstreeRepoResolveRevExtFlags">
      <source-position filename="ostree-repo.h" line="392"/>
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_RESOLVE_REV_EXT_NONE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="385">No flags.</doc>
      </member>
      <member name="local_only"
              value="1"
              c:identifier="OSTREE_REPO_RESOLVE_REV_EXT_LOCAL_ONLY">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="386">Exclude remote and mirrored refs. Since: 2019.2</doc>
      </member>
    </bitfield>
    <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"
           filename="ostree-repo.h"
           line="220">A list of statistics for each transaction that may be
interesting for reporting purposes.</doc>
      <source-position filename="ostree-repo.h" line="255"/>
      <field name="metadata_objects_total" writable="1">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="222">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"
             filename="ostree-repo.h"
             line="224">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"
             filename="ostree-repo.h"
             line="226">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"
             filename="ostree-repo.h"
             line="228">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"
             filename="ostree-repo.h"
             line="230">The amount of data added to the repository,
in bytes, counting only content objects.</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="devino_cache_hits" writable="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="padding1" writable="1">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="232">reserved</doc>
        <type name="guint" c:type="guint"/>
      </field>
      <field name="padding2" writable="1">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="233">reserved</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="padding3" writable="1">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="234">reserved</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
      <field name="padding4" writable="1">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="235">reserved</doc>
        <type name="guint64" c:type="guint64"/>
      </field>
    </record>
    <bitfield name="RepoVerifyFlags"
              version="2021.4"
              c:type="OstreeRepoVerifyFlags">
      <source-position filename="ostree-repo.h" line="1301"/>
      <member name="none"
              value="0"
              c:identifier="OSTREE_REPO_VERIFY_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="1290">No flags</doc>
      </member>
      <member name="no_gpg"
              value="1"
              c:identifier="OSTREE_REPO_VERIFY_FLAGS_NO_GPG">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="1291">Skip GPG verification</doc>
      </member>
      <member name="no_signapi"
              value="2"
              c:identifier="OSTREE_REPO_VERIFY_FLAGS_NO_SIGNAPI">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="1292">Skip all other signature verification methods</doc>
      </member>
    </bitfield>
    <function-macro name="SEPOLICY"
                    c:identifier="OSTREE_SEPOLICY"
                    introspectable="0">
      <source-position filename="ostree-sepolicy.h" line="27"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="SHA256_DIGEST_LEN"
              value="32"
              c:type="OSTREE_SHA256_DIGEST_LEN">
      <doc xml:space="preserve"
           filename="ostree-core.h"
           line="47">Length of a sha256 digest when expressed as raw bytes</doc>
      <source-position filename="ostree-core.h" line="52"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SHA256_STRING_LEN"
              value="64"
              c:type="OSTREE_SHA256_STRING_LEN">
      <doc xml:space="preserve"
           filename="ostree-core.h"
           line="54">Length of a sha256 digest when expressed as a hexadecimal string</doc>
      <source-position filename="ostree-core.h" line="59"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SIGN_NAME_ED25519"
              value="ed25519"
              c:type="OSTREE_SIGN_NAME_ED25519"
              version="2020.4">
      <doc xml:space="preserve"
           filename="ostree-sign.h"
           line="39">The name of the default ed25519 signing type.</doc>
      <source-position filename="ostree-sign.h" line="45"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SIGN_NAME_SPKI"
              value="spki"
              c:type="OSTREE_SIGN_NAME_SPKI"
              version="2024.7">
      <doc xml:space="preserve"
           filename="ostree-sign.h"
           line="47">The name of the spki signing type.</doc>
      <source-position filename="ostree-sign.h" line="53"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SUMMARY_GVARIANT_STRING"
              value="(a(s(taya{sv}))a{sv})"
              c:type="OSTREE_SUMMARY_GVARIANT_STRING">
      <source-position filename="ostree-core.h" line="177"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SUMMARY_SIG_GVARIANT_STRING"
              value="a{sv}"
              c:type="OSTREE_SUMMARY_SIG_GVARIANT_STRING">
      <source-position filename="ostree-core.h" line="180"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="SYSROOT"
                    c:identifier="OSTREE_SYSROOT"
                    introspectable="0">
      <source-position filename="ostree-sysroot.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SYSROOT_UPGRADER"
                    c:identifier="OSTREE_SYSROOT_UPGRADER"
                    introspectable="0">
      <source-position filename="ostree-sysroot-upgrader.h" line="27"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <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">
        <source-position filename="ostree-sepolicy.h" line="38"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sepolicy.c"
               line="477">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"
                 filename="ostree-sepolicy.c"
                 line="473">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"
                 filename="ostree-sepolicy.c"
                 line="474">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_at"
                   c:identifier="ostree_sepolicy_new_at"
                   version="2017.4"
                   throws="1">
        <source-position filename="ostree-sepolicy.h" line="41"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sepolicy.c"
               line="491">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"
                 filename="ostree-sepolicy.c"
                 line="487">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"
                 filename="ostree-sepolicy.c"
                 line="488">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_commit"
                   c:identifier="ostree_sepolicy_new_from_commit"
                   throws="1">
        <doc xml:space="preserve"
             filename="ostree-sepolicy.c"
             line="278">Extract the SELinux policy from a commit object via a partial checkout.  This is useful
for labeling derived content as separate commits.

This function is the backend of `ostree_repo_commit_modifier_set_sepolicy_from_commit()`.</doc>
        <source-position filename="ostree-sepolicy.h" line="44"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sepolicy.c"
               line="290">A new policy</doc>
          <type name="SePolicy" c:type="OstreeSePolicy*"/>
        </return-value>
        <parameters>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="280">The repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="rev" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="281">ostree ref or 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"
                 filename="ostree-sepolicy.c"
                 line="282">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"
             filename="ostree-sepolicy.c"
             line="701">Cleanup function for ostree_sepolicy_setfscreatecon().</doc>
        <source-position filename="ostree-sepolicy.h" line="78"/>
        <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"
                 filename="ostree-sepolicy.c"
                 line="703">Not used, just in case you didn't infer that from the parameter name</doc>
            <type name="gpointer" c:type="void**"/>
          </parameter>
        </parameters>
      </function>
      <function name="set_null_log"
                c:identifier="ostree_sepolicy_set_null_log"
                version="2025.2">
        <doc xml:space="preserve"
             filename="ostree-sepolicy.c"
             line="263">Disable SELinux's builtin logging; one rarely wants this enabled.</doc>
        <source-position filename="ostree-sepolicy.h" line="35"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <method name="get_csum"
              c:identifier="ostree_sepolicy_get_csum"
              version="2016.5">
        <source-position filename="ostree-sepolicy.h" line="54"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-sepolicy.c"
               line="537">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"
             filename="ostree-sepolicy.c"
             line="551">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>
        <source-position filename="ostree-sepolicy.h" line="57"/>
        <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"
                 filename="ostree-sepolicy.c"
                 line="553">Self</doc>
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </instance-parameter>
          <parameter name="relpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="554">Path</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="unix_mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="555">Unix mode</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="out_label"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="556">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"
                 filename="ostree-sepolicy.c"
                 line="557">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="ostree_sepolicy_get_name">
        <source-position filename="ostree-sepolicy.h" line="51"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-sepolicy.c"
               line="521">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"
              glib:get-property="path">
        <doc xml:space="preserve"
             filename="ostree-sepolicy.c"
             line="501">This API should be considered deprecated, because it's supported for
policy objects to be created from file-descriptor relative paths, which
may not be globally accessible.</doc>
        <source-position filename="ostree-sepolicy.h" line="48"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-sepolicy.c"
               line="509">Path to rootfs</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="503">A SePolicy object</doc>
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="restorecon"
              c:identifier="ostree_sepolicy_restorecon"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sepolicy.c"
             line="600">Reset the security context of @target based on the SELinux policy.</doc>
        <source-position filename="ostree-sepolicy.h" line="68"/>
        <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"
                 filename="ostree-sepolicy.c"
                 line="602">Self</doc>
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="603">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"
                 filename="ostree-sepolicy.c"
                 line="604">File attributes</doc>
            <type name="Gio.FileInfo" c:type="GFileInfo*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="605">Physical path to target file</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="606">Flags controlling behavior</doc>
            <type name="SePolicyRestoreconFlags"
                  c:type="OstreeSePolicyRestoreconFlags"/>
          </parameter>
          <parameter name="out_new_label"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="607">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"
                 filename="ostree-sepolicy.c"
                 line="608">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="setfscreatecon"
              c:identifier="ostree_sepolicy_setfscreatecon"
              throws="1">
        <source-position filename="ostree-sepolicy.h" line="74"/>
        <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"
                 filename="ostree-sepolicy.c"
                 line="669">Policy</doc>
            <type name="SePolicy" c:type="OstreeSePolicy*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sepolicy.c"
                 line="670">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"
                 filename="ostree-sepolicy.c"
                 line="671">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"
                getter="get_path">
        <type name="Gio.File"/>
      </property>
      <property name="rootfs-dfd"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="-1">
        <type name="gint" c:type="gint"/>
      </property>
    </class>
    <bitfield name="SePolicyRestoreconFlags"
              c:type="OstreeSePolicyRestoreconFlags">
      <source-position filename="ostree-sepolicy.h" line="65"/>
      <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>
    <interface name="Sign"
               c:symbol-prefix="sign"
               c:type="OstreeSign"
               glib:type-name="OstreeSign"
               glib:get-type="ostree_sign_get_type"
               glib:type-struct="SignInterface">
      <source-position filename="ostree-sign.h" line="73"/>
      <function name="get_all"
                c:identifier="ostree_sign_get_all"
                version="2020.2">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="504">Return an array with newly allocated instances of all available
signing engines; they will not be initialized.</doc>
        <source-position filename="ostree-sign.h" line="117"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="510">an array of signing engines</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Sign"/>
          </array>
        </return-value>
      </function>
      <function name="get_by_name"
                c:identifier="ostree_sign_get_by_name"
                version="2020.2"
                throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="528">Create a new instance of a signing engine.</doc>
        <source-position filename="ostree-sign.h" line="120"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="535">New signing engine, or %NULL if the engine is not known</doc>
          <type name="Sign" c:type="OstreeSign*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="530">the name of desired signature engine</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="add_pk"
                      invoker="add_pk"
                      version="2020.2"
                      throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="213">Add the public key for verification. Could be called multiple times for
adding all needed keys to be used for verification.

The @public_key argument depends of the particular engine implementation.</doc>
        <source-position filename="ostree-sign.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="224">@TRUE in case if the key could be added successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="215">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="public_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="216">single public key to be added</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="clear_keys"
                      invoker="clear_keys"
                      version="2020.2"
                      throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="138">Clear all previously preloaded secret and public keys.</doc>
        <source-position filename="ostree-sign.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="145">@TRUE in case if no errors, @FALSE in case of error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="140">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="data" invoker="data" version="2020.2" throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="278">Sign the given @data with pre-loaded secret key.

Depending of the signing engine used you will need to load
the secret key with #ostree_sign_set_sk.</doc>
        <source-position filename="ostree-sign.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="291">@TRUE if @data has been signed successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="280">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="281">the raw data to be signed with pre-loaded secret key</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signature"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="282">in case of success will contain signature</doc>
            <type name="GLib.Bytes" c:type="GBytes**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="283">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="data_verify"
                      invoker="data_verify"
                      version="2020.2"
                      throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="308">Verify given data against signatures with pre-loaded public keys.

Depending of the signing engine used you will need to load
the public key(s) with #ostree_sign_set_pk, #ostree_sign_add_pk
or #ostree_sign_load_pk.</doc>
        <source-position filename="ostree-sign.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="323">@TRUE if @data has been signed at least with any single valid key,
@FALSE in case of error or no valid keys are available (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="310">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="311">the raw data to check</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signatures" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="312">the signatures to be checked</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="out_success_message"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="313">success message returned by the signing
engine</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_name" invoker="get_name" version="2020.2">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="429">Return the pointer to the name of currently used/selected signing engine.</doc>
        <source-position filename="ostree-sign.h" line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="435">pointer to the name
@NULL in case of error (unlikely).</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="431">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="load_pk"
                      invoker="load_pk"
                      version="2020.2"
                      throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="240">Load public keys for verification from anywhere.
It is expected that all keys would be added to already pre-loaded keys.

The @options argument depends of the particular engine implementation.

For example, @ed25515 engine could use following string-formatted options:
- @filename -- single file to use to load keys from
- @basedir -- directory containing subdirectories
  'trusted.ed25519.d' and 'revoked.ed25519.d' with appropriate
  public keys. Used for testing and re-definition of system-wide
  directories if defaults are not suitable for any reason.</doc>
        <source-position filename="ostree-sign.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="258">@TRUE in case if at least one key could be load successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="242">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="243">any options</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="metadata_format"
                      invoker="metadata_format"
                      version="2020.2">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="115">Return the pointer to the string with format used in (detached) metadata for
current signing engine.</doc>
        <source-position filename="ostree-sign.h" line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="122">pointer to the metadata format,
@NULL in case of error (unlikely).</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="117">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="metadata_key"
                      invoker="metadata_key"
                      version="2020.2">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="92">Return the pointer to the name of the key used in (detached) metadata for
current signing engine.</doc>
        <source-position filename="ostree-sign.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="99">pointer to the metadata key name,
@NULL in case of error (unlikely).</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="94">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_pk"
                      invoker="set_pk"
                      version="2020.2"
                      throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="186">Set the public key for verification. It is expected what all
previously pre-loaded public keys will be dropped.

The @public_key argument depends of the particular engine implementation.</doc>
        <source-position filename="ostree-sign.h" line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="197">@TRUE in case if the key could be set successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="188">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="public_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="189">single public key to be added</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_sk"
                      invoker="set_sk"
                      version="2020.2"
                      throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="160">Set the secret key to be used for signing data, commits and summary.

The @secret_key argument depends of the particular engine implementation.</doc>
        <source-position filename="ostree-sign.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="170">@TRUE in case if the key could be set successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="162">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="secret_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="163">secret key to be added</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_pk"
              c:identifier="ostree_sign_add_pk"
              version="2020.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="213">Add the public key for verification. Could be called multiple times for
adding all needed keys to be used for verification.

The @public_key argument depends of the particular engine implementation.</doc>
        <source-position filename="ostree-sign.h" line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="224">@TRUE in case if the key could be added successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="215">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="public_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="216">single public key to be added</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear_keys"
              c:identifier="ostree_sign_clear_keys"
              version="2020.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="138">Clear all previously preloaded secret and public keys.</doc>
        <source-position filename="ostree-sign.h" line="102"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="145">@TRUE in case if no errors, @FALSE in case of error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="140">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="commit"
              c:identifier="ostree_sign_commit"
              version="2020.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="451">Add a signature to a commit.

Depending of the signing engine used you will need to load
the secret key with #ostree_sign_set_sk.</doc>
        <source-position filename="ostree-sign.h" line="93"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="464">@TRUE if commit has been signed successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="453">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="454">an #OsreeRepo object</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="455">SHA256 of given commit to sign</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="456">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="commit_verify"
              c:identifier="ostree_sign_commit_verify"
              version="2020.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="376">Verify if commit is signed with known key.

Depending of the signing engine used you will need to load
the public key(s) for verification with #ostree_sign_set_pk,
#ostree_sign_add_pk and/or #ostree_sign_load_pk.</doc>
        <source-position filename="ostree-sign.h" line="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="392">@TRUE if commit has been verified successfully,
@FALSE in case of error or no valid keys are available (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="378">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="379">an #OsreeRepo object</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="commit_checksum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="380">SHA256 of given commit to verify</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_success_message"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="381">success message returned by the signing
engine</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="383">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="data"
              c:identifier="ostree_sign_data"
              version="2020.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="278">Sign the given @data with pre-loaded secret key.

Depending of the signing engine used you will need to load
the secret key with #ostree_sign_set_sk.</doc>
        <source-position filename="ostree-sign.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="291">@TRUE if @data has been signed successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="280">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="281">the raw data to be signed with pre-loaded secret key</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signature"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="282">in case of success will contain signature</doc>
            <type name="GLib.Bytes" c:type="GBytes**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="283">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="data_verify"
              c:identifier="ostree_sign_data_verify"
              version="2020.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="308">Verify given data against signatures with pre-loaded public keys.

Depending of the signing engine used you will need to load
the public key(s) with #ostree_sign_set_pk, #ostree_sign_add_pk
or #ostree_sign_load_pk.</doc>
        <source-position filename="ostree-sign.h" line="83"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="323">@TRUE if @data has been signed at least with any single valid key,
@FALSE in case of error or no valid keys are available (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="310">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="311">the raw data to check</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signatures" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="312">the signatures to be checked</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="out_success_message"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="313">success message returned by the signing
engine</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="ed25519_add_pk"
              c:identifier="ostree_sign_ed25519_add_pk"
              throws="1">
        <source-position filename="ostree-sign-ed25519.h" line="52"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="public_key" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ed25519_clear_keys"
              c:identifier="ostree_sign_ed25519_clear_keys"
              throws="1">
        <source-position filename="ostree-sign-ed25519.h" line="46"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ed25519_data"
              c:identifier="ostree_sign_ed25519_data"
              throws="1">
        <source-position filename="ostree-sign-ed25519.h" line="36"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signature" transfer-ownership="none">
            <type name="GLib.Bytes" c:type="GBytes**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ed25519_data_verify"
              c:identifier="ostree_sign_ed25519_data_verify"
              throws="1">
        <source-position filename="ostree-sign-ed25519.h" line="39"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="signatures" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="out_success_message" transfer-ownership="none">
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="ed25519_get_name"
              c:identifier="ostree_sign_ed25519_get_name">
        <source-position filename="ostree-sign-ed25519.h" line="42"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ed25519_load_pk"
              c:identifier="ostree_sign_ed25519_load_pk"
              throws="1">
        <source-position filename="ostree-sign-ed25519.h" line="54"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ed25519_metadata_format"
              c:identifier="ostree_sign_ed25519_metadata_format">
        <source-position filename="ostree-sign-ed25519.h" line="44"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ed25519_metadata_key"
              c:identifier="ostree_sign_ed25519_metadata_key">
        <source-position filename="ostree-sign-ed25519.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ed25519_set_pk"
              c:identifier="ostree_sign_ed25519_set_pk"
              throws="1">
        <source-position filename="ostree-sign-ed25519.h" line="50"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="public_key" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ed25519_set_sk"
              c:identifier="ostree_sign_ed25519_set_sk"
              throws="1">
        <source-position filename="ostree-sign-ed25519.h" line="48"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="secret_key" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="ostree_sign_get_name"
              version="2020.2">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="429">Return the pointer to the name of currently used/selected signing engine.</doc>
        <source-position filename="ostree-sign.h" line="76"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="435">pointer to the name
@NULL in case of error (unlikely).</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="431">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load_pk"
              c:identifier="ostree_sign_load_pk"
              version="2020.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="240">Load public keys for verification from anywhere.
It is expected that all keys would be added to already pre-loaded keys.

The @options argument depends of the particular engine implementation.

For example, @ed25515 engine could use following string-formatted options:
- @filename -- single file to use to load keys from
- @basedir -- directory containing subdirectories
  'trusted.ed25519.d' and 'revoked.ed25519.d' with appropriate
  public keys. Used for testing and re-definition of system-wide
  directories if defaults are not suitable for any reason.</doc>
        <source-position filename="ostree-sign.h" line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="258">@TRUE in case if at least one key could be load successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="242">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="243">any options</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="metadata_format"
              c:identifier="ostree_sign_metadata_format"
              version="2020.2">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="115">Return the pointer to the string with format used in (detached) metadata for
current signing engine.</doc>
        <source-position filename="ostree-sign.h" line="90"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="122">pointer to the metadata format,
@NULL in case of error (unlikely).</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="117">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="metadata_key"
              c:identifier="ostree_sign_metadata_key"
              version="2020.2">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="92">Return the pointer to the name of the key used in (detached) metadata for
current signing engine.</doc>
        <source-position filename="ostree-sign.h" line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="99">pointer to the metadata key name,
@NULL in case of error (unlikely).</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="94">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="read_pk"
              c:identifier="ostree_sign_read_pk"
              version="2025.2">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="659">Start reading public keys from a stream.</doc>
        <source-position filename="ostree-sign.h" line="127"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="666">a #OstreamBlobReader or %NULL on error</doc>
          <type name="BlobReader" c:type="OstreeBlobReader*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="661">Self</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="662">a #GInputStream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_sk"
              c:identifier="ostree_sign_read_sk"
              version="2025.2">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="686">Start reading secret keys from a stream.</doc>
        <source-position filename="ostree-sign.h" line="130"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="693">a #OstreamBlobReader or %NULL on error</doc>
          <type name="BlobReader" c:type="OstreeBlobReader*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="688">Self</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="689">a #GInputStream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pk"
              c:identifier="ostree_sign_set_pk"
              version="2020.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="186">Set the public key for verification. It is expected what all
previously pre-loaded public keys will be dropped.

The @public_key argument depends of the particular engine implementation.</doc>
        <source-position filename="ostree-sign.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="197">@TRUE in case if the key could be set successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="188">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="public_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="189">single public key to be added</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sk"
              c:identifier="ostree_sign_set_sk"
              version="2020.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="160">Set the secret key to be used for signing data, commits and summary.

The @secret_key argument depends of the particular engine implementation.</doc>
        <source-position filename="ostree-sign.h" line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="170">@TRUE in case if the key could be set successfully,
@FALSE in case of error (@error will contain the reason).</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="162">an #OstreeSign object</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="secret_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="163">secret key to be added</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="summary"
              c:identifier="ostree_sign_summary"
              version="2020.2"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="637">Add a signature to a summary file.
Based on ostree_repo_add_gpg_signature_summary implementation.</doc>
        <source-position filename="ostree-sign.h" line="123"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="648">@TRUE if summary file has been signed with all provided keys</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="639">Self</doc>
            <type name="Sign" c:type="OstreeSign*"/>
          </instance-parameter>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="640">ostree repository</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="keys" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="641">keys -- GVariant containing keys as GVarints specific to signature type.</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="642">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="SignEd25519"
            c:type="OstreeSignEd25519"
            disguised="1"
            opaque="1">
      <source-position filename="ostree-sign-ed25519.h" line="34"/>
    </record>
    <record name="SignEd25519Class" c:type="OstreeSignEd25519Class">
      <source-position filename="ostree-sign-ed25519.h" line="34"/>
      <field name="parent_class" writable="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="SignInterface"
            c:type="OstreeSignInterface"
            glib:is-gtype-struct-for="Sign">
      <source-position filename="ostree-sign.h" line="73"/>
      <field name="g_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_name">
        <callback name="get_name">
          <source-position filename="ostree-sign.h" line="61"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="435">pointer to the name
@NULL in case of error (unlikely).</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="431">an #OstreeSign object</doc>
              <type name="Sign" c:type="OstreeSign*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="data">
        <callback name="data" throws="1">
          <source-position filename="ostree-sign.h" line="62"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="291">@TRUE if @data has been signed successfully,
@FALSE in case of error (@error will contain the reason).</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="280">an #OstreeSign object</doc>
              <type name="Sign" c:type="OstreeSign*"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="281">the raw data to be signed with pre-loaded secret key</doc>
              <type name="GLib.Bytes" c:type="GBytes*"/>
            </parameter>
            <parameter name="signature"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="282">in case of success will contain signature</doc>
              <type name="GLib.Bytes" c:type="GBytes**"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="283">A #GCancellable</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="data_verify">
        <callback name="data_verify" throws="1">
          <source-position filename="ostree-sign.h" line="64"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="323">@TRUE if @data has been signed at least with any single valid key,
@FALSE in case of error or no valid keys are available (@error will contain the reason).</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="310">an #OstreeSign object</doc>
              <type name="Sign" c:type="OstreeSign*"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="311">the raw data to check</doc>
              <type name="GLib.Bytes" c:type="GBytes*"/>
            </parameter>
            <parameter name="signatures" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="312">the signatures to be checked</doc>
              <type name="GLib.Variant" c:type="GVariant*"/>
            </parameter>
            <parameter name="out_success_message"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full"
                       nullable="1"
                       optional="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="313">success message returned by the signing
engine</doc>
              <type name="utf8" c:type="char**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="metadata_key">
        <callback name="metadata_key">
          <source-position filename="ostree-sign.h" line="66"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="99">pointer to the metadata key name,
@NULL in case of error (unlikely).</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="94">an #OstreeSign object</doc>
              <type name="Sign" c:type="OstreeSign*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="metadata_format">
        <callback name="metadata_format">
          <source-position filename="ostree-sign.h" line="67"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="122">pointer to the metadata format,
@NULL in case of error (unlikely).</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="117">an #OstreeSign object</doc>
              <type name="Sign" c:type="OstreeSign*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="clear_keys">
        <callback name="clear_keys" throws="1">
          <source-position filename="ostree-sign.h" line="68"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="145">@TRUE in case if no errors, @FALSE in case of error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="140">an #OstreeSign object</doc>
              <type name="Sign" c:type="OstreeSign*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_sk">
        <callback name="set_sk" throws="1">
          <source-position filename="ostree-sign.h" line="69"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="170">@TRUE in case if the key could be set successfully,
@FALSE in case of error (@error will contain the reason).</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="162">an #OstreeSign object</doc>
              <type name="Sign" c:type="OstreeSign*"/>
            </parameter>
            <parameter name="secret_key" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="163">secret key to be added</doc>
              <type name="GLib.Variant" c:type="GVariant*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_pk">
        <callback name="set_pk" throws="1">
          <source-position filename="ostree-sign.h" line="70"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="197">@TRUE in case if the key could be set successfully,
@FALSE in case of error (@error will contain the reason).</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="188">an #OstreeSign object</doc>
              <type name="Sign" c:type="OstreeSign*"/>
            </parameter>
            <parameter name="public_key" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="189">single public key to be added</doc>
              <type name="GLib.Variant" c:type="GVariant*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add_pk">
        <callback name="add_pk" throws="1">
          <source-position filename="ostree-sign.h" line="71"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="224">@TRUE in case if the key could be added successfully,
@FALSE in case of error (@error will contain the reason).</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="215">an #OstreeSign object</doc>
              <type name="Sign" c:type="OstreeSign*"/>
            </parameter>
            <parameter name="public_key" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="216">single public key to be added</doc>
              <type name="GLib.Variant" c:type="GVariant*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="load_pk">
        <callback name="load_pk" throws="1">
          <source-position filename="ostree-sign.h" line="72"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sign.c"
                 line="258">@TRUE in case if at least one key could be load successfully,
@FALSE in case of error (@error will contain the reason).</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="242">an #OstreeSign object</doc>
              <type name="Sign" c:type="OstreeSign*"/>
            </parameter>
            <parameter name="options" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="ostree-sign.c"
                   line="243">any options</doc>
              <type name="GLib.Variant" c:type="GVariant*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <enumeration name="StaticDeltaGenerateOpt"
                 c:type="OstreeStaticDeltaGenerateOpt">
      <doc xml:space="preserve"
           filename="ostree-repo.h"
           line="899">Parameters controlling optimization of static deltas.</doc>
      <source-position filename="ostree-repo.h" line="910"/>
      <member name="lowlatency"
              value="0"
              c:identifier="OSTREE_STATIC_DELTA_GENERATE_OPT_LOWLATENCY">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="901">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"
             filename="ostree-repo.h"
             line="902">Optimize for delta size (may be very slow)</doc>
      </member>
    </enumeration>
    <enumeration name="StaticDeltaIndexFlags"
                 c:type="OstreeStaticDeltaIndexFlags">
      <doc xml:space="preserve"
           filename="ostree-repo.h"
           line="918">Flags controlling static delta index generation.</doc>
      <source-position filename="ostree-repo.h" line="927"/>
      <member name="static_delta_index_flags_none"
              value="0"
              c:identifier="OSTREE_STATIC_DELTA_INDEX_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="ostree-repo.h"
             line="920">No special flags</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">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="204">Create a new #OstreeSysroot object for the sysroot at @path. If @path is %NULL,
the current visible root file system is used, equivalent to
ostree_sysroot_new_default().</doc>
        <source-position filename="ostree-sysroot.h" line="43"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="213">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"
                 filename="ostree-sysroot.c"
                 line="206">Path to a system root directory, or %NULL to use the
  current visible root file system</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_default"
                   c:identifier="ostree_sysroot_new_default">
        <source-position filename="ostree-sysroot.h" line="46"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="224">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">
        <source-position filename="ostree-sysroot.h" line="101"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1603">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"
                 filename="ostree-sysroot.c"
                 line="1601">A deployment path</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </function>
      <method name="change_finalization"
              c:identifier="ostree_sysroot_change_finalization"
              version="2023.8"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="3952">Given the target deployment (which must be the staged deployment) this API
will toggle its "finalization locking" state.  If it is currently locked,
it will be unlocked (and hence queued to apply on shutdown).</doc>
        <source-position filename="ostree-sysroot.h" line="222"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="3954">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="3955">Deployment which must be staged</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
        </parameters>
      </method>
      <method name="cleanup" c:identifier="ostree_sysroot_cleanup" throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-cleanup.c"
             line="513">Delete any state that resulted from a partially completed
transaction, such as incomplete deployments.</doc>
        <source-position filename="ostree-sysroot.h" line="121"/>
        <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"
                 filename="ostree-sysroot-cleanup.c"
                 line="515">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"
                 filename="ostree-sysroot-cleanup.c"
                 line="516">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="cleanup_prune_repo"
              c:identifier="ostree_sysroot_cleanup_prune_repo"
              version="2018.6"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-cleanup.c"
             line="442">Prune the system repository.  This is a thin wrapper
around ostree_repo_prune_from_reachable(); the primary
addition is that this function automatically gathers
all deployed commits into the reachable set.

You generally want to at least set the `OSTREE_REPO_PRUNE_FLAGS_REFS_ONLY`
flag in @options.  A commit traversal depth of `0` is assumed.

Locking: exclusive</doc>
        <source-position filename="ostree-sysroot.h" line="128"/>
        <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"
                 filename="ostree-sysroot-cleanup.c"
                 line="444">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-cleanup.c"
                 line="445">Flags controlling pruning</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"
                 filename="ostree-sysroot-cleanup.c"
                 line="446">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"
                 filename="ostree-sysroot-cleanup.c"
                 line="447">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"
                 filename="ostree-sysroot-cleanup.c"
                 line="448">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"
                 filename="ostree-sysroot-cleanup.c"
                 line="449">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear_soft_reboot"
              c:identifier="ostree_sysroot_clear_soft_reboot"
              version="2025.3"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="4514">If there is a soft reboot queued in /run/nextroot, clear it. If one
is not queued, this function successfully does nothing.</doc>
        <source-position filename="ostree-sysroot.h" line="280"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="4516">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"
                 filename="ostree-sysroot-deploy.c"
                 line="4517">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deploy_tree"
              c:identifier="ostree_sysroot_deploy_tree"
              version="2018.5"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="3615">Older version of ostree_sysroot_stage_tree_with_options().</doc>
        <source-position filename="ostree-sysroot.h" line="192"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="3617">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3618">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3619">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3620">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3621">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3622">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3624">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3625">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deploy_tree_with_options"
              c:identifier="ostree_sysroot_deploy_tree_with_options"
              version="2020.7"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="3569">Check out deployment tree with revision @revision, performing a 3
way merge with @provided_merge_deployment for configuration.

When booted into the sysroot, you should use the
ostree_sysroot_stage_tree() API instead.</doc>
        <source-position filename="ostree-sysroot.h" line="199"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="3571">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3572">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3573">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3574">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3575">Use this deployment for merge path</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="opts"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="3576">Options</doc>
            <type name="SysrootDeployTreeOpts"
                  c:type="OstreeSysrootDeployTreeOpts*"/>
          </parameter>
          <parameter name="out_new_deployment"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="3577">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3578">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deployment_can_soft_reboot"
              c:identifier="ostree_sysroot_deployment_can_soft_reboot"
              version="2025.3">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="4385">Checks if the given deployment can be soft-rebooted to from the currently
booted deployment. A soft-reboot is generally only possible if both the
currently booted deployment and the target `deployment` use the same kernel
(i.e., have the same boot checksum).</doc>
        <source-position filename="ostree-sysroot.h" line="271"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sysroot-deploy.c"
               line="4395">%TRUE if a soft-reboot is possible to the target deployment, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4387">The #OstreeSysroot object.</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4388">The #OstreeDeployment to check for soft-reboot compatibility.</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deployment_kexec_load"
              c:identifier="ostree_sysroot_deployment_kexec_load"
              version="2025.1"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="4538">Prepare the specified deployment for a kexec.</doc>
        <source-position filename="ostree-sysroot.h" line="285"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="4540">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4541">Deployment to prepare a kexec for</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4542">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"
             filename="ostree-sysroot-deploy.c"
             line="4236">Entirely replace the kernel arguments of @deployment with the
values in @new_kargs.</doc>
        <source-position filename="ostree-sysroot.h" line="146"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="4238">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4239">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="new_kargs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4240">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"
                 filename="ostree-sysroot-deploy.c"
                 line="4241">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deployment_set_kargs_in_place"
              c:identifier="ostree_sysroot_deployment_set_kargs_in_place"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="4281">Replace the kernel arguments of @deployment with the values in @kargs_str.</doc>
        <source-position filename="ostree-sysroot.h" line="151"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="4283">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4284">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="kargs_str"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4285">Replace @deployment's kernel arguments</doc>
            <type name="utf8" c:type="char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4286">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"
             filename="ostree-sysroot-deploy.c"
             line="4351">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>
        <source-position filename="ostree-sysroot.h" line="226"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="4353">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4354">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="is_mutable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4355">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"
                 filename="ostree-sysroot-deploy.c"
                 line="4356">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deployment_set_pinned"
              c:identifier="ostree_sysroot_deployment_set_pinned"
              version="2018.3"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="2476">By default, deployments may be subject to garbage collection. Typical uses of
libostree only retain at most 2 deployments. If @is_pinned is `TRUE`, a
metadata bit will be set causing libostree to avoid automatic GC of the
deployment. However, this is really an "advisory" note; it's still possible
for e.g. older versions of libostree unaware of pinning to GC the deployment.

This function does nothing and returns successfully if the deployment
is already in the desired pinning state.  It is an error to try to pin
the staged deployment (as it's not in the bootloader entries).</doc>
        <source-position filename="ostree-sysroot.h" line="231"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="2478">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="2479">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="is_pinned" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="2480">Whether or not deployment will be automatically GC'd</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="deployment_set_soft_reboot"
              c:identifier="ostree_sysroot_deployment_set_soft_reboot"
              version="2025.3"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="4438">Prepare the specified deployment for a systemd soft-reboot by creating a new
root with it at `/run/nextroot`.</doc>
        <source-position filename="ostree-sysroot.h" line="274"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="4440">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4441">Deployment to prepare /run/nextroot</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="allow_kernel_skew" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4442">Continue even if there is a kernel mismatch</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="4443">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="deployment_unlock"
              c:identifier="ostree_sysroot_deployment_unlock"
              version="2016.4"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="2255">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>
        <source-position filename="ostree-sysroot.h" line="235"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="2257">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="2258">Deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="unlocked_state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="2259">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"
                 filename="ostree-sysroot.c"
                 line="2260">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"
             filename="ostree-sysroot.c"
             line="530">Ensure that @self is set up as a valid rootfs, by creating
/ostree/repo, among other things.</doc>
        <source-position filename="ostree-sysroot.h" line="78"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="532">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"
                 filename="ostree-sysroot.c"
                 line="533">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_booted_deployment"
              c:identifier="ostree_sysroot_get_booted_deployment">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="1497">This function may only be called if the sysroot is loaded.</doc>
        <source-position filename="ostree-sysroot.h" line="88"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1503">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"
                 filename="ostree-sysroot.c"
                 line="1499">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bootversion"
              c:identifier="ostree_sysroot_get_bootversion">
        <source-position filename="ostree-sysroot.h" line="82"/>
        <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">
        <source-position filename="ostree-sysroot.h" line="95"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1590">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"
                 filename="ostree-sysroot.c"
                 line="1587">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1588">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"
             filename="ostree-sysroot.c"
             line="1566">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>
        <source-position filename="ostree-sysroot.h" line="98"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1575">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"
                 filename="ostree-sysroot.c"
                 line="1568">Repo</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1569">A deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_deployments"
              c:identifier="ostree_sysroot_get_deployments">
        <source-position filename="ostree-sysroot.h" line="86"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1553">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"
                 filename="ostree-sysroot.c"
                 line="1551">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"
             filename="ostree-sysroot.c"
             line="467">Access a file descriptor that refers to the root directory of this sysroot.
ostree_sysroot_initialize() (or ostree_sysroot_load()) must have been invoked
prior to calling this function.</doc>
        <source-position filename="ostree-sysroot.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="475">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"
                 filename="ostree-sysroot.c"
                 line="469">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"
             filename="ostree-sysroot.c"
             line="1810">Find the deployment to use as a configuration merge source; this is
the first one in the current deployment list which matches osname.</doc>
        <source-position filename="ostree-sysroot.h" line="245"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1818">Configuration merge deployment</doc>
          <type name="Deployment" c:type="OstreeDeployment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1812">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"
                 filename="ostree-sysroot.c"
                 line="1813">Operating system group</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_path"
              c:identifier="ostree_sysroot_get_path"
              glib:get-property="path">
        <source-position filename="ostree-sysroot.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="321">Path to rootfs</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="319">Sysroot</doc>
            <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"
             filename="ostree-sysroot.c"
             line="1613">Retrieve the OSTree repository in sysroot @self. The repo is guaranteed to be open
(see ostree_repo_open()).</doc>
        <source-position filename="ostree-sysroot.h" line="142"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1623">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1615">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="out_repo"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1616">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"
                 filename="ostree-sysroot.c"
                 line="1617">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_staged_deployment"
              c:identifier="ostree_sysroot_get_staged_deployment"
              version="2018.5">
        <source-position filename="ostree-sysroot.h" line="92"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1537">The currently staged 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"
                 filename="ostree-sysroot.c"
                 line="1535">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subbootversion"
              c:identifier="ostree_sysroot_get_subbootversion">
        <source-position filename="ostree-sysroot.h" line="84"/>
        <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"
              version="2016.4"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="2034">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>
        <source-position filename="ostree-sysroot.h" line="117"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="2036">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="osname" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="2037">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"
                 filename="ostree-sysroot.c"
                 line="2038">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="initialize"
              c:identifier="ostree_sysroot_initialize"
              version="2020.1"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="1118">Subset of ostree_sysroot_load(); performs basic initialization. Notably, one
can invoke `ostree_sysroot_get_fd()` after calling this function.

It is not necessary to call this function if ostree_sysroot_load() is
invoked.</doc>
        <source-position filename="ostree-sysroot.h" line="65"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="1120">sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="initialize_with_mount_namespace"
              c:identifier="ostree_sysroot_initialize_with_mount_namespace"
              version="2022.7"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="259">Prepare the current process for modifying a booted sysroot, if applicable.
This function subsumes the functionality of `ostree_sysroot_initialize`
and may be invoked wherever that function is.

If the sysroot does not appear to be booted, or where the current process is not uid 0,
this function returns successfully.

Otherwise, if the process is in the same mount namespace as pid 1, create
a new namespace.

If you invoke this function, it must be before ostree_sysroot_load(); it may
be invoked before or after ostree_sysroot_initialize().</doc>
        <source-position filename="ostree-sysroot.h" line="52"/>
        <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="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_booted"
              c:identifier="ostree_sysroot_is_booted"
              version="2020.1">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="484">Can only be invoked after `ostree_sysroot_initialize()`.</doc>
        <source-position filename="ostree-sysroot.h" line="59"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="490">%TRUE iff the sysroot points to a booted deployment</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="486">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load" c:identifier="ostree_sysroot_load" throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="1055">Load deployment list, bootversion, and subbootversion from the
rootfs @self.</doc>
        <source-position filename="ostree-sysroot.h" line="68"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="1057">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"
                 filename="ostree-sysroot.c"
                 line="1058">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_if_changed"
              c:identifier="ostree_sysroot_load_if_changed"
              version="2016.4"
              throws="1">
        <source-position filename="ostree-sysroot.h" line="71"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="1432">#OstreeSysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="out_changed"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1434">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lock"
              c:identifier="ostree_sysroot_lock"
              throws="1"
              glib:async-func="lock_async">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="1858">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>
        <source-position filename="ostree-sysroot.h" line="104"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="1860">Self</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lock_async"
              c:identifier="ostree_sysroot_lock_async"
              glib:finish-func="lock_finish"
              glib:sync-func="lock">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="1962">An asynchronous version of ostree_sysroot_lock().</doc>
        <source-position filename="ostree-sysroot.h" line="109"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="1964">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"
                 filename="ostree-sysroot.c"
                 line="1965">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"
                 filename="ostree-sysroot.c"
                 line="1966">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"
                 filename="ostree-sysroot.c"
                 line="1967">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"
             filename="ostree-sysroot.c"
             line="1979">Call when ostree_sysroot_lock_async() is ready.</doc>
        <source-position filename="ostree-sysroot.h" line="112"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="1981">Self</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1982">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">
        <source-position filename="ostree-sysroot.h" line="252"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1848">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"
                 filename="ostree-sysroot.c"
                 line="1845">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="refspec" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1846">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"
             filename="ostree-sysroot-cleanup.c"
             line="528">Like ostree_sysroot_cleanup() in that it cleans up incomplete deployments
and old boot versions, but does NOT prune the repository.</doc>
        <source-position filename="ostree-sysroot.h" line="124"/>
        <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"
                 filename="ostree-sysroot-cleanup.c"
                 line="530">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"
                 filename="ostree-sysroot-cleanup.c"
                 line="531">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"
             filename="ostree-sysroot.c"
             line="1755">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>
        <source-position filename="ostree-sysroot.h" line="240"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="1757">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"
                 filename="ostree-sysroot.c"
                 line="1758">"stateroot" name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_pending"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1759">The pending deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment**"/>
          </parameter>
          <parameter name="out_rollback"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1760">The rollback deployment</doc>
            <type name="Deployment" c:type="OstreeDeployment**"/>
          </parameter>
        </parameters>
      </method>
      <method name="repo" c:identifier="ostree_sysroot_repo" version="2017.7">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="1636">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_initialize()
or ostree_sysroot_load() has been invoked successfully.</doc>
        <source-position filename="ostree-sysroot.h" line="139"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1644">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"
                 filename="ostree-sysroot.c"
                 line="1638">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="require_booted_deployment"
              c:identifier="ostree_sysroot_require_booted_deployment"
              version="2021.1"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="1514">Find the booted deployment, or return an error if not booted via OSTree.</doc>
        <source-position filename="ostree-sysroot.h" line="90"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sysroot.c"
               line="1520">The currently booted deployment, or an error</doc>
          <type name="Deployment" c:type="OstreeDeployment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="1516">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_mount_namespace_in_use"
              c:identifier="ostree_sysroot_set_mount_namespace_in_use"
              version="2020.1">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="232">If this function is invoked, then libostree will assume that
a private Linux mount namespace has been created by the process.
The primary use case for this is to have e.g. /sysroot mounted
read-only by default.

If this function has been called, then when a function which requires
writable access is invoked, libostree will automatically remount as writable
any mount points on which it operates.  This currently is just `/sysroot` and
`/boot`.

If you invoke this function, it must be before ostree_sysroot_load(); it may
be invoked before or after ostree_sysroot_initialize().</doc>
        <source-position filename="ostree-sysroot.h" line="49"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <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"
             filename="ostree-sysroot.c"
             line="2071">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>
        <source-position filename="ostree-sysroot.h" line="265"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="2073">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"
                 filename="ostree-sysroot.c"
                 line="2074">OS name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="new_deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="2075">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"
                 filename="ostree-sysroot.c"
                 line="2076">Use this deployment for configuration merge</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot.c"
                 line="2077">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"
                 filename="ostree-sysroot.c"
                 line="2078">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="stage_overlay_initrd"
              c:identifier="ostree_sysroot_stage_overlay_initrd"
              version="2020.7"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="3697">Stage an overlay initrd to be used in an upcoming deployment. Returns a checksum which
can be passed to ostree_sysroot_deploy_tree_with_options() or
ostree_sysroot_stage_tree_with_options() via the `overlay_initrds` array option.</doc>
        <source-position filename="ostree-sysroot.h" line="176"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="3699">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="3700">File descriptor to overlay initrd</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="out_checksum"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="3701">Overlay initrd checksum</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="3702">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="stage_tree"
              c:identifier="ostree_sysroot_stage_tree"
              version="2018.5"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="3752">Older version of ostree_sysroot_stage_tree_with_options().</doc>
        <source-position filename="ostree-sysroot.h" line="207"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="3754">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3755">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3756">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3757">Origin to use for upgrades</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
          <parameter name="merge_deployment"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="3758">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3759">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3761">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3762">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="stage_tree_with_options"
              c:identifier="ostree_sysroot_stage_tree_with_options"
              version="2020.7"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="3799">Like ostree_sysroot_deploy_tree(), but "finalization" only occurs at OS
shutdown time.</doc>
        <source-position filename="ostree-sysroot.h" line="214"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="3801">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3802">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3803">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3804">Origin to use for upgrades</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
          <parameter name="merge_deployment"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="3805">Use this deployment for merge path</doc>
            <type name="Deployment" c:type="OstreeDeployment*"/>
          </parameter>
          <parameter name="opts" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="3806">Options</doc>
            <type name="SysrootDeployTreeOpts"
                  c:type="OstreeSysrootDeployTreeOpts*"/>
          </parameter>
          <parameter name="out_new_deployment"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="3807">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"
                 filename="ostree-sysroot-deploy.c"
                 line="3808">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"
             filename="ostree-sysroot.c"
             line="1883">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>
        <source-position filename="ostree-sysroot.h" line="107"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="1885">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"
                 filename="ostree-sysroot.c"
                 line="1886">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"
             filename="ostree-sysroot.c"
             line="512">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>
        <source-position filename="ostree-sysroot.h" line="75"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="514">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unlock" c:identifier="ostree_sysroot_unlock">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="1929">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>
        <source-position filename="ostree-sysroot.h" line="114"/>
        <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"
                 filename="ostree-sysroot.c"
                 line="1931">Self</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="update_post_copy"
              c:identifier="ostree_sysroot_update_post_copy"
              version="2023.11"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-cleanup.c"
             line="588">Update a sysroot as needed after having copied it into place using file-level
operations. This enables options like fs-verity on the required files that may
have been lost during the copy.</doc>
        <source-position filename="ostree-sysroot.h" line="248"/>
        <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"
                 filename="ostree-sysroot-cleanup.c"
                 line="590">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </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="write_deployments"
              c:identifier="ostree_sysroot_write_deployments"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="2375">Older version of ostree_sysroot_write_deployments_with_options(). This
version will perform post-deployment cleanup by default.</doc>
        <source-position filename="ostree-sysroot.h" line="157"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="2377">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="new_deployments" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="2378">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"
                 filename="ostree-sysroot-deploy.c"
                 line="2379">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"
              version="2017.4"
              throws="1">
        <doc xml:space="preserve"
             filename="ostree-sysroot-deploy.c"
             line="2804">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>
        <source-position filename="ostree-sysroot.h" line="170"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="2806">Sysroot</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="new_deployments" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="2807">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"
                 filename="ostree-sysroot-deploy.c"
                 line="2808">Options</doc>
            <type name="SysrootWriteDeploymentsOpts"
                  c:type="OstreeSysrootWriteDeploymentsOpts*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="2809">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"
             filename="ostree-sysroot-deploy.c"
             line="1017">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>
        <source-position filename="ostree-sysroot.h" line="134"/>
        <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"
                 filename="ostree-sysroot-deploy.c"
                 line="1019">System root</doc>
            <type name="Sysroot" c:type="OstreeSysroot*"/>
          </instance-parameter>
          <parameter name="deployment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-deploy.c"
                 line="1020">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"
                 filename="ostree-sysroot-deploy.c"
                 line="1021">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"
                 filename="ostree-sysroot-deploy.c"
                 line="1022">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="path"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_path">
        <type name="Gio.File"/>
      </property>
      <glib:signal name="journal-msg" when="last" version="2017.10">
        <doc xml:space="preserve"
             filename="ostree-sysroot.c"
             line="160">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"
                 filename="ostree-sysroot.c"
                 line="163">Human-readable string (should not contain newlines)</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="SysrootDeployTreeOpts" c:type="OstreeSysrootDeployTreeOpts">
      <source-position filename="ostree-sysroot.h" line="189"/>
      <field name="locked" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="unused_bools" writable="1">
        <array zero-terminated="0" fixed-size="7">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
      <field name="unused_ints" writable="1">
        <array zero-terminated="0" fixed-size="8">
          <type name="gint" c:type="int"/>
        </array>
      </field>
      <field name="override_kernel_argv" writable="1">
        <type name="utf8" c:type="char**"/>
      </field>
      <field name="overlay_initrds" writable="1">
        <type name="utf8" c:type="char**"/>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="SysrootSimpleWriteDeploymentFlags"
              c:type="OstreeSysrootSimpleWriteDeploymentFlags">
      <source-position filename="ostree-sysroot.h" line="262"/>
      <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">
        <source-position filename="ostree-sysroot-upgrader.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sysroot-upgrader.c"
               line="262">An upgrader</doc>
          <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
        </return-value>
        <parameters>
          <parameter name="sysroot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="258">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="259">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">
        <source-position filename="ostree-sysroot-upgrader.h" line="61"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sysroot-upgrader.c"
               line="278">An upgrader</doc>
          <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
        </return-value>
        <parameters>
          <parameter name="sysroot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="273">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="274">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="275">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">
        <source-position filename="ostree-sysroot-upgrader.h" line="68"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-sysroot-upgrader.c"
               line="296">An upgrader</doc>
          <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
        </return-value>
        <parameters>
          <parameter name="sysroot" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="290">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="291">Operating system name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="292">Flags</doc>
            <type name="SysrootUpgraderFlags"
                  c:type="OstreeSysrootUpgraderFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="293">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"
             filename="ostree-sysroot-upgrader.c"
             line="384">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>
        <source-position filename="ostree-sysroot-upgrader.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="repo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="386">Repo</doc>
            <type name="Repo" c:type="OstreeRepo*"/>
          </parameter>
          <parameter name="from_rev" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="387">From revision</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="to_rev" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="388">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"
             filename="ostree-sysroot-upgrader.c"
             line="586">Write the new deployment to disk, perform a configuration merge
with /etc, and update the bootloader configuration.</doc>
        <source-position filename="ostree-sysroot-upgrader.h" line="109"/>
        <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"
                 filename="ostree-sysroot-upgrader.c"
                 line="588">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="589">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dup_origin"
              c:identifier="ostree_sysroot_upgrader_dup_origin">
        <source-position filename="ostree-sysroot-upgrader.h" line="75"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-sysroot-upgrader.c"
               line="323">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="321">Sysroot</doc>
            <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_origin"
              c:identifier="ostree_sysroot_upgrader_get_origin">
        <source-position filename="ostree-sysroot-upgrader.h" line="73"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-sysroot-upgrader.c"
               line="311">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="309">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">
        <source-position filename="ostree-sysroot-upgrader.h" line="81"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="ostree-sysroot-upgrader.c"
               line="373">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="371">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"
             filename="ostree-sysroot-upgrader.c"
             line="414">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>
        <source-position filename="ostree-sysroot-upgrader.h" line="96"/>
        <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"
                 filename="ostree-sysroot-upgrader.c"
                 line="416">Upgrader</doc>
            <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="417">Flags controlling pull behavior</doc>
            <type name="RepoPullFlags" c:type="OstreeRepoPullFlags"/>
          </parameter>
          <parameter name="upgrader_flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="418">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="419">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="420">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="421">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"
             filename="ostree-sysroot-upgrader.c"
             line="441">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>
        <source-position filename="ostree-sysroot-upgrader.h" line="102"/>
        <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"
                 filename="ostree-sysroot-upgrader.c"
                 line="443">Upgrader</doc>
            <type name="SysrootUpgrader" c:type="OstreeSysrootUpgrader*"/>
          </instance-parameter>
          <parameter name="dir_to_pull" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="444">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="445">Flags controlling pull behavior</doc>
            <type name="RepoPullFlags" c:type="OstreeRepoPullFlags"/>
          </parameter>
          <parameter name="upgrader_flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="ostree-sysroot-upgrader.c"
                 line="446">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="447">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="448">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="449">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"
             filename="ostree-sysroot-upgrader.c"
             line="345">Replace the origin with @origin.</doc>
        <source-position filename="ostree-sysroot-upgrader.h" line="77"/>
        <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"
                 filename="ostree-sysroot-upgrader.c"
                 line="347">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="348">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"
                 filename="ostree-sysroot-upgrader.c"
                 line="349">Cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="flags"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <type name="SysrootUpgraderFlags"/>
      </property>
      <property name="osname"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <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"
           filename="ostree-sysroot-upgrader.h"
           line="32">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"
              glib:name="OSTREE_SYSROOT_UPGRADER_FLAGS_IGNORE_UNCONFIGURED">
        <doc xml:space="preserve"
             filename="ostree-sysroot-upgrader.h"
             line="35">Do not error if the origin has an
unconfigured-state key</doc>
      </member>
      <member name="stage"
              value="4"
              c:identifier="OSTREE_SYSROOT_UPGRADER_FLAGS_STAGE"
              glib:nick="stage"
              glib:name="OSTREE_SYSROOT_UPGRADER_FLAGS_STAGE">
        <doc xml:space="preserve"
             filename="ostree-sysroot-upgrader.h"
             line="37">Enable "staging" (finalization at shutdown); recommended
   (Since: 2021.4)</doc>
      </member>
      <member name="kexec"
              value="8"
              c:identifier="OSTREE_SYSROOT_UPGRADER_FLAGS_KEXEC"
              glib:nick="kexec"
              glib:name="OSTREE_SYSROOT_UPGRADER_FLAGS_KEXEC">
      </member>
    </bitfield>
    <bitfield name="SysrootUpgraderPullFlags"
              c:type="OstreeSysrootUpgraderPullFlags">
      <source-position filename="ostree-sysroot-upgrader.h" line="93"/>
      <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">
      <source-position filename="ostree-sysroot.h" line="167"/>
      <field name="do_postclean" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="disable_auto_early_prune" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="unused_bools" writable="1">
        <array zero-terminated="0" fixed-size="7">
          <type name="gboolean" c:type="gboolean"/>
        </array>
      </field>
      <field name="unused_ints" writable="1">
        <array zero-terminated="0" fixed-size="7">
          <type name="gint" c:type="int"/>
        </array>
      </field>
      <field name="unused_ptrs" writable="1">
        <array zero-terminated="0" 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"
           filename="ostree-core.h"
           line="183">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>
      <source-position filename="ostree-core.h" line="190"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="TREE_GVARIANT_STRING"
              value="(a(say)a(sayay))"
              c:type="OSTREE_TREE_GVARIANT_STRING">
      <source-position filename="ostree-core.h" line="138"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VERSION"
              value="2026.300000"
              c:type="OSTREE_VERSION"
              version="2017.4">
      <doc xml:space="preserve"
           filename="ostree-version.h"
           line="46">ostree version.</doc>
      <source-position filename="ostree-version.h" line="53"/>
      <type name="gdouble" c:type="gdouble"/>
    </constant>
    <constant name="VERSION_S"
              value="2026.3"
              c:type="OSTREE_VERSION_S"
              version="2017.4">
      <doc xml:space="preserve"
           filename="ostree-version.h"
           line="55">ostree version, encoded as a string, useful for printing and
concatenation.</doc>
      <source-position filename="ostree-version.h" line="63"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="YEAR_VERSION"
              value="2026"
              c:type="OSTREE_YEAR_VERSION"
              version="2017.4">
      <doc xml:space="preserve"
           filename="ostree-version.h"
           line="28">ostree year version component (e.g. 2017 if %OSTREE_VERSION is 2017.2)</doc>
      <source-position filename="ostree-version.h" line="35"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <docsection name="bloom">
      <doc xml:space="preserve"
           filename="ostree-bloom.c"
           line="34">#OstreeBloom is an implementation of a bloom filter which supports writing to
and loading from a #GBytes bit array. The caller must store metadata about
the bloom filter (its hash function and `k` parameter value) separately, as
the same values must be used when reading from a serialised bit array as were
used to build the array in the first place.

This is a standard implementation of a bloom filter, and background reading
on the theory can be
[found on Wikipedia](https://en.wikipedia.org/wiki/Bloom_filter). In
particular, a bloom filter is parameterised by `m` and `k` parameters: the
size of the bit array (in bits) is `m`, and the number of hash functions
applied to each element is `k`. Bloom filters require a universal hash
function which can be parameterised by `k`. We have #OstreeBloomHashFunc,
with ostree_str_bloom_hash() being an implementation for strings.

The serialised output from a bloom filter is guaranteed to be stable across
versions of libostree as long as the same values for `k` and the hash
function are used.

#OstreeBloom is mutable when constructed with ostree_bloom_new(), and elements
can be added to it using ostree_bloom_add_element(), until ostree_bloom_seal()
is called to serialise it and make it immutable. After then, the bloom filter
can only be queried using ostree_bloom_maybe_contains().

If constructed with ostree_bloom_new_from_bytes(), the bloom filter is
immutable from construction, and can only be queried.

Reference:
 - https://en.wikipedia.org/wiki/Bloom_filter
 - https://llimllib.github.io/bloomfilter-tutorial/</doc>
    </docsection>
    <function name="break_hardlink"
              c:identifier="ostree_break_hardlink"
              version="2017.15"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="765">In many cases using libostree, a program may need to "break"
hardlinks by performing a copy.  For example, in order to
logically append to a file.

This function performs full copying, including e.g. extended
attributes and permissions of both regular files and symbolic links.

If the file is not hardlinked, this function does nothing and
returns successfully.

This function does not perform synchronization via `fsync()` or
`fdatasync()`; the idea is this will commonly be done as part
of an `ostree_repo_commit_transaction()`, which itself takes
care of synchronization.</doc>
      <source-position filename="ostree-core.h" line="426"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="dfd" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="767">Directory fd</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="768">Path relative to @dfd</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="skip_xattrs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="769">Do not copy extended attributes</doc>
          <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>
    </function>
    <function name="check_version"
              c:identifier="ostree_check_version"
              version="2017.4">
      <source-position filename="ostree-core.h" line="541"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2732">%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"
               filename="ostree-core.c"
               line="2729">Major/year required</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="required_release" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="2730">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"
              version="2016.8">
      <source-position filename="ostree-core.h" line="326"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1562">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"
               filename="ostree-core.c"
               line="1560">An binary checksum of length 32</doc>
          <array zero-terminated="0" c:type="const 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"
           filename="ostree-core.c"
           line="1491">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>
      <source-position filename="ostree-core.h" line="331"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="csum" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1493">An binary checksum of length 32</doc>
          <array zero-terminated="0" c:type="const guchar*" fixed-size="32">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1494">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"
           filename="ostree-core.c"
           line="1374">Overwrite the contents of @buf with stringified version of @csum.</doc>
      <source-position filename="ostree-core.h" line="319"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1376">An binary checksum of length 32</doc>
          <array zero-terminated="0" c:type="const char*" fixed-size="32">
            <type name="utf8" c:type="char"/>
          </array>
        </parameter>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1377">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"
              version="2016.8">
      <source-position filename="ostree-core.h" line="317"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1466">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"
               filename="ostree-core.c"
               line="1464">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">
      <source-position filename="ostree-core.h" line="337"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1581">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="const guchar*" fixed-size="32">
          <type name="guint8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1579">#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"
           filename="ostree-core.c"
           line="1595">Like ostree_checksum_bytes_peek(), but also throws @error.</doc>
      <source-position filename="ostree-core.h" line="340"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1602">Binary checksum data</doc>
        <array zero-terminated="0" c:type="const guchar*" fixed-size="32">
          <type name="guint8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="bytes" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1597">#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"
           filename="ostree-core.c"
           line="914">Compute the OSTree checksum for a given file.</doc>
      <source-position filename="ostree-core.h" line="422"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="f" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="916">File path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="917">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"
               filename="ostree-core.c"
               line="918">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"
               filename="ostree-core.c"
               line="919">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"
           filename="ostree-core.c"
           line="1071">Asynchronously compute the OSTree checksum for a given file;
complete with ostree_checksum_file_async_finish().</doc>
      <source-position filename="ostree-core.h" line="462"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="f" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1073">File path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1074">Object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
        <parameter name="io_priority" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1075">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"
               filename="ostree-core.c"
               line="1076">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"
               filename="ostree-core.c"
               line="1077">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"
               filename="ostree-core.c"
               line="1078">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"
           filename="ostree-core.c"
           line="1102">Finish computing the OSTree checksum for a given file; see
ostree_checksum_file_async().</doc>
      <source-position filename="ostree-core.h" line="467"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="f" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1104">File path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1105">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"
               filename="ostree-core.c"
               line="1106">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_at"
              c:identifier="ostree_checksum_file_at"
              version="2017.13"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="962">Compute the OSTree checksum for a given file. This is an fd-relative version
of ostree_checksum_file() which also takes flags and fills in a caller
allocated buffer.</doc>
      <source-position filename="ostree-core.h" line="457"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="dfd" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="964">Directory file descriptor</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="965">Subpath
@stbuf (allow-none): Optional stat buffer</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="stbuf"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="gpointer" c:type="stat*"/>
        </parameter>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="967">Object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="968">Flags
@out_checksum (out) (transfer full): Return location for hex checksum</doc>
          <type name="ChecksumFlags" c:type="OstreeChecksumFlags"/>
        </parameter>
        <parameter name="out_checksum" transfer-ownership="none">
          <type name="utf8" c:type="char**"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="970">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_file_from_input"
              c:identifier="ostree_checksum_file_from_input"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="863">Compute the OSTree checksum for a given input.</doc>
      <source-position filename="ostree-core.h" line="417"/>
      <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"
               filename="ostree-core.c"
               line="865">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"
               filename="ostree-core.c"
               line="866">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"
               filename="ostree-core.c"
               line="867">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"
               filename="ostree-core.c"
               line="868">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"
               filename="ostree-core.c"
               line="869">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"
               filename="ostree-core.c"
               line="870">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_from_bytes"
              c:identifier="ostree_checksum_from_bytes">
      <source-position filename="ostree-core.h" line="322"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1536">String form of @csum</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="csum" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1534">An binary checksum of length 32</doc>
          <array zero-terminated="0" c:type="const 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">
      <source-position filename="ostree-core.h" line="324"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1550">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"
               filename="ostree-core.c"
               line="1548">#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"
           filename="ostree-core.c"
           line="1478">Overwrite the contents of @buf with stringified version of @csum.</doc>
      <source-position filename="ostree-core.h" line="329"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="csum" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1480">An binary checksum of length 32</doc>
          <array zero-terminated="0" c:type="const guchar*" fixed-size="32">
            <type name="guint8" c:type="guchar"/>
          </array>
        </parameter>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1481">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"
           filename="ostree-core.c"
           line="1402">Convert @checksum from a string to binary in-place, without
allocating memory.  Use this function in hot code paths.</doc>
      <source-position filename="ostree-core.h" line="334"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="checksum" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1404">a SHA256 string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1405">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">
      <source-position filename="ostree-core.h" line="313"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1437">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"
               filename="ostree-core.c"
               line="1435">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">
      <source-position filename="ostree-core.h" line="315"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1452">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"
               filename="ostree-core.c"
               line="1450">An ASCII checksum</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="cmp_checksum_bytes"
              c:identifier="ostree_cmp_checksum_bytes">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="1329">Compare two binary checksums, using memcmp().</doc>
      <source-position filename="ostree-core.h" line="343"/>
      <return-value transfer-ownership="none">
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="a" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1331">A binary checksum</doc>
          <type name="guint8" c:type="const guchar*"/>
        </parameter>
        <parameter name="b" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1332">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="2018.6">
      <doc xml:space="preserve"
           filename="ostree-ref.c"
           line="143">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>
      <source-position filename="ostree-ref.h" line="67"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-ref.c"
             line="151">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"
               filename="ostree-ref.c"
               line="145">%NULL-terminated array of #OstreeCollectionRefs</doc>
          <array c:type="const OstreeCollectionRef* const*">
            <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="collection_ref_freev"
              c:identifier="ostree_collection_ref_freev"
              moved-to="CollectionRef.freev"
              version="2018.6">
      <doc xml:space="preserve"
           filename="ostree-ref.c"
           line="171">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>
      <source-position filename="ostree-ref.h" line="69"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="refs" transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-ref.c"
               line="173">an array of #OstreeCollectionRefs</doc>
          <array c:type="OstreeCollectionRef**">
            <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="commit_get_content_checksum"
              c:identifier="ostree_commit_get_content_checksum"
              version="2018.2">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="2424">There are use cases where one wants a checksum just of the content of a
commit. OSTree commits by default capture the current timestamp, and may have
additional metadata, which means that re-committing identical content
often results in a new checksum.

By comparing checksums of content, it's possible to easily distinguish
cases where nothing actually changed.

The content checksums is simply defined as `SHA256(root dirtree_checksum ||
root_dirmeta_checksum)`, i.e. the SHA-256 of the root "dirtree" object's checksum concatenated
with the root "dirmeta" checksum (both in binary form, not hexadecimal).</doc>
      <source-position filename="ostree-core.h" line="502"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2440">A SHA-256 hex string, or %NULL if @commit_variant is not well-formed</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="commit_variant" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="2426">A commit object</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="commit_get_object_sizes"
              c:identifier="ostree_commit_get_object_sizes"
              version="2020.1"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="2591">Reads a commit's "ostree.sizes" metadata and returns an array of
#OstreeCommitSizesEntry in @out_sizes_entries. Each element
represents an object in the commit. If the commit does not contain
the "ostree.sizes" metadata, a %G_IO_ERROR_NOT_FOUND error will be
returned.</doc>
      <source-position filename="ostree-core.h" line="537"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="commit_variant" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="2593">variant of type %OSTREE_OBJECT_TYPE_COMMIT</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
        <parameter name="out_sizes_entries"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="container"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="2594">
  return location for an array of object size entries</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray**">
            <type name="CommitSizesEntry"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="commit_get_parent" c:identifier="ostree_commit_get_parent">
      <source-position filename="ostree-core.h" line="497"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2396">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"
               filename="ostree-core.c"
               line="2394">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"
              version="2016.3">
      <source-position filename="ostree-core.h" line="499"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2413">timestamp in seconds since the Unix epoch, UTC</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="commit_variant" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="2411">Commit object</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
    <function name="commit_metadata_for_bootable"
              c:identifier="ostree_commit_metadata_for_bootable"
              version="2021.1"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-repo-os.c"
           line="31">Update provided @dict with standard metadata for bootable OSTree commits.</doc>
      <source-position filename="ostree-repo-os.h" line="42"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="root" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-os.c"
               line="33">Root filesystem to be committed</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="dict" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-os.c"
               line="34">Dictionary to update</doc>
          <type name="GLib.VariantDict" c:type="GVariantDict*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="content_file_parse"
              c:identifier="ostree_content_file_parse"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="702">A thin wrapper for ostree_content_stream_parse(); this function
converts an object content stream back into components.</doc>
      <source-position filename="ostree-core.h" line="389"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="compressed" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="704">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"
               filename="ostree-core.c"
               line="705">Path to file containing content</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="trusted" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="706">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"
               filename="ostree-core.c"
               line="707">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"
               filename="ostree-core.c"
               line="708">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"
               filename="ostree-core.c"
               line="709">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"
               filename="ostree-core.c"
               line="710">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"
           filename="ostree-core.c"
           line="658">A thin wrapper for ostree_content_stream_parse(); this function
converts an object content stream back into components.</doc>
      <source-position filename="ostree-core.h" line="395"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="compressed" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="660">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"
               filename="ostree-core.c"
               line="661">Directory file descriptor</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="662">Subpath</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="trusted" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="663">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"
               filename="ostree-core.c"
               line="664">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"
               filename="ostree-core.c"
               line="665">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"
               filename="ostree-core.c"
               line="666">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"
               filename="ostree-core.c"
               line="667">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"
           filename="ostree-core.c"
           line="576">The reverse of ostree_raw_file_to_content_stream(); this function
converts an object content stream back into components.</doc>
      <source-position filename="ostree-core.h" line="382"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="compressed" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="578">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"
               filename="ostree-core.c"
               line="579">Object content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </parameter>
        <parameter name="input_length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="580">Length of stream</doc>
          <type name="guint64" c:type="guint64"/>
        </parameter>
        <parameter name="trusted" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="581">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"
               filename="ostree-core.c"
               line="582">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"
               filename="ostree-core.c"
               line="583">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"
               filename="ostree-core.c"
               line="584">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"
               filename="ostree-core.c"
               line="585">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="create_directory_metadata"
              c:identifier="ostree_create_directory_metadata">
      <source-position filename="ostree-core.h" line="471"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1153">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"
               filename="ostree-core.c"
               line="1150">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"
               filename="ostree-core.c"
               line="1151">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"
           filename="ostree-diff.c"
           line="171">Compute the difference between directory @a and @b as 3 separate
sets of #OstreeDiffItem in @modified, @removed, and @added.</doc>
      <source-position filename="ostree-diff.h" line="65"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="173">Flags</doc>
          <type name="DiffFlags" c:type="OstreeDiffFlags"/>
        </parameter>
        <parameter name="a" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="174">First directory path, or %NULL</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="b" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="175">First directory path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="modified" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="176">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"
               filename="ostree-diff.c"
               line="177">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"
               filename="ostree-diff.c"
               line="178">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"
               filename="ostree-diff.c"
               line="179">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"
              version="2017.4"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-diff.c"
           line="193">Compute the difference between directory @a and @b as 3 separate
sets of #OstreeDiffItem in @modified, @removed, and @added.</doc>
      <source-position filename="ostree-diff.h" line="101"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="195">Flags</doc>
          <type name="DiffFlags" c:type="OstreeDiffFlags"/>
        </parameter>
        <parameter name="a" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="196">First directory path, or %NULL</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="b" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="197">First directory path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="modified" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="198">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"
               filename="ostree-diff.c"
               line="199">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"
               filename="ostree-diff.c"
               line="200">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"
               filename="ostree-diff.c"
               line="202">Options</doc>
          <type name="DiffDirsOptions" c:type="OstreeDiffDirsOptions*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="201">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"
           filename="ostree-diff.c"
           line="430">Print the contents of a diff to stdout.</doc>
      <source-position filename="ostree-diff.h" line="107"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="a" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="432">First directory path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="b" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="433">First directory path</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="modified" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-diff.c"
               line="434">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"
               filename="ostree-diff.c"
               line="435">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"
               filename="ostree-diff.c"
               line="436">Added files</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Gio.File"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="fs_get_all_xattrs"
              c:identifier="ostree_fs_get_all_xattrs"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="818">Retrieve all extended attributes in a canonical (sorted) order from
the given file descriptor.</doc>
      <source-position filename="ostree-core.h" line="430"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="827">A GVariant of type `a(ayay)`</doc>
        <type name="GLib.Variant" c:type="GVariant*"/>
      </return-value>
      <parameters>
        <parameter name="fd" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="820">File descriptor</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="821">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="fs_get_all_xattrs_at"
              c:identifier="ostree_fs_get_all_xattrs_at"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="838">Retrieve all extended attributes in a canonical (sorted) order from
the given path, relative to the provided directory file descriptor.
The target path will not be dereferenced.  Currently on Linux, this
API must be used currently to retrieve extended attributes
for symbolic links because while `O_PATH` exists, it cannot be used
with `fgetxattr()`.</doc>
      <source-position filename="ostree-core.h" line="433"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="852">A GVariant of type `a(ayay)`</doc>
        <type name="GLib.Variant" c:type="GVariant*"/>
      </return-value>
      <parameters>
        <parameter name="dfd" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="840">Directory file descriptor</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="841">Filesystem 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"
               filename="ostree-core.c"
               line="842">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gpg_error_quark"
              c:identifier="ostree_gpg_error_quark"
              version="2017.10">
      <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"
           filename="ostree-core.c"
           line="1310">Use this function with #GHashTable and ostree_object_name_serialize().</doc>
      <source-position filename="ostree-core.h" line="365"/>
      <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"
               filename="ostree-core.c"
               line="1312">A #GVariant containing a serialized object</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="kernel_args_cleanup"
              c:identifier="ostree_kernel_args_cleanup"
              moved-to="KernelArgs.cleanup"
              version="2019.3">
      <doc xml:space="preserve"
           filename="ostree-kernel-args.c"
           line="245">Frees the OstreeKernelArgs structure pointed by *loc</doc>
      <source-position filename="ostree-kernel-args.h" line="34"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="loc"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="247">Address of an OstreeKernelArgs pointer</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </function>
    <function name="kernel_args_from_string"
              c:identifier="ostree_kernel_args_from_string"
              moved-to="KernelArgs.from_string"
              version="2019.3"
              introspectable="0">
      <doc xml:space="preserve"
           filename="ostree-kernel-args.c"
           line="718">Initializes a new OstreeKernelArgs then parses and appends @options
to the empty OstreeKernelArgs</doc>
      <source-position filename="ostree-kernel-args.h" line="76"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="725">newly allocated #OstreeKernelArgs with @options appended</doc>
        <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
      </return-value>
      <parameters>
        <parameter name="options" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-kernel-args.c"
               line="720">a string representing command line arguments</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="kernel_args_new"
              c:identifier="ostree_kernel_args_new"
              moved-to="KernelArgs.new"
              version="2019.3"
              introspectable="0">
      <doc xml:space="preserve"
           filename="ostree-kernel-args.c"
           line="205">Initializes a new OstreeKernelArgs structure and returns it</doc>
      <source-position filename="ostree-kernel-args.h" line="31"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-kernel-args.c"
             line="210">A newly created #OstreeKernelArgs for kernel arguments</doc>
        <type name="KernelArgs" c:type="OstreeKernelArgs*"/>
      </return-value>
    </function>
    <function name="metadata_variant_type"
              c:identifier="ostree_metadata_variant_type">
      <source-position filename="ostree-core.h" line="307"/>
      <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"
           filename="ostree-core.c"
           line="1291">Reverse ostree_object_to_string().</doc>
      <source-position filename="ostree-core.h" line="378"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1293">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"
               filename="ostree-core.c"
               line="1294">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"
               filename="ostree-core.c"
               line="1295">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"
           filename="ostree-core.c"
           line="1356">Reverse ostree_object_name_serialize().  Note that @out_checksum is
only valid for the lifetime of @variant, and must not be freed.</doc>
      <source-position filename="ostree-core.h" line="371"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="variant" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1358">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"
               filename="ostree-core.c"
               line="1359">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"
               filename="ostree-core.c"
               line="1360">Return object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType*"/>
        </parameter>
      </parameters>
    </function>
    <function name="object_name_serialize"
              c:identifier="ostree_object_name_serialize">
      <source-position filename="ostree-core.h" line="368"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1347">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"
               filename="ostree-core.c"
               line="1344">An ASCII checksum</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1345">An object type</doc>
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
      </parameters>
    </function>
    <function name="object_to_string" c:identifier="ostree_object_to_string">
      <source-position filename="ostree-core.h" line="375"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="1283">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"
               filename="ostree-core.c"
               line="1280">An ASCII checksum</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="objtype" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1281">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"
           filename="ostree-core.c"
           line="1247">The reverse of ostree_object_type_to_string().</doc>
      <source-position filename="ostree-core.h" line="362"/>
      <return-value transfer-ownership="none">
        <type name="ObjectType" c:type="OstreeObjectType"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="1249">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"
           filename="ostree-core.c"
           line="1212">Serialize @objtype to a string; this is used for file extensions.</doc>
      <source-position filename="ostree-core.h" line="359"/>
      <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"
               filename="ostree-core.c"
               line="1214">an #OstreeObjectType</doc>
          <type name="ObjectType" c:type="OstreeObjectType"/>
        </parameter>
      </parameters>
    </function>
    <docsection name="ostree-async-progress">
      <doc xml:space="preserve"
           filename="ostree-async-progress.c"
           line="26">For many asynchronous operations, it's desirable for callers to be
able to watch their status as they progress.  For example, an user
interface calling an asynchronous download operation will want to
be able to see the total number of bytes downloaded.

This class provides a mechanism for callees of asynchronous
operations to communicate back with callers.  It transparently
handles thread safety, ensuring that the progress change
notification occurs in the thread-default context of the calling
operation.

The ostree_async_progress_get_status() and ostree_async_progress_set_status()
methods get and set a well-known `status` key of type %G_VARIANT_TYPE_STRING.
This key may be accessed using the other #OstreeAsyncProgress methods, but it
must always have the correct type.</doc>
    </docsection>
    <docsection name="ostree-core">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="88">These functions implement repository-independent algorithms for
operating on the core OSTree data formats, such as converting
#GFileInfo into a #GVariant.

There are 4 types of objects; file, dirmeta, tree, and commit.  The
last 3 are metadata, and the file object is the only content object
type.

All metadata objects are stored as #GVariant (big endian).  The
rationale for this is the same as that of the ext{2,3,4} family of
filesystems; most developers will be using LE, and so it's better
to continually test the BE-&gt;LE swap.

The file object is a custom format in order to support streaming.</doc>
    </docsection>
    <docsection name="ostree-gpg-verify-result">
      <doc xml:space="preserve"
           filename="ostree-gpg-verify-result.c"
           line="28">#OstreeGpgVerifyResult contains verification details for GPG signatures
read from a detached #OstreeRepo metadata object.

Use ostree_gpg_verify_result_count_all() and
ostree_gpg_verify_result_count_valid() to quickly check overall signature
validity.

Use ostree_gpg_verify_result_lookup() to find a signature by the key ID
or fingerprint of the signing key.

For more in-depth inspection, such as presenting signature details to the
user, pass an array of attribute values to ostree_gpg_verify_result_get()
or get all signature details with ostree_gpg_verify_result_get_all().</doc>
    </docsection>
    <docsection name="ostree-lzma-compressor">
      <doc xml:space="preserve"
           filename="ostree-lzma-compressor.c"
           line="36">An implementation of #GConverter that compresses data using
LZMA.</doc>
    </docsection>
    <docsection name="ostree-lzma-decompressor">
      <doc xml:space="preserve"
           filename="ostree-lzma-decompressor.c"
           line="44">An implementation of #GConverter that decompresses data using
LZMA.</doc>
    </docsection>
    <docsection name="ostree-mutable-tree">
      <doc xml:space="preserve"
           filename="ostree-mutable-tree.c"
           line="29">In order to commit content into an #OstreeRepo, it must first be
imported into an #OstreeMutableTree.  There are several high level
APIs to create an initiable #OstreeMutableTree from a physical
filesystem directory, but they may also be computed
programmatically.</doc>
    </docsection>
    <docsection name="ostree-repo">
      <doc xml:space="preserve"
           filename="ostree-repo.c"
           line="81">The #OstreeRepo is like git, a content-addressed object store.
Unlike git, it records uid, gid, and extended attributes.

There are four possible "modes" for an #OstreeRepo; %OSTREE_REPO_MODE_BARE
is very simple - content files are represented exactly as they are, and
checkouts are just hardlinks. %OSTREE_REPO_MODE_BARE_USER is similar, except
the uid/gids are not set on the files, and checkouts as hardlinks work only
for user checkouts. %OSTREE_REPO_MODE_BARE_USER_ONLY is the same as
BARE_USER, but all metadata is not stored, so it can only be used for user
checkouts. This mode does not require xattrs. A %OSTREE_REPO_MODE_ARCHIVE
(also known as %OSTREE_REPO_MODE_ARCHIVE_Z2) repository in contrast stores
content files zlib-compressed. It is suitable for non-root-owned
repositories that can be served via a static HTTP server.

Creating an #OstreeRepo does not invoke any file I/O, and thus needs
to be initialized, either from existing contents or as a new
repository. If you have an existing repo, use ostree_repo_open()
to load it from disk and check its validity. To initialize a new
repository in the given filepath, use ostree_repo_create() instead.

To store content in the repo, first start a transaction with
ostree_repo_prepare_transaction().  Then create a
#OstreeMutableTree, and apply functions such as
ostree_repo_write_directory_to_mtree() to traverse a physical
filesystem and write content, possibly multiple times.

Once the #OstreeMutableTree is complete, write all of its metadata
with ostree_repo_write_mtree(), and finally create a commit with
ostree_repo_write_commit().

## Collection IDs

A collection ID is a globally unique identifier which, if set, is used to
identify refs from a repository which are mirrored elsewhere, such as in
mirror repositories or peer to peer networks.

This is separate from the `collection-id` configuration key for a remote, which
is used to store the collection ID of the repository that remote points to.

The collection ID should only be set on an #OstreeRepo if it is the canonical
collection for some refs.

A collection ID must be a reverse DNS name, where the domain name is under the
control of the curator of the collection, so they can demonstrate ownership
of the collection. The later elements in the reverse DNS name can be used to
disambiguate between multiple collections from the same curator. For example,
`org.exampleos.Main` and `org.exampleos.Apps`. For the complete format of
collection IDs, see ostree_validate_collection_id().</doc>
    </docsection>
    <docsection name="ostree-repo-finder-avahi">
      <doc xml:space="preserve"
           filename="ostree-repo-finder-avahi.c"
           line="60">#OstreeRepoFinderAvahi is an implementation of #OstreeRepoFinder which looks
for refs being hosted by peers on the local network.

Any ref which matches by collection ID and ref name is returned as a result,
with no limitations on the peers which host them, as long as they are
accessible over the local network, and their adverts reach this machine via
DNS-SD/mDNS.

For each repository which is found, a result will be returned for the
intersection of the refs being searched for, and the refs in `refs/mirrors`
in the remote repository.

DNS-SD resolution is performed using Avahi, which will continue to scan for
matching peers throughout the lifetime of the process. It’s recommended that
ostree_repo_finder_avahi_start() be called early on in the process’ lifetime,
and the #GMainContext which is passed to ostree_repo_finder_avahi_new()
continues to be iterated until ostree_repo_finder_avahi_stop() is called.

The values stored in DNS-SD TXT records are stored as big-endian whenever
endianness is relevant.

Internally, #OstreeRepoFinderAvahi has an Avahi client, browser and resolver
which work in the background to track all available peers on the local
network. Whenever a resolve request is made using
ostree_repo_finder_resolve_async(), the request is blocked until the
background tracking is in a consistent state (typically this only happens at
startup), and is then answered using the current cache of background data.
The Avahi client tracks the #OstreeRepoFinderAvahi’s connection with the
Avahi D-Bus service. The browser looks for DNS-SD peers on the local network;
and the resolver is used to retrieve information about services advertised by
each peer, including the services’ TXT records.</doc>
    </docsection>
    <docsection name="ostree-repo-finder-config">
      <doc xml:space="preserve"
           filename="ostree-repo-finder-config.c"
           line="38">#OstreeRepoFinderConfig is an implementation of #OstreeRepoFinder which looks
refs up in locally configured remotes and returns remote URIs.
Duplicate remote URIs are combined into a single #OstreeRepoFinderResult
which lists multiple refs.

For all the locally configured remotes which have an `collection-id` specified
(see [ostree.repo-config(5)](man:ostree.repo-config(5))), it finds the
intersection of their refs and the set of refs to resolve. If the
intersection is non-empty, that remote is returned as a result. Remotes which
do not have their `collection-id` key configured are ignored.</doc>
    </docsection>
    <docsection name="ostree-repo-finder-mount">
      <doc xml:space="preserve"
           filename="ostree-repo-finder-mount.c"
           line="38">#OstreeRepoFinderMount is an implementation of #OstreeRepoFinder which looks
refs up in well-known locations on any mounted removable volumes.

For each mounted removable volume, the directory `.ostree/repos.d` will be
enumerated, and all OSTree repositories below it will be searched, in lexical
order, for the requested #OstreeCollectionRefs. The names of the directories
below `.ostree/repos.d` are irrelevant, apart from their lexical ordering.
The directories `.ostree/repo`, `ostree/repo` and `var/lib/flatpak/repo`
will be searched after the others, if they exist.
Non-removable volumes are ignored.

For each repository which is found, a result will be returned for the
intersection of the refs being searched for, and the refs in `refs/heads` and
`refs/mirrors` in the repository on the removable volume.

Symlinks are followed when listing the repositories, so a volume might
contain a single OSTree at some arbitrary path, with a symlink from
`.ostree/repos.d`. Any symlink which points outside the volume’s file
system will be ignored. Repositories are deduplicated in the results.

The volume monitor used to find mounted volumes can be overridden by setting
#OstreeRepoFinderMount:monitor. By default, g_volume_monitor_get() is used.</doc>
    </docsection>
    <docsection name="ostree-repo-finder-override">
      <doc xml:space="preserve"
           filename="ostree-repo-finder-override.c"
           line="38">#OstreeRepoFinderOverride is an implementation of #OstreeRepoFinder which
looks refs up in a list of remotes given by their URI, and returns the URIs
which contain the refs. Duplicate remote URIs are combined into a single
#OstreeRepoFinderResult which lists multiple refs.

Each result is given an #OstreeRepoFinderResult.priority value of 20, which
ranks its results above those from the other default #OstreeRepoFinder
implementations.

Results can only be returned for a ref if a remote and keyring are configured
locally for the collection ID of that ref, otherwise there would be no keys
available to verify signatures on commits for that ref.

This is intended to be used for user-provided overrides and testing software
which uses #OstreeRepoFinder. For production use, #OstreeRepoFinderConfig is
recommended instead.</doc>
    </docsection>
    <docsection name="ostree-sepolicy">
      <doc xml:space="preserve"
           filename="ostree-sepolicy.c"
           line="35">A #OstreeSePolicy object can load the SELinux policy from a given
root and perform labeling.</doc>
    </docsection>
    <docsection name="ostree-sign">
      <doc xml:space="preserve"
           filename="ostree-sign.c"
           line="23">An #OstreeSign interface allows to select and use any available engine
for signing or verifying the commit object or summary file.</doc>
    </docsection>
    <docsection name="ostree-sysroot">
      <doc xml:space="preserve"
           filename="ostree-sysroot.c"
           line="43">A #OstreeSysroot object represents a physical root filesystem,
which in particular should contain a toplevel /ostree directory.
Inside this directory is an #OstreeRepo in /ostree/repo, plus a set
of deployments in /ostree/deploy.

This class is not by default safe against concurrent use by threads
or external processes.  You can use ostree_sysroot_lock() to
perform locking externally.</doc>
    </docsection>
    <docsection name="ostree-sysroot-upgrader">
      <doc xml:space="preserve"
           filename="ostree-sysroot-upgrader.c"
           line="28">The #OstreeSysrootUpgrader class allows performing simple upgrade
operations.</doc>
    </docsection>
    <docsection name="ostree-version">
      <doc xml:space="preserve"
           filename="ostree-version.h"
           line="20">ostree provides macros to check the version of the library
at compile-time</doc>
    </docsection>
    <function name="parse_refspec"
              c:identifier="ostree_parse_refspec"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="147">Split a refspec like `gnome-ostree:gnome-ostree/buildmain` or just
`gnome-ostree/buildmain` into two parts. In the first case, @out_remote
will be set to `gnome-ostree`, and @out_ref to `gnome-ostree/buildmain`.
In the second case (a local ref), @out_remote will be %NULL, and @out_ref
will be `gnome-ostree/buildmain`. In both cases, %TRUE will be returned.</doc>
      <source-position filename="ostree-core.h" line="355"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="161">%TRUE on successful parsing, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="refspec" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="149">A "refspec" string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="out_remote"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   nullable="1"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="150">Return location for 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"
               filename="ostree-core.c"
               line="152">Return location for the ref name</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"
              version="2016.6"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="488">Convert from a "bare" file representation into an
OSTREE_OBJECT_TYPE_FILE stream suitable for ostree pull.</doc>
      <source-position filename="ostree-core.h" line="401"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="input" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="490">File raw content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </parameter>
        <parameter name="file_info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="491">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"
               filename="ostree-core.c"
               line="492">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"
               filename="ostree-core.c"
               line="493">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"
               filename="ostree-core.c"
               line="494">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"
           filename="ostree-core.c"
           line="512">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>
      <source-position filename="ostree-core.h" line="406"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="input" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="514">File raw content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </parameter>
        <parameter name="file_info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="515">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"
               filename="ostree-core.c"
               line="516">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"
               filename="ostree-core.c"
               line="517">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"
               filename="ostree-core.c"
               line="518">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"
               filename="ostree-core.c"
               line="519">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"
           filename="ostree-core.c"
           line="548">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>
      <source-position filename="ostree-core.h" line="411"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="input" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="550">File raw content stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </parameter>
        <parameter name="file_info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="551">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"
               filename="ostree-core.c"
               line="552">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"
               filename="ostree-core.c"
               line="553">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"
               filename="ostree-core.c"
               line="554">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"
               filename="ostree-core.c"
               line="555">Cancellable</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <docsection name="remote">
      <doc xml:space="preserve"
           filename="ostree-remote.c"
           line="38">The #OstreeRemote structure represents the configuration for a single remote
repository. Currently, all configuration is handled internally, and
#OstreeRemote objects are represented by their textual name handle, or by an
opaque pointer (which can be reference counted if needed).

#OstreeRemote provides configuration for accessing a remote, but does not
provide the results of accessing a remote, such as information about what
refs are currently on a remote, or the commits they currently point to. Use
#OstreeRepo in combination with an #OstreeRemote to query that information.</doc>
    </docsection>
    <function name="repo_commit_traverse_iter_cleanup"
              c:identifier="ostree_repo_commit_traverse_iter_cleanup"
              moved-to="RepoCommitTraverseIter.cleanup">
      <source-position filename="ostree-repo.h" line="1044"/>
      <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="2018.6">
      <doc xml:space="preserve"
           filename="ostree-repo-finder.c"
           line="232">A version of ostree_repo_finder_resolve_async() which queries one or more
@finders in parallel and combines the results.</doc>
      <source-position filename="ostree-repo-finder.h" line="60"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="finders" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-finder.c"
               line="234">non-empty array of #OstreeRepoFinders</doc>
          <array c:type="OstreeRepoFinder* const*">
            <type name="RepoFinder" c:type="OstreeRepoFinder*"/>
          </array>
        </parameter>
        <parameter name="refs" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-finder.c"
               line="235">non-empty array of collection–ref pairs to find remotes for</doc>
          <array c:type="const OstreeCollectionRef* const*">
            <type name="CollectionRef" c:type="OstreeCollectionRef*"/>
          </array>
        </parameter>
        <parameter name="parent_repo" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-repo-finder.c"
               line="236">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"
               filename="ostree-repo-finder.c"
               line="238">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"
               filename="ostree-repo-finder.c"
               line="239">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"
               filename="ostree-repo-finder.c"
               line="240">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="2018.6"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-repo-finder.c"
           line="388">Get the results from a ostree_repo_finder_resolve_all_async() operation.</doc>
      <source-position filename="ostree-repo-finder.h" line="65"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-repo-finder.c"
             line="395">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"
               filename="ostree-repo-finder.c"
               line="390">#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="2018.6">
      <doc xml:space="preserve"
           filename="ostree-repo-finder.c"
           line="546">Free the given @results array, freeing each element and the container.</doc>
      <source-position filename="ostree-repo-finder.h" line="160"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="results" transfer-ownership="full">
          <doc xml:space="preserve"
               filename="ostree-repo-finder.c"
               line="548">an #OstreeRepoFinderResult</doc>
          <array c:type="OstreeRepoFinderResult**">
            <type name="RepoFinderResult" c:type="OstreeRepoFinderResult*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="sign_get_all"
              c:identifier="ostree_sign_get_all"
              moved-to="Sign.get_all"
              version="2020.2">
      <doc xml:space="preserve"
           filename="ostree-sign.c"
           line="504">Return an array with newly allocated instances of all available
signing engines; they will not be initialized.</doc>
      <source-position filename="ostree-sign.h" line="117"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="510">an array of signing engines</doc>
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="Sign"/>
        </array>
      </return-value>
    </function>
    <function name="sign_get_by_name"
              c:identifier="ostree_sign_get_by_name"
              moved-to="Sign.get_by_name"
              version="2020.2"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-sign.c"
           line="528">Create a new instance of a signing engine.</doc>
      <source-position filename="ostree-sign.h" line="120"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="ostree-sign.c"
             line="535">New signing engine, or %NULL if the engine is not known</doc>
        <type name="Sign" c:type="OstreeSign*"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="ostree-sign.c"
               line="530">the name of desired signature engine</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_checksum_string"
              c:identifier="ostree_validate_checksum_string"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="125">Use this function to see if input strings are checksums.</doc>
      <source-position filename="ostree-core.h" line="310"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="132">%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"
               filename="ostree-core.c"
               line="127">SHA256 hex string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="validate_collection_id"
              c:identifier="ostree_validate_collection_id"
              version="2018.6"
              throws="1">
      <doc xml:space="preserve"
           filename="ostree-core.c"
           line="278">Check whether the given @collection_id is valid. Return an error if it is
invalid or %NULL.

Valid collection IDs are reverse DNS names:
 * They are composed of 1 or more elements separated by a period (`.`) character.
   All elements must contain at least one character.
 * Each element must only contain the ASCII characters `[A-Z][a-z][0-9]_` and must not
   begin with a digit.
 * They must contain at least one `.` (period) character (and thus at least two elements).
 * They must not begin with a `.` (period) character.
 * They must not exceed 255 characters in length.

(This makes their format identical to D-Bus interface names, for consistency.)</doc>
      <source-position filename="ostree-core.h" line="349"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="297">%TRUE if @collection_id is a valid collection ID, %FALSE if it is invalid
   or %NULL</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="collection_id"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="ostree-core.c"
               line="280">A collection ID</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">
      <source-position filename="ostree-core.h" line="352"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="255">%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"
               filename="ostree-core.c"
               line="252">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">
      <source-position filename="ostree-core.h" line="346"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="222">%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"
               filename="ostree-core.c"
               line="219">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">
      <source-position filename="ostree-core.h" line="482"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2049">%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"
               filename="ostree-core.c"
               line="2046">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"
           filename="ostree-core.c"
           line="2171">Use this to validate the basic structure of @commit, independent of
any other objects it references.</doc>
      <source-position filename="ostree-core.h" line="488"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2179">%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"
               filename="ostree-core.c"
               line="2173">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">
      <source-position filename="ostree-core.h" line="479"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2036">%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"
               filename="ostree-core.c"
               line="2033">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"
           filename="ostree-core.c"
           line="2359">Use this to validate the basic structure of @dirmeta.</doc>
      <source-position filename="ostree-core.h" line="494"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2366">%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"
               filename="ostree-core.c"
               line="2361">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"
           filename="ostree-core.c"
           line="2223">Use this to validate the basic structure of @dirtree, independent of
any other objects it references.</doc>
      <source-position filename="ostree-core.h" line="491"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2231">%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"
               filename="ostree-core.c"
               line="2225">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">
      <source-position filename="ostree-core.h" line="485"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2314">%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"
               filename="ostree-core.c"
               line="2311">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">
      <source-position filename="ostree-core.h" line="476"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="ostree-core.c"
             line="2020">%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>
