<?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"/>
  <include name="Secret" version="1"/>
  <include name="Soup" version="3.0"/>
  <package name="cmatrix-0"/>
  <doc:format name="unknown"/>
  <namespace name="CM"
             version="0"
             shared-library="libcmatrix.so.0u"
             c:identifier-prefixes="Cm"
             c:symbol-prefixes="cm">
    <class name="Account"
           c:symbol-prefix="account"
           c:type="CmAccount"
           parent="User"
           glib:type-name="CmAccount"
           glib:get-type="cm_account_get_type"
           glib:type-struct="AccountClass">
      <source-position filename="src/users/cm-account.h" line="26"/>
      <method name="delete_3pid_async"
              c:identifier="cm_account_delete_3pid_async"
              glib:finish-func="delete_3pid_finish">
        <source-position filename="src/users/cm-account.h" line="56"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Account" c:type="CmAccount*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="type" 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>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_3pid_finish"
              c:identifier="cm_account_delete_3pid_finish"
              throws="1">
        <source-position filename="src/users/cm-account.h" line="62"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Account" c:type="CmAccount*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_3pids_async"
              c:identifier="cm_account_get_3pids_async"
              glib:finish-func="get_3pids_finish">
        <source-position filename="src/users/cm-account.h" line="47"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Account" c:type="CmAccount*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_3pids_finish"
              c:identifier="cm_account_get_3pids_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/users/cm-account.c"
             line="387">Finishes an asynchronous operation started with [method@Account.get_3pids_async].</doc>
        <source-position filename="src/users/cm-account.h" line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/users/cm-account.c"
               line="397">`TRUE` if the operation was successful</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/users/cm-account.c"
                 line="389">The account</doc>
            <type name="Account" c:type="CmAccount*"/>
          </instance-parameter>
          <parameter name="emails"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/users/cm-account.c"
                 line="390">The emails</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="phones"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/users/cm-account.c"
                 line="391">The phone numbers</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/users/cm-account.c"
                 line="392">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_login_id" c:identifier="cm_account_get_login_id">
        <doc xml:space="preserve"
             filename="src/users/cm-account.c"
             line="114">Get the login ID set for the account</doc>
        <source-position filename="src/users/cm-account.h" line="30"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/users/cm-account.c"
               line="120">The login ID of the account</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/users/cm-account.c"
                 line="116">A #CmAccount</doc>
            <type name="Account" c:type="CmAccount*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_display_name_async"
              c:identifier="cm_account_set_display_name_async"
              glib:finish-func="set_display_name_finish">
        <source-position filename="src/users/cm-account.h" line="31"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Account" c:type="CmAccount*"/>
          </instance-parameter>
          <parameter name="name" 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>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_display_name_finish"
              c:identifier="cm_account_set_display_name_finish"
              throws="1">
        <source-position filename="src/users/cm-account.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="Account" c:type="CmAccount*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_login_id" c:identifier="cm_account_set_login_id">
        <doc xml:space="preserve"
             filename="src/users/cm-account.c"
             line="64">Set login ID for the account.  The login can be a
fully qualified matrix ID, or an email address
which shall be used to log in to the server
in to the server.</doc>
        <source-position filename="src/users/cm-account.h" line="28"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/users/cm-account.c"
               line="74">%TRUE if @login_id was successfully 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="src/users/cm-account.c"
                 line="66">A #CmAccount</doc>
            <type name="Account" c:type="CmAccount*"/>
          </instance-parameter>
          <parameter name="login_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/users/cm-account.c"
                 line="67">A login ID for the client.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_user_avatar_async"
              c:identifier="cm_account_set_user_avatar_async"
              glib:finish-func="set_user_avatar_finish">
        <source-position filename="src/users/cm-account.h" line="39"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Account" c:type="CmAccount*"/>
          </instance-parameter>
          <parameter name="image_file" 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>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_user_avatar_finish"
              c:identifier="cm_account_set_user_avatar_finish"
              throws="1">
        <source-position filename="src/users/cm-account.h" line="44"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Account" c:type="CmAccount*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="AccountClass"
            c:type="CmAccountClass"
            glib:is-gtype-struct-for="Account">
      <source-position filename="src/users/cm-account.h" line="26"/>
      <field name="parent_class">
        <type name="UserClass" c:type="CmUserClass"/>
      </field>
    </record>
    <callback name="Callback" c:type="CmCallback">
      <doc xml:space="preserve"
           filename="src/cm-client.h"
           line="27">Type definition for the function that will be called when the client
sees new events.

Usually you don't do much in this callback. The `items-changed`
signals of the list models returned from
e.g. [method@Client.get_joined_rooms] or [method@Room.get_events_list]
are easier to use.

The `GMainContext` for these operations isn't well defined atm, see
https://source.puri.sm/Librem5/libcmatrix/-/issues/24</doc>
      <source-position filename="src/cm-client.h" line="46"/>
      <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="src/cm-client.h"
               line="29">the client that received the events</doc>
          <type name="Client" c:type="CmClient*"/>
        </parameter>
        <parameter name="room"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/cm-client.h"
               line="30">The room (if any) the events belong to</doc>
          <type name="Room" c:type="CmRoom*"/>
        </parameter>
        <parameter name="events" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.h"
               line="31">The events</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Event"/>
          </array>
        </parameter>
        <parameter name="err"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/cm-client.h"
               line="32">A recoverable error</doc>
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="4">
          <doc xml:space="preserve"
               filename="src/cm-client.h"
               line="33">The user data passed in [method@Client.set_sync_callback]</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Client"
           c:symbol-prefix="client"
           c:type="CmClient"
           parent="GObject.Object"
           glib:type-name="CmClient"
           glib:get-type="cm_client_get_type"
           glib:type-struct="ClientClass">
      <doc xml:space="preserve"
           filename="src/cm-client.c"
           line="42">A Matrix client.

A client represents a Matrix account on a device. See
[method@Client.get_account] and [method@Client.get_device_id].

Is responsible for logging in a user and interfacing with the user's home
server.

It can inform you about new events using a callback (see
[method@Client.set_sync_callback]).</doc>
      <source-position filename="src/cm-client.h" line="24"/>
      <constructor name="new" c:identifier="cm_client_new">
        <source-position filename="src/cm-client.h" line="52"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="618">A #CmClient</doc>
          <type name="Client" c:type="CmClient*"/>
        </return-value>
      </constructor>
      <method name="add_pusher_async"
              c:identifier="cm_client_add_pusher_async"
              version="0.0.1"
              glib:finish-func="add_pusher_finish">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3437">Add a pusher to the list of pushers for this client.</doc>
        <source-position filename="src/cm-client.h" line="128"/>
        <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="src/cm-client.c"
                 line="3439">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="pusher" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3440">The pusher to set</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3441">Optional `GCancellable` object, `NULL` to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3442">A #GAsyncReadyCallback</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="src/cm-client.c"
                 line="3443">The user data for @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_pusher_finish"
              c:identifier="cm_client_add_pusher_finish"
              version="0.0.1"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3474">Finishes an asynchronous operation started with
[method@Client.add_pusher_async].</doc>
        <source-position filename="src/cm-client.h" line="125"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="3483">`TRUE` if the operation was successful otherwise `FALSE`</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3476">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3477">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_pusher_sync"
              c:identifier="cm_client_add_pusher_sync"
              version="0.0.1"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3510">Add a pusher to the list of pushers known for this client.

This is a synchronous method. See [method@Client.add_pusher_async] for
an asynchronous version.</doc>
        <source-position filename="src/cm-client.h" line="133"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="3522">`TRUE` if the operation was successful otherwise `FALSE`</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3512">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="pusher" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3513">The pusher to add</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3514">Optional `GCancellable` object, `NULL` to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="can_connect" c:identifier="cm_client_can_connect">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="2940">Check if @self can be connected to homeserver with current
network state.  This function is a bit dumb: returning
%TRUE shall not ensure that the @self is connectable.
But if %FALSE is returned, @self shall not be
able to connect.</doc>
        <source-position filename="src/cm-client.h" line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="2950">%TRUE if heuristics says @self can be connected.
%FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="2942">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_access_token"
              c:identifier="cm_client_get_access_token">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1490">Get the access token of the client @self</doc>
        <source-position filename="src/cm-client.h" line="74"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1496">The access token set</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1492">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_account" c:identifier="cm_client_get_account">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="884">Get the account associated with the client.</doc>
        <source-position filename="src/cm-client.h" line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="890">The account</doc>
          <type name="Account" c:type="CmAccount*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="886">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_device_id" c:identifier="cm_client_get_device_id">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1558">Get the device ID of the client @self.
Device ID may be available only after
a successful login.</doc>
        <source-position filename="src/cm-client.h" line="77"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1566">The Device ID string</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1560">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_device_name" c:identifier="cm_client_get_device_name">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1594">Get the device name of the client @self
as set with [method@Client.set_device_name].</doc>
        <source-position filename="src/cm-client.h" line="80"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1601">The Device name string</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1596">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ed25519_key" c:identifier="cm_client_get_ed25519_key">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1652">Get the public ed25519 key of own device.</doc>
        <source-position filename="src/cm-client.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1654">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_enabled" c:identifier="cm_client_get_enabled">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1208">Wheter @self has been enabled.

Enabled client doesn't necessarily mean the client
has logged in or is in sync with server.
Also See cm_client_is_sync().</doc>
        <source-position filename="src/cm-client.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1218">%TRUE if @self has been enabled, %FALSE
otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1210">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_homeserver"
              c:identifier="cm_client_get_homeserver"
              glib:async-func="get_homeserver_async">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1379">Get the Home server set for the client.</doc>
        <source-position filename="src/cm-client.h" line="66"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1385">The Home server for the client</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1381">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_homeserver_async"
              c:identifier="cm_client_get_homeserver_async"
              glib:finish-func="get_homeserver_finish"
              glib:sync-func="get_homeserver">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1804">Tries to determine the home server based on the user data set on
the [type@Account].

Run [method@Client.get_homeserver_finish] to get the result.</doc>
        <source-position filename="src/cm-client.h" line="97"/>
        <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="src/cm-client.c"
                 line="1806">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1807">A #GCancellable</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="src/cm-client.c"
                 line="1808">A #GAsyncReadyCallback</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="src/cm-client.c"
                 line="1809">The user data for @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_homeserver_finish"
              c:identifier="cm_client_get_homeserver_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1857">Finishes an asynchronous operation started with [method@Client.get_homeserver_async].</doc>
        <source-position filename="src/cm-client.h" line="101"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1865">The home server</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1859">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1860">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_homeserver_versions"
              c:identifier="cm_client_get_homeserver_versions"
              version="0.0.3">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1398">Get the suppported Matrix protocol versions of the home server set
for the client.</doc>
        <source-position filename="src/cm-client.h" line="68"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1405">The home server versions</doc>
          <array c:type="const char* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1400">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_invited_rooms"
              c:identifier="cm_client_get_invited_rooms">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3068">Get the list of invited rooms with
#CmRoom as the members.</doc>
        <source-position filename="src/cm-client.h" line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="3075">A #GListModel</doc>
          <type name="Gio.ListModel" c:type="GListModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3070">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_joined_rooms"
              c:identifier="cm_client_get_joined_rooms">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3051">Get the list of joined rooms with
#CmRoom as the members.</doc>
        <source-position filename="src/cm-client.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="3058">A #GListModel</doc>
          <type name="Gio.ListModel" c:type="GListModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3053">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_key_verifications"
              c:identifier="cm_client_get_key_verifications">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3085">Get the key verifications</doc>
        <source-position filename="src/cm-client.h" line="112"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="3091">Get the key verifications as list model</doc>
          <type name="Gio.ListModel" c:type="GListModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3087">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_logged_in" c:identifier="cm_client_get_logged_in">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="2691">Gets whether the user is currently logged in.

Logging in with libcmatrix is a multi step process. This function
returns `TRUE` when all steps (like connecting to the home server,
logging in with password, getting an access token, …) were
performed successfully.

Use [method@Client.get_logging_in] to check whether the login process
is currently ongoing.</doc>
        <source-position filename="src/cm-client.h" line="109"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="2704">`TRUE` when log in was successful, otherwise `FALSE`.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_logging_in" c:identifier="cm_client_get_logging_in">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="2674">Gets whether the user is currently being logged in.

See [method@Client.get_logged_in].</doc>
        <source-position filename="src/cm-client.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="2681">`TRUE` when logging in is in progress.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_password" c:identifier="cm_client_get_password">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1454">Get the password set for the @self.</doc>
        <source-position filename="src/cm-client.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1460">The password string</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1456">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pickle_key" c:identifier="cm_client_get_pickle_key">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1635">Get the pickle password</doc>
        <source-position filename="src/cm-client.h" line="83"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1637">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pushers_async"
              c:identifier="cm_client_get_pushers_async"
              version="0.0.1"
              glib:finish-func="get_pushers_finish">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3272">Get the currently configured push servers.

This is a asynchronous method. See [method@Client.get_pushers_sync] for
an synchronous version.</doc>
        <source-position filename="src/cm-client.h" line="118"/>
        <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="src/cm-client.c"
                 line="3274">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3275">Optional `GCancellable` object, `NULL` to ignore.</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="src/cm-client.c"
                 line="3276">A `GAsyncReadyCallback`</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="src/cm-client.c"
                 line="3277">The user data for @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_pushers_finish"
              c:identifier="cm_client_get_pushers_finish"
              version="0.0.1"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3306">Finishes an asynchronous operation started with
[method@Client.get_pushers_async] and returns an array
of configured pushers. Destroy with `g_ptr_array_unref`.</doc>
        <source-position filename="src/cm-client.h" line="115"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="3316">The array of pushers.</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Pusher"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3308">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3309">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_pushers_sync"
              c:identifier="cm_client_get_pushers_sync"
              version="0.0.1"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3344">Get the currently configured push servers.

This is a synchronous method. See [method@Client.get_pushers_async] for
an asynchronous version.</doc>
        <source-position filename="src/cm-client.h" line="122"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="3355">The array of pushers stream.</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Pusher"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3346">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3347">Optional `GCancellable` object, `NULL` to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_user_id" c:identifier="cm_client_get_user_id">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1312">Get the matrix user ID of the client @self.  The User ID may be
available only after the login has succeeded and may return %NULL
otherwise.
If you need the login id before that use [method@Account.get_login_id].</doc>
        <source-position filename="src/cm-client.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1321">The matrix user ID of the client</doc>
          <type name="GLib.RefString" c:type="GRefString*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1314">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_sync" c:identifier="cm_client_is_sync">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3004">Check whether the client @self is in
sync with the server or not.</doc>
        <source-position filename="src/cm-client.h" line="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="3011">%TRUE if in sync with server.
%FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3006">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="join_room_async"
              c:identifier="cm_client_join_room_async"
              glib:finish-func="join_room_finish">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1686">Tries to join a room by it's room id.

Run [method@Client.join_room_finish] to get the result.</doc>
        <source-position filename="src/cm-client.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="src/cm-client.c"
                 line="1688">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="id_or_alias" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1689">The id or alias of the room to join</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="src/cm-client.c"
                 line="1690">Optional #GCancellable object, %NULL to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1691">The callback to invoke</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="src/cm-client.c"
                 line="1692">The user data for @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="join_room_finish"
              c:identifier="cm_client_join_room_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1726">Finishes an asynchronous operation started with [method@Client.join_room_async].</doc>
        <source-position filename="src/cm-client.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1734">%TRUE if joined successfully, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1728">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1729">The #GAsyncResult passed to your callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="join_room_sync"
              c:identifier="cm_client_join_room_sync"
              version="0.0.2"
              throws="1">
        <source-position filename="src/cm-client.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1764">%TRUE if joined successfully, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1760">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="id_or_alias" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1761">The id or alias of the room to join</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_pusher_async"
              c:identifier="cm_client_remove_pusher_async"
              version="0.0.1"
              glib:finish-func="remove_pusher_finish">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3580">Remove a pusher from the list of pushers known for the client.</doc>
        <source-position filename="src/cm-client.h" line="140"/>
        <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="src/cm-client.c"
                 line="3582">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="pusher" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3583">The pusher to remove</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3584">Optional `GCancellable` object, `NULL` to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3585">Callback function to invoke when the information is ready.</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="src/cm-client.c"
                 line="3586">The user data for @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_pusher_finish"
              c:identifier="cm_client_remove_pusher_finish"
              version="0.0.1"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3619">Finishes an asynchronous operation started with
[method@Client.remove_pusher_async].</doc>
        <source-position filename="src/cm-client.h" line="137"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="3628">`TRUE` if the operation was successful otherwise `FALSE`</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3621">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3622">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_pusher_sync"
              c:identifier="cm_client_remove_pusher_sync"
              version="0.0.1"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3655">Remove a pusher from the list of pushers known for the client.

This is a synchronous method. See [method@Client.remove_pusher_async] for
an asynchronous version.</doc>
        <source-position filename="src/cm-client.h" line="145"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="3667">`TRUE` if the operation was successful otherwise `FALSE`</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3657">The client</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="pusher" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3658">The pusher to remove</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="3659">Optional `GCancellable` object, `NULL` to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_access_token"
              c:identifier="cm_client_set_access_token">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1470">Set the access token to be used for sync.
If set to %NULL, @self shall login using password
And use the newly got access token for sync.</doc>
        <source-position filename="src/cm-client.h" line="72"/>
        <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="src/cm-client.c"
                 line="1472">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="access_token"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1473">The access token</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_device_id" c:identifier="cm_client_set_device_id">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1539">Set the device ID for @client.</doc>
        <source-position filename="src/cm-client.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="src/cm-client.c"
                 line="1541">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="device_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1542">The device ID</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_device_name" c:identifier="cm_client_set_device_name">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1576">Set the device name which shall be used as
the human readable identifier for the device</doc>
        <source-position filename="src/cm-client.h" line="78"/>
        <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="src/cm-client.c"
                 line="1578">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="device_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1579">The device name string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_enabled" c:identifier="cm_client_set_enabled">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1109">Whether to enable the client and begin
sync with the server.</doc>
        <source-position filename="src/cm-client.h" line="54"/>
        <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="src/cm-client.c"
                 line="1111">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="enable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1112">Whether to enable client</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_homeserver" c:identifier="cm_client_set_homeserver">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1331">Set the matrix Home server URL for the client.</doc>
        <source-position filename="src/cm-client.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1338">%TRUE if @homeserver is valid,
%FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1333">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="homeserver" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1334">The homserver URL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_password" c:identifier="cm_client_set_password">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1417">Set the password for the client.  You can't
set the password once the client is enabled,
except in the callback when the client failed
to login due to wrong password.</doc>
        <source-position filename="src/cm-client.h" line="69"/>
        <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="src/cm-client.c"
                 line="1419">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="password" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1420">The password for the @self</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pickle_key" c:identifier="cm_client_set_pickle_key">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1611">Set the account pickle key.  This key is used as
the password to decrypt the encrypted pickle loaded
from db, and so, this should be set before the db
is set.</doc>
        <source-position filename="src/cm-client.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="src/cm-client.c"
                 line="1613">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="pickle_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1614">The pickle key</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sync_callback"
              c:identifier="cm_client_set_sync_callback">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1230">Set the sync callback which shall be executed for the events
happening in @self. Set this early after creating the client so any
async operations syncing the client state with the server can
invoke it already.

Passing `NULL` for the callback removes an existing callback.</doc>
        <source-position filename="src/cm-client.h" line="57"/>
        <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="src/cm-client.c"
                 line="1232">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1233">A #CmCallback</doc>
            <type name="Callback" c:type="CmCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1234">The user data passed to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1235">Function to call when the callback is removed</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_user_id" c:identifier="cm_client_set_user_id">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="1261">Set the client matrix user ID.  This can be set only
before the account has been enabled and never after.</doc>
        <source-position filename="src/cm-client.h" line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-client.c"
               line="1269">%TRUE if @matrix_user_id was successfully 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="src/cm-client.c"
                 line="1263">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
          <parameter name="matrix_user_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-client.c"
                 line="1264">A fully qualified matrix user ID</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="start_sync" c:identifier="cm_client_start_sync">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="2982">Start sync with server.  If @self is already
in sync or in the process to do so, this method
simply returns.</doc>
        <source-position filename="src/cm-client.h" line="105"/>
        <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="src/cm-client.c"
                 line="2984">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="stop_sync" c:identifier="cm_client_stop_sync">
        <doc xml:space="preserve"
             filename="src/cm-client.c"
             line="3024">Stop sync with server.</doc>
        <source-position filename="src/cm-client.h" line="107"/>
        <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="src/cm-client.c"
                 line="3026">A #CmClient</doc>
            <type name="Client" c:type="CmClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="home-server"
                readable="0"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <glib:signal name="status-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ClientClass"
            c:type="CmClientClass"
            glib:is-gtype-struct-for="Client">
      <source-position filename="src/cm-client.h" line="24"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="ContentType"
                 glib:type-name="CmContentType"
                 glib:get-type="cm_content_type_get_type"
                 c:type="CmContentType">
      <member name="unknown"
              value="0"
              c:identifier="CM_CONTENT_TYPE_UNKNOWN"
              glib:nick="unknown"
              glib:name="CM_CONTENT_TYPE_UNKNOWN">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="80">The content type is unknown</doc>
      </member>
      <member name="text"
              value="1"
              c:identifier="CM_CONTENT_TYPE_TEXT"
              glib:nick="text"
              glib:name="CM_CONTENT_TYPE_TEXT">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="81">A text, possibly including formatted text</doc>
      </member>
      <member name="emote"
              value="2"
              c:identifier="CM_CONTENT_TYPE_EMOTE"
              glib:nick="emote"
              glib:name="CM_CONTENT_TYPE_EMOTE">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="82">An emote action (similar to /me in IRC)</doc>
      </member>
      <member name="notice"
              value="3"
              c:identifier="CM_CONTENT_TYPE_NOTICE"
              glib:nick="notice"
              glib:name="CM_CONTENT_TYPE_NOTICE">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="83">A notice is similar to text that is usually used by automated messages from bots</doc>
      </member>
      <member name="image"
              value="4"
              c:identifier="CM_CONTENT_TYPE_IMAGE"
              glib:nick="image"
              glib:name="CM_CONTENT_TYPE_IMAGE">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="84">An image</doc>
      </member>
      <member name="file"
              value="5"
              c:identifier="CM_CONTENT_TYPE_FILE"
              glib:nick="file"
              glib:name="CM_CONTENT_TYPE_FILE">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="85">A generic file</doc>
      </member>
      <member name="location"
              value="6"
              c:identifier="CM_CONTENT_TYPE_LOCATION"
              glib:nick="location"
              glib:name="CM_CONTENT_TYPE_LOCATION">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="86">Location information in the form of a geo URI (RFC5870)</doc>
      </member>
      <member name="audio"
              value="7"
              c:identifier="CM_CONTENT_TYPE_AUDIO"
              glib:nick="audio"
              glib:name="CM_CONTENT_TYPE_AUDIO">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="87">An audio clip</doc>
      </member>
      <member name="video"
              value="8"
              c:identifier="CM_CONTENT_TYPE_VIDEO"
              glib:nick="video"
              glib:name="CM_CONTENT_TYPE_VIDEO">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="88">A video clip</doc>
      </member>
      <member name="server_notice"
              value="9"
              c:identifier="CM_CONTENT_TYPE_SERVER_NOTICE"
              glib:nick="server-notice"
              glib:name="CM_CONTENT_TYPE_SERVER_NOTICE">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="89">A server notice</doc>
      </member>
    </enumeration>
    <record name="Db" c:type="CmDb" disguised="1" opaque="1">
      <source-position filename="src/cm-types.h" line="33"/>
    </record>
    <enumeration name="Error"
                 glib:type-name="CmError"
                 glib:get-type="cm_error_get_type"
                 c:type="CmError"
                 glib:error-domain="cm-error-quark">
      <doc xml:space="preserve"
           filename="src/cm-enums.h"
           line="14">The Error returned by the Matrix Server
See https://matrix.org/docs/spec/client_server/r0.6.1#api-standards
for details.</doc>
      <member name="forbidden"
              value="1"
              c:identifier="CM_ERROR_FORBIDDEN"
              glib:nick="forbidden"
              glib:name="CM_ERROR_FORBIDDEN">
      </member>
      <member name="unknown_token"
              value="2"
              c:identifier="CM_ERROR_UNKNOWN_TOKEN"
              glib:nick="unknown-token"
              glib:name="CM_ERROR_UNKNOWN_TOKEN">
      </member>
      <member name="missing_token"
              value="3"
              c:identifier="CM_ERROR_MISSING_TOKEN"
              glib:nick="missing-token"
              glib:name="CM_ERROR_MISSING_TOKEN">
      </member>
      <member name="bad_json"
              value="4"
              c:identifier="CM_ERROR_BAD_JSON"
              glib:nick="bad-json"
              glib:name="CM_ERROR_BAD_JSON">
      </member>
      <member name="not_json"
              value="5"
              c:identifier="CM_ERROR_NOT_JSON"
              glib:nick="not-json"
              glib:name="CM_ERROR_NOT_JSON">
      </member>
      <member name="not_found"
              value="6"
              c:identifier="CM_ERROR_NOT_FOUND"
              glib:nick="not-found"
              glib:name="CM_ERROR_NOT_FOUND">
      </member>
      <member name="limit_exceeded"
              value="7"
              c:identifier="CM_ERROR_LIMIT_EXCEEDED"
              glib:nick="limit-exceeded"
              glib:name="CM_ERROR_LIMIT_EXCEEDED">
      </member>
      <member name="unknown"
              value="8"
              c:identifier="CM_ERROR_UNKNOWN"
              glib:nick="unknown"
              glib:name="CM_ERROR_UNKNOWN">
      </member>
      <member name="unrecognized"
              value="9"
              c:identifier="CM_ERROR_UNRECOGNIZED"
              glib:nick="unrecognized"
              glib:name="CM_ERROR_UNRECOGNIZED">
      </member>
      <member name="unauthorized"
              value="10"
              c:identifier="CM_ERROR_UNAUTHORIZED"
              glib:nick="unauthorized"
              glib:name="CM_ERROR_UNAUTHORIZED">
      </member>
      <member name="user_deactivated"
              value="11"
              c:identifier="CM_ERROR_USER_DEACTIVATED"
              glib:nick="user-deactivated"
              glib:name="CM_ERROR_USER_DEACTIVATED">
      </member>
      <member name="user_in_use"
              value="12"
              c:identifier="CM_ERROR_USER_IN_USE"
              glib:nick="user-in-use"
              glib:name="CM_ERROR_USER_IN_USE">
      </member>
      <member name="invalid_username"
              value="13"
              c:identifier="CM_ERROR_INVALID_USERNAME"
              glib:nick="invalid-username"
              glib:name="CM_ERROR_INVALID_USERNAME">
      </member>
      <member name="room_in_use"
              value="14"
              c:identifier="CM_ERROR_ROOM_IN_USE"
              glib:nick="room-in-use"
              glib:name="CM_ERROR_ROOM_IN_USE">
      </member>
      <member name="invalid_room_state"
              value="15"
              c:identifier="CM_ERROR_INVALID_ROOM_STATE"
              glib:nick="invalid-room-state"
              glib:name="CM_ERROR_INVALID_ROOM_STATE">
      </member>
      <member name="threepid_in_use"
              value="16"
              c:identifier="CM_ERROR_THREEPID_IN_USE"
              glib:nick="threepid-in-use"
              glib:name="CM_ERROR_THREEPID_IN_USE">
      </member>
      <member name="threepid_not_found"
              value="17"
              c:identifier="CM_ERROR_THREEPID_NOT_FOUND"
              glib:nick="threepid-not-found"
              glib:name="CM_ERROR_THREEPID_NOT_FOUND">
      </member>
      <member name="threepid_auth_failed"
              value="18"
              c:identifier="CM_ERROR_THREEPID_AUTH_FAILED"
              glib:nick="threepid-auth-failed"
              glib:name="CM_ERROR_THREEPID_AUTH_FAILED">
      </member>
      <member name="threepid_denied"
              value="19"
              c:identifier="CM_ERROR_THREEPID_DENIED"
              glib:nick="threepid-denied"
              glib:name="CM_ERROR_THREEPID_DENIED">
      </member>
      <member name="server_not_trusted"
              value="20"
              c:identifier="CM_ERROR_SERVER_NOT_TRUSTED"
              glib:nick="server-not-trusted"
              glib:name="CM_ERROR_SERVER_NOT_TRUSTED">
      </member>
      <member name="unsupported_room_version"
              value="21"
              c:identifier="CM_ERROR_UNSUPPORTED_ROOM_VERSION"
              glib:nick="unsupported-room-version"
              glib:name="CM_ERROR_UNSUPPORTED_ROOM_VERSION">
      </member>
      <member name="incompatible_room_version"
              value="22"
              c:identifier="CM_ERROR_INCOMPATIBLE_ROOM_VERSION"
              glib:nick="incompatible-room-version"
              glib:name="CM_ERROR_INCOMPATIBLE_ROOM_VERSION">
      </member>
      <member name="bad_state"
              value="23"
              c:identifier="CM_ERROR_BAD_STATE"
              glib:nick="bad-state"
              glib:name="CM_ERROR_BAD_STATE">
      </member>
      <member name="guest_access_forbidden"
              value="24"
              c:identifier="CM_ERROR_GUEST_ACCESS_FORBIDDEN"
              glib:nick="guest-access-forbidden"
              glib:name="CM_ERROR_GUEST_ACCESS_FORBIDDEN">
      </member>
      <member name="captcha_needed"
              value="25"
              c:identifier="CM_ERROR_CAPTCHA_NEEDED"
              glib:nick="captcha-needed"
              glib:name="CM_ERROR_CAPTCHA_NEEDED">
      </member>
      <member name="captcha_invalid"
              value="26"
              c:identifier="CM_ERROR_CAPTCHA_INVALID"
              glib:nick="captcha-invalid"
              glib:name="CM_ERROR_CAPTCHA_INVALID">
      </member>
      <member name="missing_param"
              value="27"
              c:identifier="CM_ERROR_MISSING_PARAM"
              glib:nick="missing-param"
              glib:name="CM_ERROR_MISSING_PARAM">
      </member>
      <member name="invalid_param"
              value="28"
              c:identifier="CM_ERROR_INVALID_PARAM"
              glib:nick="invalid-param"
              glib:name="CM_ERROR_INVALID_PARAM">
      </member>
      <member name="too_large"
              value="29"
              c:identifier="CM_ERROR_TOO_LARGE"
              glib:nick="too-large"
              glib:name="CM_ERROR_TOO_LARGE">
      </member>
      <member name="exclusive"
              value="30"
              c:identifier="CM_ERROR_EXCLUSIVE"
              glib:nick="exclusive"
              glib:name="CM_ERROR_EXCLUSIVE">
      </member>
      <member name="resource_limit_exceeded"
              value="31"
              c:identifier="CM_ERROR_RESOURCE_LIMIT_EXCEEDED"
              glib:nick="resource-limit-exceeded"
              glib:name="CM_ERROR_RESOURCE_LIMIT_EXCEEDED">
      </member>
      <member name="cannot_leave_server_notice_room"
              value="32"
              c:identifier="CM_ERROR_CANNOT_LEAVE_SERVER_NOTICE_ROOM"
              glib:nick="cannot-leave-server-notice-room"
              glib:name="CM_ERROR_CANNOT_LEAVE_SERVER_NOTICE_ROOM">
      </member>
      <member name="bad_password"
              value="-1"
              c:identifier="CM_ERROR_BAD_PASSWORD"
              glib:nick="bad-password"
              glib:name="CM_ERROR_BAD_PASSWORD">
      </member>
      <member name="no_home_server"
              value="-2"
              c:identifier="CM_ERROR_NO_HOME_SERVER"
              glib:nick="no-home-server"
              glib:name="CM_ERROR_NO_HOME_SERVER">
      </member>
      <member name="bad_home_server"
              value="-3"
              c:identifier="CM_ERROR_BAD_HOME_SERVER"
              glib:nick="bad-home-server"
              glib:name="CM_ERROR_BAD_HOME_SERVER">
      </member>
      <member name="user_device_changed"
              value="-4"
              c:identifier="CM_ERROR_USER_DEVICE_CHANGED"
              glib:nick="user-device-changed"
              glib:name="CM_ERROR_USER_DEVICE_CHANGED">
      </member>
      <member name="bad_push_gateway"
              value="-5"
              c:identifier="CM_ERROR_BAD_PUSH_GATEWAY"
              glib:nick="bad-push-gateway"
              glib:name="CM_ERROR_BAD_PUSH_GATEWAY">
      </member>
      <function name="quark" c:identifier="cm_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <class name="Event"
           c:symbol-prefix="event"
           c:type="CmEvent"
           parent="GObject.Object"
           glib:type-name="CmEvent"
           glib:get-type="cm_event_get_type"
           glib:type-struct="EventClass">
      <source-position filename="src/events/cm-event.h" line="39"/>
      <virtual-method name="generate_json">
        <source-position filename="src/events/cm-event.h" line="34"/>
        <return-value transfer-ownership="none" nullable="1">
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Event" c:type="CmEvent*"/>
          </instance-parameter>
          <parameter name="room"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_api_url">
        <source-position filename="src/events/cm-event.h" line="36"/>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Event" c:type="CmEvent*"/>
          </instance-parameter>
          <parameter name="room"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_id" c:identifier="cm_event_get_id">
        <source-position filename="src/events/cm-event.h" line="41"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Event" c:type="CmEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_m_type" c:identifier="cm_event_get_m_type">
        <doc xml:space="preserve"
             filename="src/events/cm-event.c"
             line="302">Get the Matrix type of an event.

The method is called `cm_event_get_m_type()` to not conflict with
`cm_event_get_type()` which gets the type in the GObject type
system.</doc>
        <source-position filename="src/events/cm-event.h" line="43"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/events/cm-event.c"
               line="312">The message type</doc>
          <type name="EventType" c:type="CmEventType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/events/cm-event.c"
                 line="304">The event</doc>
            <type name="Event" c:type="CmEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sender" c:identifier="cm_event_get_sender">
        <doc xml:space="preserve"
             filename="src/events/cm-event.c"
             line="513">Get the sender of the event</doc>
        <source-position filename="src/events/cm-event.h" line="42"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/events/cm-event.c"
               line="519">The sender</doc>
          <type name="User" c:type="CmUser*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/events/cm-event.c"
                 line="515">The event</doc>
            <type name="Event" c:type="CmEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_state" c:identifier="cm_event_get_state">
        <source-position filename="src/events/cm-event.h" line="44"/>
        <return-value transfer-ownership="none">
          <type name="EventState" c:type="CmEventState"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Event" c:type="CmEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_time_stamp" c:identifier="cm_event_get_time_stamp">
        <doc xml:space="preserve"
             filename="src/events/cm-event.c"
             line="594">Get the event time stamp in milliseconds</doc>
        <source-position filename="src/events/cm-event.h" line="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/events/cm-event.c"
               line="600">The milliseconds since Unix epoc</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/events/cm-event.c"
                 line="596">A #CmEvent</doc>
            <type name="Event" c:type="CmEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_encrypted" c:identifier="cm_event_is_encrypted">
        <source-position filename="src/events/cm-event.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="Event" c:type="CmEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="updated" when="last">
        <doc xml:space="preserve"
             filename="src/events/cm-event.c"
             line="153">Emitted when the state of the event changed. See
[type@EventState] and [method@Event.get_state].</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="EventClass"
            c:type="CmEventClass"
            glib:is-gtype-struct-for="Event">
      <source-position filename="src/events/cm-event.h" line="39"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="generate_json">
        <callback name="generate_json">
          <source-position filename="src/events/cm-event.h" line="34"/>
          <return-value transfer-ownership="none" nullable="1">
            <type name="gpointer" c:type="gpointer"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Event" c:type="CmEvent*"/>
            </parameter>
            <parameter name="room"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_api_url">
        <callback name="get_api_url">
          <source-position filename="src/events/cm-event.h" line="36"/>
          <return-value transfer-ownership="full">
            <type name="utf8" c:type="char*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Event" c:type="CmEvent*"/>
            </parameter>
            <parameter name="room"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="EventState"
                 glib:type-name="CmEventState"
                 glib:get-type="cm_event_state_get_type"
                 c:type="CmEventState">
      <member name="unknown"
              value="0"
              c:identifier="CM_EVENT_STATE_UNKNOWN"
              glib:nick="unknown"
              glib:name="CM_EVENT_STATE_UNKNOWN">
      </member>
      <member name="draft"
              value="1"
              c:identifier="CM_EVENT_STATE_DRAFT"
              glib:nick="draft"
              glib:name="CM_EVENT_STATE_DRAFT">
      </member>
      <member name="waiting"
              value="2"
              c:identifier="CM_EVENT_STATE_WAITING"
              glib:nick="waiting"
              glib:name="CM_EVENT_STATE_WAITING">
      </member>
      <member name="sending"
              value="3"
              c:identifier="CM_EVENT_STATE_SENDING"
              glib:nick="sending"
              glib:name="CM_EVENT_STATE_SENDING">
      </member>
      <member name="sending_failed"
              value="4"
              c:identifier="CM_EVENT_STATE_SENDING_FAILED"
              glib:nick="sending-failed"
              glib:name="CM_EVENT_STATE_SENDING_FAILED">
      </member>
      <member name="sent"
              value="5"
              c:identifier="CM_EVENT_STATE_SENT"
              glib:nick="sent"
              glib:name="CM_EVENT_STATE_SENT">
      </member>
      <member name="received"
              value="6"
              c:identifier="CM_EVENT_STATE_RECEIVED"
              glib:nick="received"
              glib:name="CM_EVENT_STATE_RECEIVED">
      </member>
    </enumeration>
    <enumeration name="EventType"
                 glib:type-name="CmEventType"
                 glib:get-type="cm_event_type_get_type"
                 c:type="CmEventType">
      <doc xml:space="preserve"
           filename="src/cm-enums.h"
           line="104">The type of a Matrix event.

See [method@Event.get_m_type].</doc>
      <member name="unknown"
              value="0"
              c:identifier="CM_M_UNKNOWN"
              glib:nick="unknown"
              glib:name="CM_M_UNKNOWN">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="106">The event type is unknown</doc>
      </member>
      <member name="call_answer"
              value="1"
              c:identifier="CM_M_CALL_ANSWER"
              glib:nick="call-answer"
              glib:name="CM_M_CALL_ANSWER">
      </member>
      <member name="call_asserted_identity"
              value="2"
              c:identifier="CM_M_CALL_ASSERTED_IDENTITY"
              glib:nick="call-asserted-identity"
              glib:name="CM_M_CALL_ASSERTED_IDENTITY">
      </member>
      <member name="call_asserted_identity_prefix"
              value="3"
              c:identifier="CM_M_CALL_ASSERTED_IDENTITY_PREFIX"
              glib:nick="call-asserted-identity-prefix"
              glib:name="CM_M_CALL_ASSERTED_IDENTITY_PREFIX">
      </member>
      <member name="call_candidates"
              value="4"
              c:identifier="CM_M_CALL_CANDIDATES"
              glib:nick="call-candidates"
              glib:name="CM_M_CALL_CANDIDATES">
      </member>
      <member name="call_hangup"
              value="5"
              c:identifier="CM_M_CALL_HANGUP"
              glib:nick="call-hangup"
              glib:name="CM_M_CALL_HANGUP">
      </member>
      <member name="call_invite"
              value="6"
              c:identifier="CM_M_CALL_INVITE"
              glib:nick="call-invite"
              glib:name="CM_M_CALL_INVITE">
      </member>
      <member name="call_negotiate"
              value="7"
              c:identifier="CM_M_CALL_NEGOTIATE"
              glib:nick="call-negotiate"
              glib:name="CM_M_CALL_NEGOTIATE">
      </member>
      <member name="call_reject"
              value="8"
              c:identifier="CM_M_CALL_REJECT"
              glib:nick="call-reject"
              glib:name="CM_M_CALL_REJECT">
      </member>
      <member name="call_replaces"
              value="9"
              c:identifier="CM_M_CALL_REPLACES"
              glib:nick="call-replaces"
              glib:name="CM_M_CALL_REPLACES">
      </member>
      <member name="call_select_answer"
              value="10"
              c:identifier="CM_M_CALL_SELECT_ANSWER"
              glib:nick="call-select-answer"
              glib:name="CM_M_CALL_SELECT_ANSWER">
      </member>
      <member name="direct"
              value="11"
              c:identifier="CM_M_DIRECT"
              glib:nick="direct"
              glib:name="CM_M_DIRECT">
      </member>
      <member name="dummy"
              value="12"
              c:identifier="CM_M_DUMMY"
              glib:nick="dummy"
              glib:name="CM_M_DUMMY">
      </member>
      <member name="forwarded_room_key"
              value="13"
              c:identifier="CM_M_FORWARDED_ROOM_KEY"
              glib:nick="forwarded-room-key"
              glib:name="CM_M_FORWARDED_ROOM_KEY">
      </member>
      <member name="fully_read"
              value="14"
              c:identifier="CM_M_FULLY_READ"
              glib:nick="fully-read"
              glib:name="CM_M_FULLY_READ">
      </member>
      <member name="ignored_user_list"
              value="15"
              c:identifier="CM_M_IGNORED_USER_LIST"
              glib:nick="ignored-user-list"
              glib:name="CM_M_IGNORED_USER_LIST">
      </member>
      <member name="key_verification_accept"
              value="16"
              c:identifier="CM_M_KEY_VERIFICATION_ACCEPT"
              glib:nick="key-verification-accept"
              glib:name="CM_M_KEY_VERIFICATION_ACCEPT">
      </member>
      <member name="key_verification_cancel"
              value="17"
              c:identifier="CM_M_KEY_VERIFICATION_CANCEL"
              glib:nick="key-verification-cancel"
              glib:name="CM_M_KEY_VERIFICATION_CANCEL">
      </member>
      <member name="key_verification_done"
              value="18"
              c:identifier="CM_M_KEY_VERIFICATION_DONE"
              glib:nick="key-verification-done"
              glib:name="CM_M_KEY_VERIFICATION_DONE">
      </member>
      <member name="key_verification_key"
              value="19"
              c:identifier="CM_M_KEY_VERIFICATION_KEY"
              glib:nick="key-verification-key"
              glib:name="CM_M_KEY_VERIFICATION_KEY">
      </member>
      <member name="key_verification_mac"
              value="20"
              c:identifier="CM_M_KEY_VERIFICATION_MAC"
              glib:nick="key-verification-mac"
              glib:name="CM_M_KEY_VERIFICATION_MAC">
      </member>
      <member name="key_verification_ready"
              value="21"
              c:identifier="CM_M_KEY_VERIFICATION_READY"
              glib:nick="key-verification-ready"
              glib:name="CM_M_KEY_VERIFICATION_READY">
      </member>
      <member name="key_verification_request"
              value="22"
              c:identifier="CM_M_KEY_VERIFICATION_REQUEST"
              glib:nick="key-verification-request"
              glib:name="CM_M_KEY_VERIFICATION_REQUEST">
      </member>
      <member name="key_verification_start"
              value="23"
              c:identifier="CM_M_KEY_VERIFICATION_START"
              glib:nick="key-verification-start"
              glib:name="CM_M_KEY_VERIFICATION_START">
      </member>
      <member name="presence"
              value="24"
              c:identifier="CM_M_PRESENCE"
              glib:nick="presence"
              glib:name="CM_M_PRESENCE">
      </member>
      <member name="push_rules"
              value="25"
              c:identifier="CM_M_PUSH_RULES"
              glib:nick="push-rules"
              glib:name="CM_M_PUSH_RULES">
      </member>
      <member name="reaction"
              value="26"
              c:identifier="CM_M_REACTION"
              glib:nick="reaction"
              glib:name="CM_M_REACTION">
      </member>
      <member name="receipt"
              value="27"
              c:identifier="CM_M_RECEIPT"
              glib:nick="receipt"
              glib:name="CM_M_RECEIPT">
      </member>
      <member name="room_aliases"
              value="28"
              c:identifier="CM_M_ROOM_ALIASES"
              glib:nick="room-aliases"
              glib:name="CM_M_ROOM_ALIASES">
      </member>
      <member name="room_avatar"
              value="29"
              c:identifier="CM_M_ROOM_AVATAR"
              glib:nick="room-avatar"
              glib:name="CM_M_ROOM_AVATAR">
      </member>
      <member name="room_bot_options"
              value="30"
              c:identifier="CM_M_ROOM_BOT_OPTIONS"
              glib:nick="room-bot-options"
              glib:name="CM_M_ROOM_BOT_OPTIONS">
      </member>
      <member name="room_canonical_alias"
              value="31"
              c:identifier="CM_M_ROOM_CANONICAL_ALIAS"
              glib:nick="room-canonical-alias"
              glib:name="CM_M_ROOM_CANONICAL_ALIAS">
      </member>
      <member name="room_create"
              value="32"
              c:identifier="CM_M_ROOM_CREATE"
              glib:nick="room-create"
              glib:name="CM_M_ROOM_CREATE">
      </member>
      <member name="room_encrypted"
              value="33"
              c:identifier="CM_M_ROOM_ENCRYPTED"
              glib:nick="room-encrypted"
              glib:name="CM_M_ROOM_ENCRYPTED">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="109">An event in an encypted room. This is the majority
   of events when a room is encrypted.</doc>
      </member>
      <member name="room_encryption"
              value="34"
              c:identifier="CM_M_ROOM_ENCRYPTION"
              glib:nick="room-encryption"
              glib:name="CM_M_ROOM_ENCRYPTION">
      </member>
      <member name="room_guest_access"
              value="35"
              c:identifier="CM_M_ROOM_GUEST_ACCESS"
              glib:nick="room-guest-access"
              glib:name="CM_M_ROOM_GUEST_ACCESS">
      </member>
      <member name="room_history_visibility"
              value="36"
              c:identifier="CM_M_ROOM_HISTORY_VISIBILITY"
              glib:nick="room-history-visibility"
              glib:name="CM_M_ROOM_HISTORY_VISIBILITY">
      </member>
      <member name="room_join_rules"
              value="37"
              c:identifier="CM_M_ROOM_JOIN_RULES"
              glib:nick="room-join-rules"
              glib:name="CM_M_ROOM_JOIN_RULES">
      </member>
      <member name="room_key"
              value="38"
              c:identifier="CM_M_ROOM_KEY"
              glib:nick="room-key"
              glib:name="CM_M_ROOM_KEY">
      </member>
      <member name="room_key_request"
              value="39"
              c:identifier="CM_M_ROOM_KEY_REQUEST"
              glib:nick="room-key-request"
              glib:name="CM_M_ROOM_KEY_REQUEST">
      </member>
      <member name="room_member"
              value="40"
              c:identifier="CM_M_ROOM_MEMBER"
              glib:nick="room-member"
              glib:name="CM_M_ROOM_MEMBER">
      </member>
      <member name="room_message"
              value="41"
              c:identifier="CM_M_ROOM_MESSAGE"
              glib:nick="room-message"
              glib:name="CM_M_ROOM_MESSAGE">
        <doc xml:space="preserve"
             filename="src/cm-enums.h"
             line="107">An event representing a message sent to a room.
   See [class@RoomMessageEvent].</doc>
      </member>
      <member name="room_message_feedback"
              value="42"
              c:identifier="CM_M_ROOM_MESSAGE_FEEDBACK"
              glib:nick="room-message-feedback"
              glib:name="CM_M_ROOM_MESSAGE_FEEDBACK">
      </member>
      <member name="room_name"
              value="43"
              c:identifier="CM_M_ROOM_NAME"
              glib:nick="room-name"
              glib:name="CM_M_ROOM_NAME">
      </member>
      <member name="room_pinned_events"
              value="44"
              c:identifier="CM_M_ROOM_PINNED_EVENTS"
              glib:nick="room-pinned-events"
              glib:name="CM_M_ROOM_PINNED_EVENTS">
      </member>
      <member name="room_plumbing"
              value="45"
              c:identifier="CM_M_ROOM_PLUMBING"
              glib:nick="room-plumbing"
              glib:name="CM_M_ROOM_PLUMBING">
      </member>
      <member name="room_power_levels"
              value="46"
              c:identifier="CM_M_ROOM_POWER_LEVELS"
              glib:nick="room-power-levels"
              glib:name="CM_M_ROOM_POWER_LEVELS">
      </member>
      <member name="room_redaction"
              value="47"
              c:identifier="CM_M_ROOM_REDACTION"
              glib:nick="room-redaction"
              glib:name="CM_M_ROOM_REDACTION">
      </member>
      <member name="room_related_groups"
              value="48"
              c:identifier="CM_M_ROOM_RELATED_GROUPS"
              glib:nick="room-related-groups"
              glib:name="CM_M_ROOM_RELATED_GROUPS">
      </member>
      <member name="room_server_acl"
              value="49"
              c:identifier="CM_M_ROOM_SERVER_ACL"
              glib:nick="room-server-acl"
              glib:name="CM_M_ROOM_SERVER_ACL">
      </member>
      <member name="room_third_party_invite"
              value="50"
              c:identifier="CM_M_ROOM_THIRD_PARTY_INVITE"
              glib:nick="room-third-party-invite"
              glib:name="CM_M_ROOM_THIRD_PARTY_INVITE">
      </member>
      <member name="room_tombstone"
              value="51"
              c:identifier="CM_M_ROOM_TOMBSTONE"
              glib:nick="room-tombstone"
              glib:name="CM_M_ROOM_TOMBSTONE">
      </member>
      <member name="room_topic"
              value="52"
              c:identifier="CM_M_ROOM_TOPIC"
              glib:nick="room-topic"
              glib:name="CM_M_ROOM_TOPIC">
      </member>
      <member name="secret_request"
              value="53"
              c:identifier="CM_M_SECRET_REQUEST"
              glib:nick="secret-request"
              glib:name="CM_M_SECRET_REQUEST">
      </member>
      <member name="secret_send"
              value="54"
              c:identifier="CM_M_SECRET_SEND"
              glib:nick="secret-send"
              glib:name="CM_M_SECRET_SEND">
      </member>
      <member name="secret_storage_default_key"
              value="55"
              c:identifier="CM_M_SECRET_STORAGE_DEFAULT_KEY"
              glib:nick="secret-storage-default-key"
              glib:name="CM_M_SECRET_STORAGE_DEFAULT_KEY">
      </member>
      <member name="space_child"
              value="56"
              c:identifier="CM_M_SPACE_CHILD"
              glib:nick="space-child"
              glib:name="CM_M_SPACE_CHILD">
      </member>
      <member name="space_parent"
              value="57"
              c:identifier="CM_M_SPACE_PARENT"
              glib:nick="space-parent"
              glib:name="CM_M_SPACE_PARENT">
      </member>
      <member name="sticker"
              value="58"
              c:identifier="CM_M_STICKER"
              glib:nick="sticker"
              glib:name="CM_M_STICKER">
      </member>
      <member name="tag"
              value="59"
              c:identifier="CM_M_TAG"
              glib:nick="tag"
              glib:name="CM_M_TAG">
      </member>
      <member name="typing"
              value="60"
              c:identifier="CM_M_TYPING"
              glib:nick="typing"
              glib:name="CM_M_TYPING">
      </member>
      <member name="user_status"
              value="256"
              c:identifier="CM_M_USER_STATUS"
              glib:nick="user-status"
              glib:name="CM_M_USER_STATUS">
      </member>
      <member name="room_invite"
              value="257"
              c:identifier="CM_M_ROOM_INVITE"
              glib:nick="room-invite"
              glib:name="CM_M_ROOM_INVITE">
      </member>
      <member name="room_ban"
              value="258"
              c:identifier="CM_M_ROOM_BAN"
              glib:nick="room-ban"
              glib:name="CM_M_ROOM_BAN">
      </member>
      <member name="room_kick"
              value="259"
              c:identifier="CM_M_ROOM_KICK"
              glib:nick="room-kick"
              glib:name="CM_M_ROOM_KICK">
      </member>
    </enumeration>
    <class name="Matrix"
           c:symbol-prefix="matrix"
           c:type="CmMatrix"
           parent="GObject.Object"
           glib:type-name="CmMatrix"
           glib:get-type="cm_matrix_get_type"
           glib:type-struct="MatrixClass">
      <doc xml:space="preserve"
           filename="src/cm-matrix.c"
           line="28">The main matrix object.

This object needs to be created after calling [func@init] and
before adding any [type@Client]s. After creating the object you can
open the database and load known clients via
[method@Matrix.open_async] and and [method@Matrix.client_new].</doc>
      <source-position filename="src/cm-matrix.h" line="19"/>
      <constructor name="new" c:identifier="cm_matrix_new">
        <doc xml:space="preserve"
             filename="src/cm-matrix.c"
             line="278">Create a new #CmMatrix with the provided details

@data_dir is used to store downloaded files,
avatars, and thumbnails.  The content shall not
be encrypted even if that was the case when
received over the wire.

@app_id should be a valid string when validated
with g_application_id_is_valid()

The same values should be provided every time
#CmMatrix is created as these info are used
to store data.</doc>
        <source-position filename="src/cm-matrix.h" line="21"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/cm-matrix.c"
               line="299">A #CmMatrix</doc>
          <type name="Matrix" c:type="CmMatrix*"/>
        </return-value>
        <parameters>
          <parameter name="data_dir" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="280">The data directory</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cache_dir" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="281">The cache directory</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="app_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="282">The app id string (unused)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="disable_auto_login" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="283">Disable auto login</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_clients_async"
              c:identifier="cm_matrix_add_clients_async"
              glib:finish-func="add_clients_finish">
        <doc xml:space="preserve"
             filename="src/cm-matrix.c"
             line="990">Add clients identified by their secrets.</doc>
        <source-position filename="src/cm-matrix.h" line="60"/>
        <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="src/cm-matrix.c"
                 line="992">The matrix to add the clients to</doc>
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
          <parameter name="secrets" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="993">The secrets to build the clients from</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="Secret.Retrievable"/>
            </array>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="994">A `GAsyncReadyCallback` to call when the request is satisfied.</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="src/cm-matrix.c"
                 line="995">The data to pass to callback function.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_clients_finish"
              c:identifier="cm_matrix_add_clients_finish"
              throws="1">
        <source-position filename="src/cm-matrix.h" line="64"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="client_new" c:identifier="cm_matrix_client_new">
        <doc xml:space="preserve"
             filename="src/cm-matrix.c"
             line="653">Create a new [type@Client]. It's an error to create a new client
before opening the db with [method@Matrix.open_async].</doc>
        <source-position filename="src/cm-matrix.h" line="39"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/cm-matrix.c"
               line="660">A #CmClient</doc>
          <type name="Client" c:type="CmClient*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="655">A #CmMatrix</doc>
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="delete_client_async"
              c:identifier="cm_matrix_delete_client_async"
              glib:finish-func="delete_client_finish">
        <source-position filename="src/cm-matrix.h" line="52"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
          <parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="CmClient*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_client_finish"
              c:identifier="cm_matrix_delete_client_finish"
              throws="1">
        <source-position filename="src/cm-matrix.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="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_clients_list"
              c:identifier="cm_matrix_get_clients_list">
        <doc xml:space="preserve"
             filename="src/cm-matrix.c"
             line="606">Get the list of clients.</doc>
        <source-position filename="src/cm-matrix.h" line="36"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-matrix.c"
               line="612">The clients as list model.</doc>
          <type name="Gio.ListModel" c:type="GListModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="608">The matrix</doc>
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_client_with_id"
              c:identifier="cm_matrix_has_client_with_id">
        <source-position filename="src/cm-matrix.h" line="37"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
          <parameter name="user_id" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_ready"
              c:identifier="cm_matrix_is_ready"
              glib:get-property="ready">
        <source-position filename="src/cm-matrix.h" line="35"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open_async"
              c:identifier="cm_matrix_open_async"
              glib:finish-func="open_finish">
        <doc xml:space="preserve"
             filename="src/cm-matrix.c"
             line="508">Open the matrix db and loads already known clients.

Run [method@Matrix.open_finish] to get the result.</doc>
        <source-position filename="src/cm-matrix.h" line="26"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
          <parameter name="db_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="510">The path where db is (to be) stored</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="db_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="511">The name of database</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="src/cm-matrix.c"
                 line="512">A #GCancellable</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="src/cm-matrix.c"
                 line="513">The callback to run when ready</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="src/cm-matrix.c"
                 line="514">user data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_finish"
              c:identifier="cm_matrix_open_finish"
              throws="1">
        <source-position filename="src/cm-matrix.h" line="32"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_client_async"
              c:identifier="cm_matrix_save_client_async"
              glib:finish-func="save_client_finish">
        <doc xml:space="preserve"
             filename="src/cm-matrix.c"
             line="721">Save the client to database and keyring.

This is a asynchronous method. See [method@Matrix.save_client_sync]
for the synchronous version.</doc>
        <source-position filename="src/cm-matrix.h" line="40"/>
        <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="src/cm-matrix.c"
                 line="723">The matrix</doc>
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
          <parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="724">The client to save</doc>
            <type name="Client" c:type="CmClient*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="725">A cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="726">The callback to call when the asynchronous task completes</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="src/cm-matrix.c"
                 line="727">user data to pass to the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_client_finish"
              c:identifier="cm_matrix_save_client_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-matrix.c"
             line="775">Finish call to [method@Matrix.save_client_async]</doc>
        <source-position filename="src/cm-matrix.h" line="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-matrix.c"
               line="783">`TRUE` if saving the client succeeded, `FALSE` otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="777">The matrix</doc>
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="778">The result</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_client_sync"
              c:identifier="cm_matrix_save_client_sync"
              version="0.0.2"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-matrix.c"
             line="807">Save client to database and keyring.

This is a synchronous method. See [method@Matrix.save_client_async]
for an asynchronous version.</doc>
        <source-position filename="src/cm-matrix.h" line="48"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-matrix.c"
               line="819">`TRUE` if saving succeeded, `FALSE` otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="809">The matrix</doc>
            <type name="Matrix" c:type="CmMatrix*"/>
          </instance-parameter>
          <parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="810">The client to save</doc>
            <type name="Client" c:type="CmClient*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-matrix.c"
                 line="811">A cancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="ready"
                transfer-ownership="none"
                getter="is_ready"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="src/cm-matrix.c"
             line="246">Whether matrix is enabled and usable</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
    </class>
    <record name="MatrixClass"
            c:type="CmMatrixClass"
            glib:is-gtype-struct-for="Matrix">
      <source-position filename="src/cm-matrix.h" line="19"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="Olm" c:type="CmOlm" disguised="1" opaque="1">
      <source-position filename="src/cm-types.h" line="34"/>
    </record>
    <class name="Pusher"
           c:symbol-prefix="pusher"
           c:type="CmPusher"
           version="0.0.1"
           parent="GObject.Object"
           glib:type-name="CmPusher"
           glib:get-type="cm_pusher_get_type"
           glib:type-struct="PusherClass">
      <doc xml:space="preserve"
           filename="src/cm-pusher.c"
           line="23">Configuration for a server side pusher.

A pusher is a worker on the homeserver that manages the sending of
push notifications for a user. A user can have multiple pushers. This
class allows to set the pushers properties (like the push gateway
where push notifications should be sent to).</doc>
      <source-position filename="src/cm-pusher.h" line="33"/>
      <constructor name="new" c:identifier="cm_pusher_new" version="0.0.1">
        <source-position filename="src/cm-pusher.h" line="35"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/cm-pusher.c"
               line="98">A #CmPusher</doc>
          <type name="Pusher" c:type="CmPusher*"/>
        </return-value>
      </constructor>
      <method name="check_valid"
              c:identifier="cm_pusher_check_valid"
              version="0.0.1"
              glib:finish-func="check_valid_finish">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="497">Checks if the given pusher is valid. For http pushers this means checking
the remote endpoint.</doc>
        <source-position filename="src/cm-pusher.h" line="56"/>
        <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="src/cm-pusher.c"
                 line="499">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="500">A #GCancellable</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="src/cm-pusher.c"
                 line="501">A #GAsyncReadyCallback</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="src/cm-pusher.c"
                 line="502">The user data for @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="check_valid_finish"
              c:identifier="cm_pusher_check_valid_finish"
              version="0.0.1"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="546">Finishes an asynchronous operation started with
[method@Pusher.check_valid]. If the operation failed or the
pusher is not valid `FALSE` is returned and `error` indicates
the kind of error.</doc>
        <source-position filename="src/cm-pusher.h" line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-pusher.c"
               line="557">`TRUE` if the pusher is valid otherwise `FALSE`</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="548">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="549">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_app_display_name"
              c:identifier="cm_pusher_get_app_display_name"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="224">Get the display name of the application this pusher belongs to.</doc>
        <source-position filename="src/cm-pusher.h" line="40"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="226">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_app_id"
              c:identifier="cm_pusher_get_app_id"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="260">Get the app-id of the application this pusher belongs to.</doc>
        <source-position filename="src/cm-pusher.h" line="42"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="262">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_device_display_name"
              c:identifier="cm_pusher_get_device_display_name"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="296">Get the display name of the device this pusher belongs to.</doc>
        <source-position filename="src/cm-pusher.h" line="44"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="298">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_kind"
              c:identifier="cm_pusher_get_kind"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="142">Get the kind of the pusher.</doc>
        <source-position filename="src/cm-pusher.h" line="36"/>
        <return-value transfer-ownership="none">
          <type name="PusherKind" c:type="CmPusherKind"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="144">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_kind_as_string"
              c:identifier="cm_pusher_get_kind_as_string"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="158">Get the kind of the pusher as string. E.g. `http`.</doc>
        <source-position filename="src/cm-pusher.h" line="37"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="160">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_lang"
              c:identifier="cm_pusher_get_lang"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="330">Get the language of this pusher.</doc>
        <source-position filename="src/cm-pusher.h" line="46"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="332">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_profile_tag"
              c:identifier="cm_pusher_get_profile_tag"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="364">Get the profile tag for this pusher.</doc>
        <source-position filename="src/cm-pusher.h" line="48"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="366">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pushkey"
              c:identifier="cm_pusher_get_pushkey"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="399">Get the pushkey for this pusher.</doc>
        <source-position filename="src/cm-pusher.h" line="50"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="401">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_url" c:identifier="cm_pusher_get_url" version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="108">Get the URL for push notifications.</doc>
        <source-position filename="src/cm-pusher.h" line="54"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="110">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_app_display_name"
              c:identifier="cm_pusher_set_app_display_name"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="240">Set the display name of the application this pusher belongs to.
This should be a user friendly name that applications can show when
listing pushers.</doc>
        <source-position filename="src/cm-pusher.h" line="41"/>
        <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="src/cm-pusher.c"
                 line="242">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="app_display_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="243">The application's display name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_app_id"
              c:identifier="cm_pusher_set_app_id"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="276">Pushers can have an app-id associated with them so an app can find
the pushers it has configured. This should be in reverse DNS
notation like `com.example.Client`.</doc>
        <source-position filename="src/cm-pusher.h" line="43"/>
        <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="src/cm-pusher.c"
                 line="278">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="app_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="279">An app-id</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_device_display_name"
              c:identifier="cm_pusher_set_device_display_name"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="312">Set the display name of the device this pusher belongs to.</doc>
        <source-position filename="src/cm-pusher.h" line="45"/>
        <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="src/cm-pusher.c"
                 line="314">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="device_display_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="315">An display name for a device</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_kind"
              c:identifier="cm_pusher_set_kind"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="182">Set the kind of the pusher.</doc>
        <source-position filename="src/cm-pusher.h" line="38"/>
        <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="src/cm-pusher.c"
                 line="184">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="185">The kind of the pusher</doc>
            <type name="PusherKind" c:type="CmPusherKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_kind_from_string"
              c:identifier="cm_pusher_set_kind_from_string"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="200">Set the kind of the pusher from a string like `http`.</doc>
        <source-position filename="src/cm-pusher.h" line="39"/>
        <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="src/cm-pusher.c"
                 line="202">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="203">The kind of the pusher as string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_lang"
              c:identifier="cm_pusher_set_lang"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="346">Set the preferred language for receiving notifications (e.g. `en-US`).</doc>
        <source-position filename="src/cm-pusher.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="src/cm-pusher.c"
                 line="348">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="349">The language to use</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_profile_tag"
              c:identifier="cm_pusher_set_profile_tag"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="380">Set the profile tag for this pusher. The profile tag specifies which
set of device specific rules this pusher executes.</doc>
        <source-position filename="src/cm-pusher.h" line="49"/>
        <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="src/cm-pusher.c"
                 line="382">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="profile_tag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="383">The profile tag to use</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pushkey"
              c:identifier="cm_pusher_set_pushkey"
              version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="415">Set the pushkey for this pusher. The pushkey is a unique identifier
for this pusher.</doc>
        <source-position filename="src/cm-pusher.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="src/cm-pusher.c"
                 line="417">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="pushkey" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="418">The pushkey to set</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_url" c:identifier="cm_pusher_set_url" version="0.0.1">
        <doc xml:space="preserve"
             filename="src/cm-pusher.c"
             line="124">Set the URL where push notifications should be sent to.</doc>
        <source-position filename="src/cm-pusher.h" line="55"/>
        <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="src/cm-pusher.c"
                 line="126">The pusher</doc>
            <type name="Pusher" c:type="CmPusher*"/>
          </instance-parameter>
          <parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-pusher.c"
                 line="127">The url to set</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="PusherClass"
            c:type="CmPusherClass"
            glib:is-gtype-struct-for="Pusher">
      <source-position filename="src/cm-pusher.h" line="33"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="PusherKind" c:type="CmPusherKind">
      <doc xml:space="preserve"
           filename="src/cm-pusher.h"
           line="18">The type of a [class@Pusher]</doc>
      <source-position filename="src/cm-pusher.h" line="30"/>
      <member name="unknown" value="0" c:identifier="CM_PUSHER_KIND_UNKNOWN">
        <doc xml:space="preserve"
             filename="src/cm-pusher.h"
             line="20">The type of the pusher is unknown</doc>
      </member>
      <member name="http" value="1" c:identifier="CM_PUSHER_KIND_HTTP">
        <doc xml:space="preserve"
             filename="src/cm-pusher.h"
             line="21">A pusher that forwards messages via http</doc>
      </member>
      <member name="email" value="2" c:identifier="CM_PUSHER_KIND_EMAIL">
        <doc xml:space="preserve"
             filename="src/cm-pusher.h"
             line="22">A pusher that forwards messages via email</doc>
      </member>
    </enumeration>
    <class name="Room"
           c:symbol-prefix="room"
           c:type="CmRoom"
           parent="GObject.Object"
           glib:type-name="CmRoom"
           glib:get-type="cm_room_get_type"
           glib:type-struct="RoomClass">
      <doc xml:space="preserve"
           filename="src/cm-room.c"
           line="32">A Matrix room. This class provides access to properties of the room
including a list of events maintained as a `GListModel`.</doc>
      <source-position filename="src/cm-room.h" line="24"/>
      <method name="accept_invite_async"
              c:identifier="cm_room_accept_invite_async"
              glib:finish-func="accept_invite_finish">
        <source-position filename="src/cm-room.h" line="42"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="accept_invite_finish"
              c:identifier="cm_room_accept_invite_finish"
              throws="1">
        <source-position filename="src/cm-room.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="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="enable_encryption_async"
              c:identifier="cm_room_enable_encryption_async"
              glib:finish-func="enable_encryption_finish">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="2035">Enable encryption for @self.  You can't disable
encryption once enabled.  Also, it's a noop
if @self has already enabled encryption.  The
@callback shall run in any case.

To get the result, finish the call with
cm_room_enable_encryption_finish().</doc>
        <source-position filename="src/cm-room.h" line="83"/>
        <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="src/cm-room.c"
                 line="2037">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="2038">A #GCancellable</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="src/cm-room.c"
                 line="2039">A #GAsyncReadyCallback</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="src/cm-room.c"
                 line="2040">user data passed to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="enable_encryption_finish"
              c:identifier="cm_room_enable_encryption_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="2079">Finish the call to cm_room_enable_encryption_async().</doc>
        <source-position filename="src/cm-room.h" line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="2087">%TRUE if encryption was enabled,
%FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="2081">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="2082">A #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_avatar_async"
              c:identifier="cm_room_get_avatar_async"
              glib:finish-func="get_avatar_finish">
        <source-position filename="src/cm-room.h" line="35"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_avatar_finish"
              c:identifier="cm_room_get_avatar_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="1060">Finishes an asynchronous operation started with [method@Room.get_avatar_async].</doc>
        <source-position filename="src/cm-room.h" line="39"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="1068">The input stream</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1062">The room</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1063">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_event_async"
              c:identifier="cm_room_get_event_async"
              glib:finish-func="get_event_finish">
        <source-position filename="src/cm-room.h" line="113"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="event_id" 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>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_event_finish"
              c:identifier="cm_room_get_event_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="2988">Finishes an asynchronous operation started with [method@Room.get_event_async].

Gets the event. If the event is already in the list of events (see
[method@Room.get_events_list]) `NULL` is returned. In case of error
`NULL` is returned and `error` is set.</doc>
        <source-position filename="src/cm-room.h" line="118"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="3000">A [type@Event] or `NULL`</doc>
          <type name="Event" c:type="CmEvent*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="2990">The room</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="2991">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_event_sync"
              c:identifier="cm_room_get_event_sync"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="3025">Get a single event.

This is a synchronous method. See [method@Room.get_event_async] for
an asynchronous version.</doc>
        <source-position filename="src/cm-room.h" line="121"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="3037">A [type@CmEvent] or `NULL` if the operation failed.</doc>
          <type name="Event" c:type="CmEvent*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="3027">The room</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="event_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="3028">The id of the event to get</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="src/cm-room.c"
                 line="3029">Optional GCancellable object, NULL to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_events_list" c:identifier="cm_room_get_events_list">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="895">Get a list model of currently known room events.</doc>
        <source-position filename="src/cm-room.h" line="33"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="901">The room event list</doc>
          <type name="Gio.ListModel" c:type="GListModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="897">The room</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_id" c:identifier="cm_room_get_id">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="768">Get the matrix room id.</doc>
        <source-position filename="src/cm-room.h" line="26"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="774">The room id</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="770">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_joined_members"
              c:identifier="cm_room_get_joined_members">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="879">Get the currently joined members of a room.</doc>
        <source-position filename="src/cm-room.h" line="32"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="885">The members as list model.</doc>
          <type name="Gio.ListModel" c:type="GListModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="881">The room</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="cm_room_get_name"
              glib:get-property="name">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="801">Get the matrix room name.  Can be %NULL
if the room name is not set, or the name
is not yet loaded.</doc>
        <source-position filename="src/cm-room.h" line="29"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="809">The room name</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="803">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_past_name" c:identifier="cm_room_get_past_name">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="831">Get the matrix room name set before the current one.
The past name is set only if the room is a direct
room and current room name is empty (in the case
where cm_room_get_name() shall return "Empty room")</doc>
        <source-position filename="src/cm-room.h" line="30"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="840">The past room name</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="833">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_topic"
              c:identifier="cm_room_get_topic"
              version="0.0.2">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="3072">Get matrix room's topic.</doc>
        <source-position filename="src/cm-room.h" line="125"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="3078">The room topic</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="3074">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_unread_notification_counts"
              c:identifier="cm_room_get_unread_notification_counts">
        <source-position filename="src/cm-room.h" line="34"/>
        <return-value transfer-ownership="none">
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_encrypted" c:identifier="cm_room_is_encrypted">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="854">Get if the matrix room @self is encrypted
or not.</doc>
        <source-position filename="src/cm-room.h" line="31"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="861">%TRUE if @self is encrypted.
%FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="856">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="leave_async"
              c:identifier="cm_room_leave_async"
              glib:finish-func="leave_finish">
        <source-position filename="src/cm-room.h" line="90"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="leave_finish"
              c:identifier="cm_room_leave_finish"
              throws="1">
        <source-position filename="src/cm-room.h" line="94"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_past_events_async"
              c:identifier="cm_room_load_past_events_async"
              glib:finish-func="load_past_events_finish">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="2419">Get the next batch of past events from the database. If the room
wasn't ever synced from the server, do that first. A batch is
currently 30 events.

Run [method@Room.load_past_events_finish] to get the result.</doc>
        <source-position filename="src/cm-room.h" line="105"/>
        <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="src/cm-room.c"
                 line="2421">The room</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="1">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="2422">A `GAsyncReadyCallback` to call when the request is satisfied.</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="src/cm-room.c"
                 line="2423">The data to pass to callback function.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_past_events_finish"
              c:identifier="cm_room_load_past_events_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="2475">Finishes an asynchronous operation started with [method@Room.load_past_events_async].

In case of error `FALSE` is returned and `error` is set.</doc>
        <source-position filename="src/cm-room.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="2485">`TRUE` if the load succeeded, otherwise `FALSE`</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="2477">The room</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="2478">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_past_events_sync"
              c:identifier="cm_room_load_past_events_sync"
              version="0.0.2"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="2509">Load past events.

This is a synchronous method. See [method@Room.load_past_events_async] for
an asynchronous version.</doc>
        <source-position filename="src/cm-room.h" line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="2519">`TRUE` if the load succeeded, otherwise `FALSE`</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="2511">The room</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="reject_invite_async"
              c:identifier="cm_room_reject_invite_async"
              glib:finish-func="reject_invite_finish">
        <source-position filename="src/cm-room.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="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="reject_invite_finish"
              c:identifier="cm_room_reject_invite_finish"
              throws="1">
        <source-position filename="src/cm-room.h" line="53"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="self_has_power_for_event"
              c:identifier="cm_room_self_has_power_for_event">
        <source-position filename="src/cm-room.h" line="27"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <type name="EventType" c:type="CmEventType"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_file_async"
              c:identifier="cm_room_send_file_async"
              glib:finish-func="send_file_finish">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="1833">Send a file.

Run [method@Room.send_file_finish] to get the result.</doc>
        <source-position filename="src/cm-room.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">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1835">The room</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="body" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="progress_callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1836">The callback to run when ready</doc>
            <type name="Gio.FileProgressCallback"
                  c:type="GFileProgressCallback"/>
          </parameter>
          <parameter name="progress_user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1837">user data for @progress_callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1838">A #GCancellable</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="src/cm-room.c"
                 line="1839">The callback to run when ready</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="src/cm-room.c"
                 line="1840">user data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_file_finish"
              c:identifier="cm_room_send_file_finish"
              throws="1">
        <source-position filename="src/cm-room.h" line="72"/>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_text_async"
              c:identifier="cm_room_send_text_async"
              glib:finish-func="send_text_finish">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="1755">Send @text as a text message to the room
@self.  If the room is encrypted, the text
shall be encrypted and sent.</doc>
        <source-position filename="src/cm-room.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="1767">The event id string used for the event.
This can be used to track the event when received
via the /sync callback or so.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1757">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1758">The text message to send</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="src/cm-room.c"
                 line="1759">A #Gcancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1760">A #GasyncReadyCallback</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="src/cm-room.c"
                 line="1761">The user data for @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_text_finish"
              c:identifier="cm_room_send_text_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="1808">Finish the call to cm_room_send_text_async().</doc>
        <source-position filename="src/cm-room.h" line="61"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="1816">The event id string used for the event
on success. %NULL on error.  This is the same
as the one you get from cm_room_send_text_async().
Free with g_free().</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1810">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1811">A #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_read_marker_async"
              c:identifier="cm_room_set_read_marker_async"
              glib:finish-func="set_read_marker_finish">
        <source-position filename="src/cm-room.h" line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="fully_read_event" transfer-ownership="none">
            <type name="Event" c:type="CmEvent*"/>
          </parameter>
          <parameter name="read_receipt_event" transfer-ownership="none">
            <type name="Event" c:type="CmEvent*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_read_marker_finish"
              c:identifier="cm_room_set_read_marker_finish"
              throws="1">
        <source-position filename="src/cm-room.h" line="102"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_typing_notice_async"
              c:identifier="cm_room_set_typing_notice_async"
              glib:finish-func="set_typing_notice_finish">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="1927">Set/Unset if the self user is typing or not.
The typing set is timeout after 4 seconds.</doc>
        <source-position filename="src/cm-room.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="src/cm-room.c"
                 line="1929">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="typing" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1930">set/unset typing</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1931">A #Gcancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1932">A #GasyncReadyCallback</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="src/cm-room.c"
                 line="1933">The user data for @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_typing_notice_finish"
              c:identifier="cm_room_set_typing_notice_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="1980">Finish the call to cm_room_set_typing_notice_async().</doc>
        <source-position filename="src/cm-room.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-room.c"
               line="1988">%TRUE if typing notice was successfully
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="src/cm-room.c"
                 line="1982">A #CmRoom</doc>
            <type name="Room" c:type="CmRoom*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/cm-room.c"
                 line="1983">A #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="encrypted"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="name"
                transfer-ownership="none"
                getter="get_name"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="unread-count"
                version="0.0.2"
                transfer-ownership="none"
                default-value="0">
        <doc xml:space="preserve"
             filename="src/cm-room.c"
             line="497">The number of unread notifications in this room</doc>
        <type name="gint" c:type="gint"/>
      </property>
    </class>
    <record name="RoomClass"
            c:type="CmRoomClass"
            glib:is-gtype-struct-for="Room">
      <source-position filename="src/cm-room.h" line="24"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="RoomEvent"
           c:symbol-prefix="room_event"
           c:type="CmRoomEvent"
           parent="Event"
           glib:type-name="CmRoomEvent"
           glib:get-type="cm_room_event_get_type"
           glib:type-struct="RoomEventClass">
      <doc xml:space="preserve"
           filename="src/events/cm-room-event.c"
           line="19">An event that is associated with a matrix room like e.g. a
topic change or member event. Basically Matrix message of type
`m.room.*`.

This class somewhat confusingly represents different room event
types and is *also* used as base class for more specific room events
like `CmRoomMessageEvent`.</doc>
      <source-position filename="src/events/cm-room-event.h" line="32"/>
      <method name="get_room" c:identifier="cm_room_event_get_room">
        <doc xml:space="preserve"
             filename="src/events/cm-room-event.c"
             line="211">Get the room this event belongs to</doc>
        <source-position filename="src/events/cm-room-event.h" line="34"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/events/cm-room-event.c"
               line="217">The room</doc>
          <type name="Room" c:type="CmRoom*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/events/cm-room-event.c"
                 line="213">The room event</doc>
            <type name="RoomEvent" c:type="CmRoomEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_room_member"
              c:identifier="cm_room_event_get_room_member">
        <doc xml:space="preserve"
             filename="src/events/cm-room-event.c"
             line="296">Get the room member of this room event</doc>
        <source-position filename="src/events/cm-room-event.h" line="35"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/events/cm-room-event.c"
               line="302">The room member</doc>
          <type name="User" c:type="CmUser*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/events/cm-room-event.c"
                 line="298">The room event</doc>
            <type name="RoomEvent" c:type="CmRoomEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Event" c:type="CmEvent"/>
      </field>
    </class>
    <record name="RoomEventClass"
            c:type="CmRoomEventClass"
            glib:is-gtype-struct-for="RoomEvent">
      <source-position filename="src/events/cm-room-event.h" line="32"/>
      <field name="parent_class">
        <type name="EventClass" c:type="CmEventClass"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="RoomMember" c:type="CmRoomMember" disguised="1" opaque="1">
      <source-position filename="src/cm-types.h" line="23"/>
    </record>
    <class name="RoomMessageEvent"
           c:symbol-prefix="room_message_event"
           c:type="CmRoomMessageEvent"
           parent="RoomEvent"
           glib:type-name="CmRoomMessageEvent"
           glib:get-type="cm_room_message_event_get_type"
           glib:type-struct="RoomMessageEventClass">
      <source-position filename="src/events/cm-room-message-event.h"
                       line="27"/>
      <method name="get_body" c:identifier="cm_room_message_event_get_body">
        <source-position filename="src/events/cm-room-message-event.h"
                         line="30"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RoomMessageEvent" c:type="CmRoomMessageEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_file_async"
              c:identifier="cm_room_message_event_get_file_async"
              glib:finish-func="get_file_finish">
        <doc xml:space="preserve"
             filename="src/events/cm-room-message-event.c"
             line="345">Download a file asynchronously.

Run [method@Client.get_homeserver_finish] to get an input stream.</doc>
        <source-position filename="src/events/cm-room-message-event.h"
                         line="32"/>
        <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="src/events/cm-room-message-event.c"
                 line="347">The room message event</doc>
            <type name="RoomMessageEvent" c:type="CmRoomMessageEvent*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/events/cm-room-message-event.c"
                 line="348">A #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="progress_callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="src/events/cm-room-message-event.c"
                 line="349">A #GFileProgressCallback</doc>
            <type name="Gio.FileProgressCallback"
                  c:type="GFileProgressCallback"/>
          </parameter>
          <parameter name="progress_user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/events/cm-room-message-event.c"
                 line="350">The user data for @progress_callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/events/cm-room-message-event.c"
                 line="351">A #GAsyncReadyCallback</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="src/events/cm-room-message-event.c"
                 line="352">The user data for @callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_file_finish"
              c:identifier="cm_room_message_event_get_file_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/events/cm-room-message-event.c"
             line="414">Finishes an asynchronous operation started with [method@RoomMessageEvent.get_file_async].</doc>
        <source-position filename="src/events/cm-room-message-event.h"
                         line="38"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/events/cm-room-message-event.c"
               line="422">The input stream for the file.</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/events/cm-room-message-event.c"
                 line="416">The room message event</doc>
            <type name="RoomMessageEvent" c:type="CmRoomMessageEvent*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/events/cm-room-message-event.c"
                 line="417">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_file_path"
              c:identifier="cm_room_message_event_get_file_path">
        <source-position filename="src/events/cm-room-message-event.h"
                         line="31"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="RoomMessageEvent" c:type="CmRoomMessageEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_msg_type"
              c:identifier="cm_room_message_event_get_msg_type">
        <doc xml:space="preserve"
             filename="src/events/cm-room-message-event.c"
             line="245">Gets the content type (like text or image) of a room message.</doc>
        <source-position filename="src/events/cm-room-message-event.h"
                         line="29"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/events/cm-room-message-event.c"
               line="251">The message's content type</doc>
          <type name="ContentType" c:type="CmContentType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/events/cm-room-message-event.c"
                 line="247">The message</doc>
            <type name="RoomMessageEvent" c:type="CmRoomMessageEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="RoomMessageEventClass"
            c:type="CmRoomMessageEventClass"
            glib:is-gtype-struct-for="RoomMessageEvent">
      <source-position filename="src/events/cm-room-message-event.h"
                       line="27"/>
      <field name="parent_class">
        <type name="RoomEventClass" c:type="CmRoomEventClass"/>
      </field>
    </record>
    <enumeration name="Status"
                 glib:type-name="CmStatus"
                 glib:get-type="cm_status_get_type"
                 c:type="CmStatus">
      <member name="unknown"
              value="0"
              c:identifier="CM_STATUS_UNKNOWN"
              glib:nick="unknown"
              glib:name="CM_STATUS_UNKNOWN">
      </member>
      <member name="join"
              value="1"
              c:identifier="CM_STATUS_JOIN"
              glib:nick="join"
              glib:name="CM_STATUS_JOIN">
      </member>
      <member name="leave"
              value="2"
              c:identifier="CM_STATUS_LEAVE"
              glib:nick="leave"
              glib:name="CM_STATUS_LEAVE">
      </member>
      <member name="invite"
              value="3"
              c:identifier="CM_STATUS_INVITE"
              glib:nick="invite"
              glib:name="CM_STATUS_INVITE">
      </member>
      <member name="ban"
              value="4"
              c:identifier="CM_STATUS_BAN"
              glib:nick="ban"
              glib:name="CM_STATUS_BAN">
      </member>
      <member name="knock"
              value="5"
              c:identifier="CM_STATUS_KNOCK"
              glib:nick="knock"
              glib:name="CM_STATUS_KNOCK">
      </member>
    </enumeration>
    <class name="User"
           c:symbol-prefix="user"
           c:type="CmUser"
           parent="GObject.Object"
           glib:type-name="CmUser"
           glib:get-type="cm_user_get_type"
           glib:type-struct="UserClass">
      <source-position filename="src/users/cm-user.h" line="32"/>
      <method name="get_avatar_async"
              c:identifier="cm_user_get_avatar_async"
              glib:finish-func="get_avatar_finish">
        <source-position filename="src/users/cm-user.h" line="37"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="User" c:type="CmUser*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_avatar_finish"
              c:identifier="cm_user_get_avatar_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="src/users/cm-user.c"
             line="450">Finishes an asynchronous operation started with [method@User.get_avatar_async].</doc>
        <source-position filename="src/users/cm-user.h" line="41"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/users/cm-user.c"
               line="458">The input stream.</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/users/cm-user.c"
                 line="452">The user</doc>
            <type name="User" c:type="CmUser*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/users/cm-user.c"
                 line="453">`GAsyncResult`</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_avatar_url" c:identifier="cm_user_get_avatar_url">
        <source-position filename="src/users/cm-user.h" line="36"/>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="User" c:type="CmUser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_display_name" c:identifier="cm_user_get_display_name">
        <doc xml:space="preserve"
             filename="src/users/cm-user.c"
             line="272">Get the user's human readable display name</doc>
        <source-position filename="src/users/cm-user.h" line="35"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/users/cm-user.c"
               line="278">The user's display name</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/users/cm-user.c"
                 line="274">The user</doc>
            <type name="User" c:type="CmUser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_id" c:identifier="cm_user_get_id">
        <doc xml:space="preserve"
             filename="src/users/cm-user.c"
             line="254">Get the user's matrix id</doc>
        <source-position filename="src/users/cm-user.h" line="34"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/users/cm-user.c"
               line="260">The user's matrix id</doc>
          <type name="GLib.RefString" c:type="GRefString*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/users/cm-user.c"
                 line="256">The user</doc>
            <type name="User" c:type="CmUser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load_info_async"
              c:identifier="cm_user_load_info_async"
              glib:finish-func="load_info_finish">
        <source-position filename="src/users/cm-user.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="User" c:type="CmUser*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_info_finish"
              c:identifier="cm_user_load_info_finish"
              throws="1">
        <source-position filename="src/users/cm-user.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="User" c:type="CmUser*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="changed" when="last">
        <doc xml:space="preserve"
             filename="src/users/cm-user.c"
             line="89">changed signal is emitted when name or avatar
of the user changes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="UserClass"
            c:type="CmUserClass"
            glib:is-gtype-struct-for="User">
      <source-position filename="src/users/cm-user.h" line="32"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="8">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="UserList" c:type="CmUserList" disguised="1" opaque="1">
      <doc xml:space="preserve"
           filename="src/users/cm-user-list.c"
           line="28">Track all users that belongs to the account

#CmUserList tracks all users associated with the account, instead
of tracking them per room individually. Please note that only
relevant users (eg: Users that shares an encrypted room, or users
that have sent an event recently) are stored to avoid eating too
much memory</doc>
      <source-position filename="src/cm-types.h" line="35"/>
    </record>
    <class name="VerificationEvent"
           c:symbol-prefix="verification_event"
           c:type="CmVerificationEvent"
           parent="Event"
           glib:type-name="CmVerificationEvent"
           glib:get-type="cm_verification_event_get_type"
           glib:type-struct="VerificationEventClass">
      <source-position filename="src/events/cm-verification-event.h"
                       line="18"/>
      <method name="cancel_async"
              c:identifier="cm_verification_event_cancel_async"
              glib:finish-func="cancel_finish">
        <source-position filename="src/events/cm-verification-event.h"
                         line="20"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="VerificationEvent" c:type="CmVerificationEvent*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="cancel_finish"
              c:identifier="cm_verification_event_cancel_finish"
              throws="1">
        <source-position filename="src/events/cm-verification-event.h"
                         line="24"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="VerificationEvent" c:type="CmVerificationEvent*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="continue_async"
              c:identifier="cm_verification_event_continue_async"
              glib:finish-func="continue_finish">
        <source-position filename="src/events/cm-verification-event.h"
                         line="27"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="VerificationEvent" c:type="CmVerificationEvent*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="continue_finish"
              c:identifier="cm_verification_event_continue_finish"
              throws="1">
        <source-position filename="src/events/cm-verification-event.h"
                         line="31"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="VerificationEvent" c:type="CmVerificationEvent*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="match_async"
              c:identifier="cm_verification_event_match_async"
              glib:finish-func="match_finish">
        <source-position filename="src/events/cm-verification-event.h"
                         line="34"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="VerificationEvent" c:type="CmVerificationEvent*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="match_finish"
              c:identifier="cm_verification_event_match_finish"
              throws="1">
        <source-position filename="src/events/cm-verification-event.h"
                         line="38"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="VerificationEvent" c:type="CmVerificationEvent*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="VerificationEventClass"
            c:type="CmVerificationEventClass"
            glib:is-gtype-struct-for="VerificationEvent">
      <source-position filename="src/events/cm-verification-event.h"
                       line="18"/>
      <field name="parent_class">
        <type name="EventClass" c:type="CmEventClass"/>
      </field>
    </record>
    <function name="error_quark"
              c:identifier="cm_error_quark"
              moved-to="Error.quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="init" c:identifier="cm_init">
      <doc xml:space="preserve"
           filename="src/cm-matrix.c"
           line="342">This function should be called to initialize the library.
You may call this in `main()`

If you don't initialize gcrypt, you should do it yourself</doc>
      <source-position filename="src/cm-matrix.h" line="25"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="init_gcrypt" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-matrix.c"
               line="344">Whether to initialize gcrypt</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_get_homeserver_async"
              c:identifier="cm_utils_get_homeserver_async"
              version="0.0.2">
      <doc xml:space="preserve"
           filename="src/cm-utils.c"
           line="1098">Get homeserver from the given @username.  @username
should be in complete form (eg: @user:example.org)

@timeout is clamped between 5 and 60 seconds.

This is a network operation and shall connect to the
network to fetch homeserver details.

See https://matrix.org/docs/spec/client_server/r0.6.1#server-discovery</doc>
      <source-position filename="src/cm-utils.h" line="13"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="username" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-utils.c"
               line="1100">A matrix id</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="timeout" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-utils.c"
               line="1101">timeout in seconds</doc>
          <type name="guint" c:type="uint"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/cm-utils.c"
               line="1102">A #GCancellable</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="src/cm-utils.c"
               line="1103">The callback to run</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="src/cm-utils.c"
               line="1104">The data passed to @callback</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_get_homeserver_finish"
              c:identifier="cm_utils_get_homeserver_finish"
              version="0.0.2"
              throws="1">
      <doc xml:space="preserve"
           filename="src/cm-utils.c"
           line="1150">Finish call to cm_utils_get_homeserver_async().</doc>
      <source-position filename="src/cm-utils.h" line="18"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="src/cm-utils.c"
             line="1157">The homeserver string or `NULL`
on error.  Free with `g_free()`.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-utils.c"
               line="1152">The result</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_get_homeserver_sync"
              c:identifier="cm_utils_get_homeserver_sync"
              version="0.0.2"
              throws="1">
      <doc xml:space="preserve"
           filename="src/cm-utils.c"
           line="1185">Get homeserver from the given @username.  @username
should be in complete form (eg: @user:example.org)

This is a synchronous method. See [cm_utils_get_homeserver_async]
for an asynchronous version.</doc>
      <source-position filename="src/cm-utils.h" line="20"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="src/cm-utils.c"
             line="1196">The homeserver string or `NULL`
on error.  Free with `g_free()`.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="username" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/cm-utils.c"
               line="1187">A matrix id</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
