<?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 xmlns="http://www.gtk.org/introspection/core/1.0" xmlns:c="http://www.gtk.org/introspection/c/1.0" xmlns:glib="http://www.gtk.org/introspection/glib/1.0" version="1.0">
  <include name="GLib" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <package name="dbus-glib-1"/>
  <package name="gio-2.0"/>
  <namespace name="TelepathyGLib" version="0.11.5.1" shared-library="libtelepathy-glib.so.0" c:prefix="tp">
    <alias name="Handle" target="uint" c:type="TpHandle"/>
    <constant name="ACCOUNT_MANAGER_BUS_NAME" value="org.freedesktop.Telepathy.AccountManager">
      <type name="utf8"/>
    </constant>
    <constant name="ACCOUNT_MANAGER_OBJECT_PATH" value="/org/freedesktop/Telepathy/AccountManager">
      <type name="utf8"/>
    </constant>
    <constant name="ACCOUNT_OBJECT_PATH_BASE" value="/org/freedesktop/Telepathy/Account/">
      <type name="utf8"/>
    </constant>
    <class name="Account" c:type="TpAccount" doc="The Telepathy Account Manager stores the user's configured real-time communication accounts. This object represents a stored account. If this account is deleted from the account manager, the #TpProxy::invalidated signal will be emitted with the domain %TP_DBUS_ERRORS and the error code %TP_DBUS_ERROR_OBJECT_REMOVED. One can connect to the #GObject::notify signal to get change notifications for many of the properties on this object. Refer to each property's documentation for whether it can be used in this way." version="0.7.32" parent="Proxy" glib:type-name="TpAccount" glib:get-type="tp_account_get_type" glib:type-struct="AccountClass">
      <constructor name="new" c:identifier="tp_account_new" doc="Convenience function to create a new account proxy. The returned #TpAccount is not guaranteed to be ready at the point of return. not valid" throws="1">
        <return-value transfer-ownership="full">
          <type name="Account" c:type="TpAccount*"/>
        </return-value>
        <parameters>
          <parameter name="bus_daemon" transfer-ownership="none">
            <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
          </parameter>
          <parameter name="object_path" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="get_feature_quark_core" c:identifier="tp_account_get_feature_quark_core" doc="&lt;!-- --&gt; #TpAccount" version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="parse_object_path" c:identifier="tp_account_parse_object_path" doc="connection manager's name protocol unique identifier Validates and parses a Telepathy Account's object path, extracting the connection manager's name, the protocol, and the account's unique identifier from the path. This includes replacing underscores with hyphens in the protocol name, as defined in the Account specification. Any of the out parameters may be %NULL if not needed. If %TRUE is returned, the caller is responsible for freeing the strings stored in any non-%NULL out parameters, using g_free()." version="0.9.0" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="object_path" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="cm" direction="out" caller-allocates="0" transfer-ownership="full" doc="location at which to store the account's">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="protocol" direction="out" caller-allocates="0" transfer-ownership="full" doc="location at which to store the account's">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="account_id" direction="out" caller-allocates="0" transfer-ownership="full" doc="location at which to store the account's">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </function>
      <function name="init_known_interfaces" c:identifier="tp_account_init_known_interfaces" doc="Ensure that the known interfaces for TpAccount have been set up. This is done automatically when necessary, but for correct overriding of library interfaces by local extensions, you should call this function before calling tp_proxy_or_subclass_hook_on_interface_add() with first argument %TP_TYPE_ACCOUNT." version="0.7.32">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <method name="get_connection" c:identifier="tp_account_get_connection" doc="&lt;!-- --&gt;" version="0.9.0">
        <return-value transfer-ownership="none" doc="the same as the #TpAccount:connection property">
          <type name="Connection" c:type="TpConnection*"/>
        </return-value>
      </method>
      <method name="ensure_connection" c:identifier="tp_account_ensure_connection" doc="Set the connection of the account by specifying the connection object path. This function does not return a new ref and it is not guaranteed that the returned #TpConnection object is ready. The use-case for this function is in a HandleChannels callback and you already know the object path for the connection, so you can let @account create its #TpConnection and return it for use. the object path @path is invalid or it is the null-value &quot;/&quot;" version="0.9.0">
        <return-value transfer-ownership="none" doc="the connection of the account, or %NULL if either">
          <type name="Connection" c:type="TpConnection*"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_display_name" c:identifier="tp_account_get_display_name" doc="&lt;!-- --&gt;" version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_connection_manager" c:identifier="tp_account_get_connection_manager" doc="&lt;!-- --&gt;" version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_protocol" c:identifier="tp_account_get_protocol" doc="&lt;!-- --&gt;" version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_icon_name" c:identifier="tp_account_get_icon_name" doc="&lt;!-- --&gt;" version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="set_enabled_async" c:identifier="tp_account_set_enabled_async" doc="Requests an asynchronous set of the Enabled property of @account. When the operation is finished, @callback will be called. You can then call tp_account_set_enabled_finish() to get the result of the operation." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="enabled" transfer-ownership="none">
            <type name="boolean" c:type="gboolean"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_enabled_finish" c:identifier="tp_account_set_enabled_finish" doc="Finishes an async set of the Enabled property." version="0.9.0" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="reconnect_async" c:identifier="tp_account_reconnect_async" doc="Requests an asynchronous reconnect of @account. When the operation is finished, @callback will be called. You can then call tp_account_reconnect_finish() to get the result of the operation." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="reconnect_finish" c:identifier="tp_account_reconnect_finish" doc="Finishes an async reconnect of @account." version="0.9.0" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_enabled" c:identifier="tp_account_is_enabled" doc="&lt;!-- --&gt;" version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="is_valid" c:identifier="tp_account_is_valid" doc="&lt;!-- --&gt;" version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="update_parameters_async" c:identifier="tp_account_update_parameters_async" doc="parameters to set on @account Requests an asynchronous update of parameters of @account. When the operation is finished, @callback will be called. You can then call tp_account_update_parameters_finish() to get the result of the operation." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="parameters" transfer-ownership="none" doc="new">
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="GObject.Value"/>
            </type>
          </parameter>
          <parameter name="unset_parameters" transfer-ownership="none">
            <array c:type="gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="4">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="update_parameters_finish" c:identifier="tp_account_update_parameters_finish" doc="fill with properties that need a reconnect to take effect Finishes an async update of the parameters on @account." version="0.9.0" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="reconnect_required" direction="out" caller-allocates="0" transfer-ownership="full" doc="a #GStrv to">
            <type name="GObject.Strv" c:type="gchar***"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_async" c:identifier="tp_account_remove_async" doc="Requests an asynchronous removal of @account. When the operation is finished, @callback will be called. You can then call tp_account_remove_finish() to get the result of the operation." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_finish" c:identifier="tp_account_remove_finish" doc="Finishes an async removal of @account." version="0.9.0" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_display_name_async" c:identifier="tp_account_set_display_name_async" doc="Requests an asynchronous set of the DisplayName property of @account. When the operation is finished, @callback will be called. You can then call tp_account_set_display_name_finish() to get the result of the operation." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="display_name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_display_name_finish" c:identifier="tp_account_set_display_name_finish" doc="Finishes an async set of the DisplayName property." version="0.9.0" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_icon_name_async" c:identifier="tp_account_set_icon_name_async" doc="Requests an asynchronous set of the Icon property of @account. When the operation is finished, @callback will be called. You can then call tp_account_set_icon_name_finish() to get the result of the operation." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="icon_name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_icon_name_finish" c:identifier="tp_account_set_icon_name_finish" doc="Finishes an async set of the Icon parameter." version="0.9.0" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_presence_async" c:identifier="tp_account_request_presence_async" doc="Requests an asynchronous change of presence on @account. When the operation is finished, @callback will be called. You can then call tp_account_request_presence_finish() to get the result of the operation." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <type name="ConnectionPresenceType" c:type="TpConnectionPresenceType"/>
          </parameter>
          <parameter name="status" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="5">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_presence_finish" c:identifier="tp_account_request_presence_finish" doc="Finishes an async presence change request on @account." version="0.9.0" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_connect_automatically" c:identifier="tp_account_get_connect_automatically" doc="&lt;!-- --&gt;" version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="set_connect_automatically_async" c:identifier="tp_account_set_connect_automatically_async" doc="Requests an asynchronous set of the ConnectAutomatically property of then call tp_account_set_display_name_finish() to get the result of the operation." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="connect_automatically" transfer-ownership="none">
            <type name="boolean" c:type="gboolean"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_connect_automatically_finish" c:identifier="tp_account_set_connect_automatically_finish" doc="Finishes an async set of the ConnectAutomatically property." version="0.9.0" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_has_been_online" c:identifier="tp_account_get_has_been_online" doc="&lt;!-- --&gt;" version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="get_connection_status" c:identifier="tp_account_get_connection_status" doc="Gets the connection status and reason from @account. The two values are the same as the #TpAccount:connection-status and #TpAccount:connection-status-reason properties." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="ConnectionStatus" c:type="TpConnectionStatus"/>
        </return-value>
        <parameters>
          <parameter name="reason" direction="out" caller-allocates="1" transfer-ownership="none" doc="a #TpConnectionStatusReason to fill, or %NULL">
            <type name="ConnectionStatusReason" c:type="TpConnectionStatusReason*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_current_presence" c:identifier="tp_account_get_current_presence" doc="status message Gets the current presence, status and status message of @account. These values are the same as the #TpAccount:current-presence-type, #TpAccount:current-status and #TpAccount:current-status-message properties." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="ConnectionPresenceType" c:type="TpConnectionPresenceType"/>
        </return-value>
        <parameters>
          <parameter name="status" direction="out" caller-allocates="0" transfer-ownership="full" doc="return location for the current status">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="status_message" direction="out" caller-allocates="0" transfer-ownership="full" doc="return location for the current">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_requested_presence" c:identifier="tp_account_get_requested_presence" doc="status message Gets the requested presence, status and status message of @account. These values are the same as the #TpAccount:requested-presence-type, #TpAccount:requested-status and #TpAccount:requested-status-message properties." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="ConnectionPresenceType" c:type="TpConnectionPresenceType"/>
        </return-value>
        <parameters>
          <parameter name="status" direction="out" caller-allocates="0" transfer-ownership="none" doc="return location for the requested status">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="status_message" direction="out" caller-allocates="0" transfer-ownership="full" doc="return location for the requested">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_parameters" c:identifier="tp_account_get_parameters" doc="Returns the parameters of the account, in a hash table where each string is the parameter name (account, password, require-encryption etc.), and each value is a #GValue. Using the tp_asv_get family of functions (tp_asv_get_uint32(), tp_asv_get_string() etc.) to access the parameters is recommended. The allowed parameters depend on the connection manager, and can be found via tp_connection_manager_get_protocol() and tp_connection_manager_protocol_get_param(). Well-known parameters are listed &lt;ulink url=&quot;http://telepathy.freedesktop.org/spec/org.freedesktop.Telepathy.ConnectionManager.html#org.freedesktop.Telepathy.ConnectionManager.RequestConnection&quot;&gt;in the Telepathy D-Bus Interface Specification&lt;/ulink&gt;. parameters on @account" version="0.9.0">
        <return-value transfer-ownership="none" doc="the hash table of">
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="GObject.Value"/>
          </type>
        </return-value>
      </method>
      <method name="get_nickname" c:identifier="tp_account_get_nickname" doc="&lt;!-- --&gt;" version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="set_nickname_async" c:identifier="tp_account_set_nickname_async" doc="Requests an asynchronous change of the Nickname parameter on @account. When the operation is finished, @callback will be called. You can then call tp_account_set_nickname_finish() to get the result of the operation." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="nickname" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_nickname_finish" c:identifier="tp_account_set_nickname_finish" doc="Finishes an async nickname change request on @account." version="0.9.0" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_avatar_async" c:identifier="tp_account_get_avatar_async" doc="Requests an asynchronous get of @account's avatar. When the operation is finished, @callback will be called. You can then call tp_account_get_avatar_finish() to get the result of the operation." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_avatar_finish" c:identifier="tp_account_get_avatar_finish" doc="Finishes an async get operation of @account's avatar. containing the bytes of the account's avatar, or %NULL on failure" version="0.9.0" throws="1">
        <return-value transfer-ownership="none" doc="a #GArray of #guchar">
          <array name="GLib.Array" c:type="GArray*">
            <type name="uint8"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_avatar_async" c:identifier="tp_account_set_avatar_async" doc="only if @len equals 0 only if @len equals 0 Requests an asynchronous change of the Avatar parameter on @self. When the operation is finished, @callback will be called. You can then call tp_account_set_avatar_finish() to get the result of the operation. If @len equals 0, the avatar is cleared." version="0.11.1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="avatar" transfer-ownership="none" allow-none="1" doc="a new avatar to set; can be %NULL">
            <array length="2" c:type="guchar*">
              <type name="uint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <type name="size_t" c:type="gsize"/>
          </parameter>
          <parameter name="mime_type" transfer-ownership="none" allow-none="1" doc="the MIME type of the new avatar; can be %NULL">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="5">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_avatar_finish" c:identifier="tp_account_set_avatar_finish" doc="Finishes an async avatar change request on @account." version="0.11.1" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="connect-automatically" version="0.9.0" doc="Whether the account should connect automatically or not. To change this property, use tp_account_set_connect_automatically_async(). One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %FALSE.">
        <type name="boolean" c:type="gboolean"/>
      </property>
      <property name="connection" version="0.9.0" doc="The connection of the account, or NULL if account is offline. It is not guaranteed that the returned #TpConnection object is ready. One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %NULL.">
        <type name="Connection" c:type="TpConnection"/>
      </property>
      <property name="connection-manager" version="0.9.0" doc="The account's connection manager name.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="connection-status" version="0.9.0" doc="The account's connection status type (a %TpConnectionStatus). One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %TP_CONNECTION_STATUS_DISCONNECTED.">
        <type name="uint" c:type="guint"/>
      </property>
      <property name="connection-status-reason" version="0.9.0" doc="The account's connection status reason (a %TpConnectionStatusReason). One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %TP_CONNECTION_STATUS_REASON_NONE_SPECIFIED.">
        <type name="uint" c:type="guint"/>
      </property>
      <property name="current-presence-type" version="0.9.0" doc="The account connection's current presence type (a %TpConnectionPresenceType). One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %TP_CONNECTION_PRESENCE_TYPE_UNSET.">
        <type name="uint" c:type="guint"/>
      </property>
      <property name="current-status" version="0.9.0" doc="The current Status string of the account. One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %NULL.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="current-status-message" version="0.9.0" doc="The current status message message of the account. One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %NULL.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="display-name" version="0.9.0" doc="The account's display name, from the DisplayName property. One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %NULL.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="enabled" version="0.9.0" doc="Whether this account is enabled or not. One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is FALSE.">
        <type name="boolean" c:type="gboolean"/>
      </property>
      <property name="has-been-online" version="0.9.0" doc="Whether this account has been online or not. One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %FALSE.">
        <type name="boolean" c:type="gboolean"/>
      </property>
      <property name="icon-name" version="0.9.0" doc="The account's icon name. To change this propery, use tp_account_set_icon_name_async(). One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %NULL.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="nickname">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="protocol" version="0.9.0" doc="The account's protocol name.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="requested-presence-type" version="0.9.0" doc="The account's requested presence type (a #TpConnectionPresenceType). One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail.">
        <type name="uint" c:type="guint"/>
      </property>
      <property name="requested-status" version="0.9.0" doc="The requested Status string of the account. One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="requested-status-message" version="0.9.0" doc="The requested status message message of the account. One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="valid" version="0.9.0" doc="Whether this account is valid. One can receive change notifications on this property by connecting to the #GObject::notify signal and using this property as the signal detail. This is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value is %FALSE.">
        <type name="boolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="Proxy" c:type="TpProxy"/>
      </field>
      <field name="priv">
        <type name="AccountPrivate" c:type="TpAccountPrivate*"/>
      </field>
      <glib:signal name="presence-changed" doc="Emitted when the presence of the account changes." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="presence" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="status" transfer-ownership="none">
            <type name="utf8" c:type="gchararray"/>
          </parameter>
          <parameter name="status_message" transfer-ownership="none">
            <type name="utf8" c:type="gchararray"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="status-changed" doc="on a connection error in the future on a connection error in the future Emitted when the connection status on the account changes." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="old_status" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="new_status" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="reason" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="dbus_error_name" transfer-ownership="none">
            <type name="utf8" c:type="gchararray"/>
          </parameter>
          <parameter name="details" transfer-ownership="none">
            <type name="GLib.HashTable" c:type="GHashTable"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="AccountClass" c:type="TpAccountClass" glib:is-gtype-struct-for="Account" doc="The class of a #TpAccount.">
      <field name="parent_class">
        <type name="ProxyClass" c:type="TpProxyClass"/>
      </field>
      <field name="_padding">
        <array zero-terminated="0" c:type="GCallback" fixed-size="7">
          <type name="GObject.Callback"/>
        </array>
      </field>
      <field name="priv">
        <type name="AccountClassPrivate" c:type="TpAccountClassPrivate*"/>
      </field>
    </record>
    <record name="AccountClassPrivate" c:type="TpAccountClassPrivate">
    </record>
    <class name="AccountManager" c:type="TpAccountManager" doc="The Telepathy Account Manager stores real-time communication accounts and their configuration, places accounts online on request, and manipulates accounts' presence, nicknames and avatars." version="0.7.32" parent="Proxy" glib:type-name="TpAccountManager" glib:get-type="tp_account_manager_get_type" glib:type-struct="AccountManagerClass">
      <constructor name="new" c:identifier="tp_account_manager_new" doc="Convenience function to create a new account manager proxy. The returned #TpAccountManager is not guaranteed to be ready on return. Use tp_account_manager_dup() instead if you want an account manager proxy on the starter or session bus (which is almost always the right thing for Telepathy).">
        <return-value transfer-ownership="full">
          <type name="AccountManager" c:type="TpAccountManager*"/>
        </return-value>
        <parameters>
          <parameter name="bus_daemon" transfer-ownership="none">
            <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="get_feature_quark_core" c:identifier="tp_account_manager_get_feature_quark_core" doc="&lt;!-- --&gt; #TpAccountManager" version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="dup" c:identifier="tp_account_manager_dup" doc="Returns an account manager proxy on the D-Bus daemon on which this process was activated (if it was launched by D-Bus service activation), or the session bus (otherwise). The returned #TpAccountManager is cached; the same #TpAccountManager object will be returned by this function repeatedly, as long as at least one reference exists. Note that the returned #TpAccountManager is not guaranteed to be ready on return. if it wasn't possible to get a dbus daemon proxy for the appropriate bus" version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="AccountManager" c:type="TpAccountManager*"/>
        </return-value>
      </function>
      <function name="init_known_interfaces" c:identifier="tp_account_manager_init_known_interfaces" doc="Ensure that the known interfaces for TpAccountManager have been set up. This is done automatically when necessary, but for correct overriding of library interfaces by local extensions, you should call this function before calling tp_proxy_or_subclass_hook_on_interface_add() with first argument %TP_TYPE_ACCOUNT_MANAGER." version="0.7.32">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <method name="ensure_account" c:identifier="tp_account_manager_ensure_account" doc="Lookup an account in the account manager @manager. If the desired account has already been ensured then the same object will be returned, otherwise it will create a new #TpAccount and add it to @manager. As a result, if to be ready on return. The caller must keep a ref to the returned object using g_object_ref() if it is to be kept." version="0.9.0">
        <return-value transfer-ownership="none" doc="a new #TpAccount at @path">
          <type name="Account" c:type="TpAccount*"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_valid_accounts" c:identifier="tp_account_manager_get_valid_accounts" doc="Returns a newly allocated #GList of valid accounts in @manager. The list must be freed with g_list_free() after used. None of the accounts in the returned list are guaranteed to be ready. Note that the #TpAccount&lt;!-- --&gt;s in the returned #GList are not reffed before returning from this function. One could ref every item in the list like the following example: |[ GList *accounts; account = tp_account_manager_get_valid_accounts (manager); g_list_foreach (accounts, (GFunc) g_object_ref, NULL); ]| The list of valid accounts returned is not guaranteed to have been retrieved until %TP_ACCOUNT_MANAGER_FEATURE_CORE is prepared (tp_proxy_prepare_async() has returned). Until this feature has been prepared, an empty list (%NULL) will be returned." version="0.9.0">
        <return-value transfer-ownership="container" doc="a newly allocated #GList of valid accounts in @manager">
          <type name="GLib.List" c:type="GList*">
            <type name="TelepathyGLib.Account"/>
          </type>
        </return-value>
      </method>
      <method name="set_all_requested_presences" c:identifier="tp_account_manager_set_all_requested_presences" doc="Iterates through the accounts in @manager and requests the presence (@type, @status and @message). Note that the presence requested here is merely a request, and if might not be satisfiable. You can find the most available presence across all accounts by calling tp_account_manager_get_most_available_presence(). Setting a requested presence on all accounts will have no effect until tp_proxy_prepare_async() (or the older tp_account_manager_prepare_async()) has finished." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <type name="ConnectionPresenceType" c:type="TpConnectionPresenceType"/>
          </parameter>
          <parameter name="status" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_most_available_presence" c:identifier="tp_account_manager_get_most_available_presence" doc="message Gets the most available presence over all accounts in @manager. This function does not average presences across all accounts, but it merely finds the &quot;most available&quot; presence. As a result, there is a guarantee that there exists at least one account in @manager with the returned presence. If no accounts are enabled or valid the output will be (%TP_CONNECTION_PRESENCE_TYPE_OFFLINE, &quot;offline&quot;, &quot;&quot;). The return value of this function is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value will be the same as if no accounts are enabled or valid." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="ConnectionPresenceType" c:type="TpConnectionPresenceType"/>
        </return-value>
        <parameters>
          <parameter name="status" direction="out" caller-allocates="0" transfer-ownership="full" doc="a string to fill with the actual status">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="message" direction="out" caller-allocates="0" transfer-ownership="full" doc="a string to fill with the actual status">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_account_async" c:identifier="tp_account_manager_create_account_async" doc="for the new account for the new account Requests an asynchronous create of an account on the account manager then call tp_account_manager_create_account_finish() to get the result of the operation. %TP_ACCOUNT_FEATURE_CORE feature ready on it, so when calling tp_account_manager_create_account_finish(), one can guarantee this feature will be ready." version="0.9.0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="connection_manager" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="protocol" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="display_name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="parameters" transfer-ownership="none" doc="parameters">
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="GObject.Value"/>
            </type>
          </parameter>
          <parameter name="properties" transfer-ownership="none" doc="properties">
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="GObject.Value"/>
            </type>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="7">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_account_finish" c:identifier="tp_account_manager_create_account_finish" doc="Finishes an async create account operation, and returns a new #TpAccount object, with the %TP_ACCOUNT_FEATURE_CORE feature ready on it. The caller must keep a ref to the returned object using g_object_ref() if it is to be kept. success, otherwise %NULL" version="0.9.0" throws="1">
        <return-value transfer-ownership="none" doc="a new #TpAccount which was just created on">
          <type name="Account" c:type="TpAccount*"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="enable_restart" c:identifier="tp_account_manager_enable_restart" doc="Enable autostarting the account manager D-Bus service. This means that the account manager will be restarted if it disappears from the bus.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <field name="parent">
        <type name="Proxy" c:type="TpProxy"/>
      </field>
      <field name="priv">
        <type name="AccountManagerPrivate" c:type="TpAccountManagerPrivate*"/>
      </field>
      <glib:signal name="account-disabled" doc="Emitted when an account from @manager is disabled." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="account" transfer-ownership="none">
            <type name="Account" c:type="TpAccount"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="account-enabled" doc="Emitted when an account from @manager is enabled. Note that the returned #TpAccount @account is not guaranteed to have any features pre-prepared, including %TP_ACCOUNT_FEATURE_CORE." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="account" transfer-ownership="none">
            <type name="Account" c:type="TpAccount"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="account-removed" doc="Emitted when an account is removed from @manager." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="account" transfer-ownership="none">
            <type name="Account" c:type="TpAccount"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="account-validity-changed" doc="Emitted when the validity on @account changes. @account is not guaranteed to be ready when this signal is emitted." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="account" transfer-ownership="none">
            <type name="Account" c:type="TpAccount"/>
          </parameter>
          <parameter name="valid" transfer-ownership="none">
            <type name="boolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="most-available-presence-changed" doc="Emitted when the most available presence on @manager changes." version="0.9.0">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="presence" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="status" transfer-ownership="none">
            <type name="utf8" c:type="gchararray"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <type name="utf8" c:type="gchararray"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="AccountManagerClass" c:type="TpAccountManagerClass" glib:is-gtype-struct-for="AccountManager" doc="The class of a #TpAccount.">
      <field name="parent_class">
        <type name="ProxyClass" c:type="TpProxyClass"/>
      </field>
      <field name="_padding">
        <array zero-terminated="0" c:type="GCallback" fixed-size="7">
          <type name="GObject.Callback"/>
        </array>
      </field>
      <field name="priv">
        <type name="AccountManagerClassPrivate" c:type="TpAccountManagerClassPrivate*"/>
      </field>
    </record>
    <record name="AccountManagerClassPrivate" c:type="TpAccountManagerClassPrivate">
    </record>
    <record name="AccountManagerPrivate" c:type="TpAccountManagerPrivate">
    </record>
    <record name="AccountPrivate" c:type="TpAccountPrivate">
    </record>
    <class name="AddDispatchOperationContext" c:type="TpAddDispatchOperationContext" doc="Data structure representing the context of a Approver.AddDispatchOperation() call." version="0.11.5" parent="GObject.Object" glib:type-name="TpAddDispatchOperationContext" glib:get-type="tp_add_dispatch_operation_context_get_type" glib:type-struct="AddDispatchOperationContextClass">
      <method name="accept" c:identifier="tp_add_dispatch_operation_context_accept" doc="Called by #TpBaseClientClassAddDispatchOperationImpl when it's done so the D-Bus method can return." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="fail" c:identifier="tp_add_dispatch_operation_context_fail" doc="Called by #TpBaseClientClassAddDispatchOperationImpl to raise a D-Bus error." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="GError*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delay" c:identifier="tp_add_dispatch_operation_context_delay" doc="Called by #TpBaseClientClassAddDispatchOperationImpl to indicate that it implements the method in an async way. The caller must take a reference to the #TpAddDispatchOperationContext before calling this function, and is responsible for calling either tp_add_dispatch_operation_context_accept() or tp_add_dispatch_operation_context_fail() later." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <property name="account" version="0.11.5" writable="1" construct-only="1" doc="A #TpAccount object representing the Account of the DispatchOperation that has been passed to AddDispatchOperation. Read-only except during construction. This property can't be %NULL.">
        <type name="Account" c:type="TpAccount"/>
      </property>
      <property name="channels" version="0.11.5" writable="1" construct-only="1" doc="A #GPtrArray containing #TpChannel objects representing the channels that have been passed to AddDispatchOperation. Read-only except during construction. This property can't be %NULL.">
        <type name="GLib.PtrArray" c:type="GPtrArray"/>
      </property>
      <property name="connection" version="0.11.5" writable="1" construct-only="1" doc="A #TpConnection object representing the Connection of the DispatchOperation that has been passed to AddDispatchOperation. Read-only except during construction. This property can't be %NULL.">
        <type name="Connection" c:type="TpConnection"/>
      </property>
      <property name="dispatch-operation" version="0.11.5" writable="1" construct-only="1" doc="A #TpChannelDispatchOperation object representing the ChannelDispatchOperation that has been passed to AddDispatchOperation. Read-only except during construction. This property can't be %NULL.">
        <type name="ChannelDispatchOperation" c:type="TpChannelDispatchOperation"/>
      </property>
    </class>
    <record name="AddDispatchOperationContextClass" c:type="TpAddDispatchOperationContextClass" glib:is-gtype-struct-for="AddDispatchOperationContext" doc="The class of a #TpAddDispatchOperationContext." version="0.11.5">
    </record>
    <record name="AddDispatchOperationContextPrivate" c:type="TpAddDispatchOperationContextPrivate">
    </record>
    <record name="AvatarRequirements" c:type="TpAvatarRequirements" doc="Clients MAY assume that the first type in this array is preferred there is no preferred width. there is no preferred height or 0 if there is no limit. no limit. limit. The requirements for setting an avatar on a particular protocol." version="0.11.4" glib:type-name="TpAvatarRequirements" glib:get-type="tp_avatar_requirements_get_type">
      <field name="supported_mime_types" writable="1">
        <type name="utf8" c:type="gchar**"/>
      </field>
      <field name="minimum_width" writable="1">
        <type name="uint" c:type="guint"/>
      </field>
      <field name="minimum_height" writable="1">
        <type name="uint" c:type="guint"/>
      </field>
      <field name="recommended_width" writable="1">
        <type name="uint" c:type="guint"/>
      </field>
      <field name="recommended_height" writable="1">
        <type name="uint" c:type="guint"/>
      </field>
      <field name="maximum_width" writable="1">
        <type name="uint" c:type="guint"/>
      </field>
      <field name="maximum_height" writable="1">
        <type name="uint" c:type="guint"/>
      </field>
      <field name="maximum_bytes" writable="1">
        <type name="uint" c:type="guint"/>
      </field>
      <field name="_1" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
      <field name="_2" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
      <field name="_3" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
      <field name="_4" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
      <constructor name="new" c:identifier="tp_avatar_requirements_new" doc="Clients MAY assume that the first type in this array is preferred there is no preferred width. there is no preferred height or 0 if there is no limit. no limit. limit. tp_avatar_requirements_destroy()" version="0.11.4">
        <return-value transfer-ownership="full">
          <type name="AvatarRequirements" c:type="TpAvatarRequirements*"/>
        </return-value>
        <parameters>
          <parameter name="supported_mime_types" transfer-ownership="none">
            <type name="GObject.Strv" c:type="GStrv"/>
          </parameter>
          <parameter name="minimum_width" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="minimum_height" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="recommended_width" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="recommended_height" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="maximum_width" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="maximum_height" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="maximum_bytes" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy" c:identifier="tp_avatar_requirements_copy" doc="tp_avatar_requirements_destroy()" version="0.11.4">
        <return-value transfer-ownership="full">
          <type name="AvatarRequirements" c:type="TpAvatarRequirements*"/>
        </return-value>
      </method>
      <method name="destroy" c:identifier="tp_avatar_requirements_destroy" doc="Free all memory used by the #TpAvatarRequirements." version="0.11.4">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <class name="BaseClient" c:type="TpBaseClient" doc="Data structure representing a generic #TpSvcClient implementation." version="0.11.5" parent="GObject.Object" abstract="1" glib:type-name="TpBaseClient" glib:get-type="tp_base_client_get_type" glib:type-struct="BaseClientClass">
      <method name="add_observer_filter" c:identifier="tp_base_client_add_observer_filter" doc="a %TP_HASH_TYPE_CHANNEL_CLASS Register a new channel class as Observer.ObserverChannelFilter. The @observe_channels virtual method set up using tp_base_client_implement_observe_channels() will be called whenever a new channel's properties match the ones in @filter. This method may only be called before tp_base_client_register() is called, and may only be called on objects whose class has called tp_base_client_implement_observe_channels()." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="filter" transfer-ownership="none">
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="set_observer_recover" c:identifier="tp_base_client_set_observer_recover" doc="Set whether the channel dispatcher should attempt to recover this Observer if it crashes. (This is implemented by setting the value of its Recover D-Bus property.) Normally, Observers are only notified when new channels appear. If an Observer is set to recover, when it registers with tp_base_client_register(), it will also be told about any channels that already existed before it started. For Observers that are activatable as a D-Bus service, if the Observer exits or crashes while there are any channels that match its filter, it will automatically be restarted by service-activation. This method may only be called before tp_base_client_register() is called, and may only be called on objects whose class has called tp_base_client_implement_observe_channels()." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="recover" transfer-ownership="none">
            <type name="boolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_approver_filter" c:identifier="tp_base_client_add_approver_filter" doc="a %TP_HASH_TYPE_CHANNEL_CLASS Register a new channel class as Approver.ApproverChannelFilter. The @add_dispatch_operation virtual method set up using tp_base_client_implement_add_dispatch_operation() will be called whenever a new channel's properties match the ones in @filter. This method may only be called before tp_base_client_register() is called, and may only be called on objects whose class has called tp_base_client_implement_add_dispatch_operation()." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="filter" transfer-ownership="none">
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="register" c:identifier="tp_base_client_register" doc="tp_base_client_register() yet Publish @self as an available client. After this method is called, as long as it continues to exist, it will receive and process whatever events were requested via the various filters. Methods that set the filters and other immutable state, such as tp_base_client_add_observer_filter(), cannot be called after this one." version="0.11.5" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="get_bus_name" c:identifier="tp_base_client_get_bus_name" doc="Return the bus name of @self. Note that doesn't mean the client is actually owning this name; for example if tp_base_client_register() has not been called yet or failed." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_object_path" c:identifier="tp_base_client_get_object_path" doc="Return the object path of @self. Note that doesn't mean the client is actually registered on this path; for example if tp_base_client_register() has not been called yet or failed." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <property name="dbus-daemon" version="0.11.5" writable="1" construct-only="1" doc="#TpDBusDaemon object encapsulating this object's connection to D-Bus. Read-only except during construction. This property can't be %NULL.">
        <type name="DBusDaemon" c:type="TpDBusDaemon"/>
      </property>
      <property name="name" version="0.11.5" writable="1" construct-only="1" doc="The name of the client. This is used to register the D-Bus service name and object path of the service. This property can't be %NULL.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="uniquify-name" version="0.11.5" writable="1" construct-only="1" doc="If %TRUE, tp_base_client_register() will append an unique token to the service bus name and object path to ensure they are unique.">
        <type name="boolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="BaseClientPrivate" c:type="TpBaseClientPrivate*"/>
      </field>
    </class>
    <record name="BaseClientClass" c:type="TpBaseClientClass" glib:is-gtype-struct-for="BaseClient" doc="The class of a #TpBaseClient." version="0.11.5">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_padding">
        <array zero-terminated="0" c:type="GCallback" fixed-size="7">
          <type name="GObject.Callback"/>
        </array>
      </field>
      <field name="dbus_properties_class">
        <type name="DBusPropertiesMixinClass" c:type="TpDBusPropertiesMixinClass"/>
      </field>
      <field name="priv">
        <type name="BaseClientClassPrivate" c:type="TpBaseClientClassPrivate*"/>
      </field>
    </record>
    <callback name="BaseClientClassAddDispatchOperationImpl" c:type="TpBaseClientClassAddDispatchOperationImpl" doc="if possible all having %TP_CHANNEL_FEATURE_CORE prepared if possible %TP_CHANNEL_DISPATCH_OPERATION_FEATURE_CORE prepared if possible D-Bus call Signature of the implementation of the AddDispatchOperation method. This function must call either tp_add_dispatch_operation_context_accept(), tp_add_dispatch_operation_context_delay() or tp_add_dispatch_operation_context_fail() on @context before it returns. The implementation can then use tp_channel_dispatch_operation_handle_with_async() to approve handling of the channels, or tp_channel_dispatch_operation_claim_async() to take responsibility for handling or closing them&quot;." version="0.11.5">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="client" transfer-ownership="none">
          <type name="BaseClient" c:type="TpBaseClient*"/>
        </parameter>
        <parameter name="account" transfer-ownership="none">
          <type name="Account" c:type="TpAccount*"/>
        </parameter>
        <parameter name="connection" transfer-ownership="none">
          <type name="Connection" c:type="TpConnection*"/>
        </parameter>
        <parameter name="channels" transfer-ownership="none" doc="a #GList of #TpChannel,">
          <type name="GLib.List" c:type="GList*">
            <type name="TelepathyGLib.Channel"/>
          </type>
        </parameter>
        <parameter name="dispatch_operation" transfer-ownership="none">
          <type name="ChannelDispatchOperation" c:type="TpChannelDispatchOperation*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <type name="AddDispatchOperationContext" c:type="TpAddDispatchOperationContext*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BaseClientClassObserveChannelsImpl" c:type="TpBaseClientClassObserveChannelsImpl" doc="if possible all having %TP_CHANNEL_FEATURE_CORE prepared if possible the dispatch_operation is not guaranteed to be prepared #TpChannelRequest having their object-path defined but are not guaranteed to be prepared. D-Bus call Signature of the implementation of the ObserveChannels method. This function must call either tp_observe_channels_context_accept(), tp_observe_channels_context_delay() or tp_observe_channels_context_fail() on @context before it returns." version="0.11.5">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="client" transfer-ownership="none">
          <type name="BaseClient" c:type="TpBaseClient*"/>
        </parameter>
        <parameter name="account" transfer-ownership="none">
          <type name="Account" c:type="TpAccount*"/>
        </parameter>
        <parameter name="connection" transfer-ownership="none">
          <type name="Connection" c:type="TpConnection*"/>
        </parameter>
        <parameter name="channels" transfer-ownership="none" doc="a #GList of #TpChannel,">
          <type name="GLib.List" c:type="GList*">
            <type name="TelepathyGLib.Channel"/>
          </type>
        </parameter>
        <parameter name="dispatch_operation" transfer-ownership="none" allow-none="1" doc="a #TpChannelDispatchOperation or %NULL;">
          <type name="ChannelDispatchOperation" c:type="TpChannelDispatchOperation*"/>
        </parameter>
        <parameter name="requests" transfer-ownership="none" doc="a #GList of">
          <type name="GLib.List" c:type="GList*">
            <type name="TelepathyGLib.ChannelRequest"/>
          </type>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <type name="ObserveChannelsContext" c:type="TpObserveChannelsContext*"/>
        </parameter>
      </parameters>
    </callback>
    <record name="BaseClientClassPrivate" c:type="TpBaseClientClassPrivate">
    </record>
    <record name="BaseClientPrivate" c:type="TpBaseClientPrivate">
    </record>
    <constant name="CHANNEL_DISPATCHER_BUS_NAME" value="org.freedesktop.Telepathy.ChannelDispatcher">
      <type name="utf8"/>
    </constant>
    <constant name="CHANNEL_DISPATCHER_OBJECT_PATH" value="/org/freedesktop/Telepathy/ChannelDispatcher">
      <type name="utf8"/>
    </constant>
    <constant name="CLIENT_BUS_NAME_BASE" value="org.freedesktop.Telepathy.Client.">
      <type name="utf8"/>
    </constant>
    <constant name="CLIENT_OBJECT_PATH_BASE" value="/org/freedesktop/Telepathy/Client/">
      <type name="utf8"/>
    </constant>
    <enumeration name="CMInfoSource" doc="Describes possible sources of information on connection managers' supported protocols. Since 0.11.5, there is a corresponding #GEnumClass type, %TP_TYPE_CM_INFO_SOURCE." version="0.7.1" c:type="TpCMInfoSource">
      <member name="none" value="0" c:identifier="TP_CM_INFO_SOURCE_NONE"/>
      <member name="file" value="1" c:identifier="TP_CM_INFO_SOURCE_FILE"/>
      <member name="live" value="2" c:identifier="TP_CM_INFO_SOURCE_LIVE"/>
    </enumeration>
    <constant name="CM_BUS_NAME_BASE" value="org.freedesktop.Telepathy.ConnectionManager.">
      <type name="utf8"/>
    </constant>
    <constant name="CM_OBJECT_PATH_BASE" value="/org/freedesktop/Telepathy/ConnectionManager/">
      <type name="utf8"/>
    </constant>
    <constant name="CONN_BUS_NAME_BASE" value="org.freedesktop.Telepathy.Connection.">
      <type name="utf8"/>
    </constant>
    <constant name="CONN_OBJECT_PATH_BASE" value="/org/freedesktop/Telepathy/Connection/">
      <type name="utf8"/>
    </constant>
    <class name="Capabilities" c:type="TpCapabilities" doc="An object representing capabilities a #TpConnection or #TpContact supports." version="0.11.3" parent="GObject.Object" glib:type-name="TpCapabilities" glib:get-type="tp_capabilities_get_type" glib:type-struct="CapabilitiesClass">
      <method name="get_channel_classes" c:identifier="tp_capabilities_get_channel_classes" doc="&lt;!-- --&gt;" version="0.11.3">
        <return-value transfer-ownership="full" doc="the same #GPtrArray as the #TpCapabilities:channel-classes property">
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="GLib.Value"/>
          </array>
        </return-value>
      </method>
      <method name="is_specific_to_contact" c:identifier="tp_capabilities_is_specific_to_contact" doc="&lt;!-- --&gt;" version="0.11.3">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="supports_text_chats" c:identifier="tp_capabilities_supports_text_chats" doc="Return whether private text channels can be established by providing a contact identifier. If the protocol is such that text chats can be established, but only via a more elaborate D-Bus API than normal (because more information is needed), then this method will return %FALSE. HandleTypeContact as TargetHandleType and a contact identifier can be expected to work, %FALSE otherwise." version="0.11.3">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="supports_text_chatrooms" c:identifier="tp_capabilities_supports_text_chatrooms" doc="If the #TpCapabilities:contact-specific property is %FALSE, this function checks if named text chatrooms can be joined by providing a chatroom identifier. If the #TpCapabilities:contact-specific property is %TRUE, this function checks if the contact associated with this #TpCapabilities can be invited to named text chatrooms. If the protocol is such that chatrooms can be joined or contacts can be invited, but only via a more elaborate D-Bus API than normal (because more information is needed), then this method will return %FALSE. HandleTypeRoom as TargetHandleType and a channel identifier can be expected to work, %FALSE otherwise." version="0.11.3">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <property name="contact-specific" writable="1" construct-only="1" doc="Whether this object accurately describes the capabilities of a particular contact, or if it's only a guess based on the capabilities of the underlying connection.">
        <type name="boolean" c:type="gboolean"/>
      </property>
    </class>
    <record name="CapabilitiesClass" c:type="TpCapabilitiesClass" glib:is-gtype-struct-for="Capabilities">
    </record>
    <record name="CapabilitiesPrivate" c:type="TpCapabilitiesPrivate">
    </record>
    <class name="Channel" c:type="TpChannel" doc="A proxy object for a Telepathy channel. A proxy object for a Telepathy channel. There are no interesting public struct fields. subclassing.)" version="0.7.1" parent="Proxy" glib:type-name="TpChannel" glib:get-type="tp_channel_get_type" glib:type-struct="ChannelClass">
      <constructor name="new" c:identifier="tp_channel_new" doc="%TP_UNKNOWN_HANDLE_TYPE if not (if @optional_handle_type is %TP_UNKNOWN_HANDLE_TYPE or %TP_HANDLE_TYPE_NONE, this must be 0) &lt;!-- --&gt;" version="0.7.1" throws="1">
        <return-value transfer-ownership="full">
          <type name="Channel" c:type="TpChannel*"/>
        </return-value>
        <parameters>
          <parameter name="conn" transfer-ownership="none">
            <type name="Connection" c:type="TpConnection*"/>
          </parameter>
          <parameter name="object_path" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="optional_channel_type" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="optional_handle_type" transfer-ownership="none">
            <type name="HandleType" c:type="TpHandleType"/>
          </parameter>
          <parameter name="optional_handle" transfer-ownership="none">
            <type name="Handle" c:type="TpHandle"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_properties" c:identifier="tp_channel_new_from_properties" doc="the immutable properties of the channel, as signalled by the NewChannel D-Bus signal or returned by the strings (D-Bus interface name + &quot;.&quot; + property name) to #GValue instances &lt;!-- --&gt;" version="0.7.19" throws="1">
        <return-value transfer-ownership="full">
          <type name="Channel" c:type="TpChannel*"/>
        </return-value>
        <parameters>
          <parameter name="conn" transfer-ownership="none">
            <type name="Connection" c:type="TpConnection*"/>
          </parameter>
          <parameter name="object_path" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="immutable_properties" transfer-ownership="none">
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </constructor>
      <function name="init_known_interfaces" c:identifier="tp_channel_init_known_interfaces" doc="Ensure that the known interfaces for TpChannel have been set up. This is done automatically when necessary, but for correct overriding of library interfaces by local extensions, you should call this function before calling tp_proxy_or_subclass_hook_on_interface_add() with first argument %TP_TYPE_CHANNEL." version="0.7.6">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <function name="get_feature_quark_core" c:identifier="tp_channel_get_feature_quark_core">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="get_feature_quark_group" c:identifier="tp_channel_get_feature_quark_group">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="get_feature_quark_chat_states" c:identifier="tp_channel_get_feature_quark_chat_states">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <method name="get_channel_type" c:identifier="tp_channel_get_channel_type" doc="Get the D-Bus interface name representing this channel's type, if it has been discovered. This is the same as the #TpChannel:channel-type property; it isn't guaranteed to be non-%NULL until the %TP_CHANNEL_FEATURE_CORE feature has been prepared. type or %NULL, if the channel is not yet ready." version="0.7.12">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_channel_type_id" c:identifier="tp_channel_get_channel_type_id" doc="Get the D-Bus interface name representing this channel's type, as a GQuark, if it has been discovered. This is the same as the #TpChannel:channel-type property, except that it is a GQuark rather than a string. It isn't guaranteed to be nonzero until the %TP_CHANNEL_FEATURE_CORE property is ready. type or 0, if the channel is not yet ready." version="0.7.12">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </method>
      <method name="get_handle" c:identifier="tp_channel_get_handle" doc="Get the handle representing the contact, chatroom, etc. with which this channel communicates for its whole lifetime, or 0 if there is no such handle or it has not yet been discovered. This is the same as the #TpChannel:handle property. It isn't guaranteed to have its final value until the %TP_CHANNEL_FEATURE_CORE property is ready. If %handle_type is not %NULL, the type of handle is written into it. This will be %TP_UNKNOWN_HANDLE_TYPE if the handle has not yet been discovered, or %TP_HANDLE_TYPE_NONE if there is no handle with which this channel will always communicate. This is the same as the #TpChannel:handle-type property." version="0.7.12">
        <return-value transfer-ownership="full">
          <type name="Handle" c:type="TpHandle"/>
        </return-value>
        <parameters>
          <parameter name="handle_type" direction="out" caller-allocates="1" transfer-ownership="none" doc="if not %NULL, used to return the type of this handle">
            <type name="HandleType" c:type="TpHandleType*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_identifier" c:identifier="tp_channel_get_identifier" doc="This channel's associated identifier, or the empty string if no identifier or unknown. This is the same as the #TpChannel:identifier property, and isn't guaranteed to be set until the %TP_CHANNEL_FEATURE_CORE property is ready. previously either be %NULL or the empty string if there was no suitable value. It is now non-%NULL in all cases." version="0.7.21">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="borrow_connection" c:identifier="tp_channel_borrow_connection" doc="Returns the connection for this channel. The returned pointer is only valid while this channel is valid - reference it with g_object_ref() if needed." version="0.7.12">
        <return-value transfer-ownership="none" doc="the value of #TpChannel:connection">
          <type name="Connection" c:type="TpConnection*"/>
        </return-value>
      </method>
      <method name="borrow_immutable_properties" c:identifier="tp_channel_borrow_immutable_properties" doc="Returns the immutable D-Bus properties of this channel, the same as #TpChannel:channel-properties. The returned hash table should not be altered, and is not necessarily valid after the main loop is next re-entered. Copy it with g_boxed_copy() (its type is %TP_HASH_TYPE_QUALIFIED_PROPERTY_VALUE_MAP) if a copy that remains valid must be kept. If the #TpChannel:channel-properties property was not set during construction (e.g. by calling tp_channel_new_from_properties()), a reasonable but possibly incomplete version will be made up from the values of individual properties; reading this property repeatedly may yield progressively more complete values until the %TP_CHANNEL_FEATURE_CORE feature is prepared. where the keys are strings, D-Bus interface name + &quot;.&quot; + property name, and the values are #GValue instances">
        <return-value transfer-ownership="none" doc="a #GHashTable">
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="GObject.Value"/>
          </type>
        </return-value>
      </method>
      <method name="group_get_self_handle" c:identifier="tp_channel_group_get_self_handle">
        <return-value transfer-ownership="full">
          <type name="Handle" c:type="TpHandle"/>
        </return-value>
      </method>
      <method name="group_get_flags" c:identifier="tp_channel_group_get_flags">
        <return-value transfer-ownership="full">
          <type name="ChannelGroupFlags" c:type="TpChannelGroupFlags"/>
        </return-value>
      </method>
      <method name="group_get_members" c:identifier="tp_channel_group_get_members">
        <return-value transfer-ownership="none">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
      </method>
      <method name="group_get_local_pending" c:identifier="tp_channel_group_get_local_pending">
        <return-value transfer-ownership="none">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
      </method>
      <method name="group_get_remote_pending" c:identifier="tp_channel_group_get_remote_pending">
        <return-value transfer-ownership="none">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
      </method>
      <method name="group_get_local_pending_info" c:identifier="tp_channel_group_get_local_pending_info">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="local_pending" transfer-ownership="none">
            <type name="Handle" c:type="TpHandle"/>
          </parameter>
          <parameter name="actor" transfer-ownership="none">
            <type name="Handle" c:type="TpHandle*"/>
          </parameter>
          <parameter name="reason" transfer-ownership="none">
            <type name="ChannelGroupChangeReason" c:type="TpChannelGroupChangeReason*"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <array c:type="gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="group_get_handle_owner" c:identifier="tp_channel_group_get_handle_owner">
        <return-value transfer-ownership="full">
          <type name="Handle" c:type="TpHandle"/>
        </return-value>
        <parameters>
          <parameter name="handle" transfer-ownership="none">
            <type name="Handle" c:type="TpHandle"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_chat_state" c:identifier="tp_channel_get_chat_state" doc="Return the chat state for the given contact. If tp_proxy_is_prepared() would return %FALSE for the feature %TP_CHANNEL_FEATURE_CHAT_STATES, the result will always be %TP_CHANNEL_CHAT_STATE_INACTIVE. if their chat state is not known" version="0.11.3">
        <return-value transfer-ownership="full">
          <type name="ChannelChatState" c:type="TpChannelChatState"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <type name="Handle" c:type="TpHandle"/>
          </parameter>
        </parameters>
      </method>
      <property name="channel-ready" doc="Initially %FALSE; changes to %TRUE when tp_proxy_prepare_async() has finished preparing %TP_CHANNEL_FEATURE_CORE, and if the channel is a group, %TP_CHANNEL_FEATURE_GROUP. This is a less general form of tp_proxy_is_prepared(), which should be used in new code. One important difference is that after #TpChannel::invalidated is signalled, #TpChannel:channel-ready keeps its current value - which might be %TRUE, if the channel was successfully prepared before it became invalidated - but tp_proxy_is_prepared() returns %FALSE for all features. Change notification is via notify::channel-ready.">
        <type name="boolean" c:type="gboolean"/>
      </property>
      <property name="connection" writable="1" construct-only="1" doc="The #TpConnection to which this #TpChannel belongs. Used for e.g. handle manipulation.">
        <type name="Connection" c:type="TpConnection"/>
      </property>
      <property name="group-flags" version="0.7.12" doc="If the %TP_CHANNEL_FEATURE_GROUP feature has been prepared successfully, #TpChannelGroupFlags indicating the capabilities and behaviour of that group. Otherwise, this may be 0. Change notification is via notify::group-flags or TpChannel::group-flags-changed.">
        <type name="uint" c:type="guint"/>
      </property>
      <property name="group-self-handle" version="0.7.12" doc="If this channel is a group and %TP_CHANNEL_FEATURE_GROUP has been prepared, and the user is a member of the group, the #TpHandle representing them in this group. Otherwise, the result may be either a handle representing the user, or 0. Change notification is via notify::group-self-handle.">
        <type name="uint" c:type="guint"/>
      </property>
      <property name="identifier" doc="This channel's associated identifier, or the empty string if it has handle type %TP_HANDLE_TYPE_NONE. For channels where #TpChannel:handle is non-zero, this is the result of inspecting #TpChannel:handle. This is not guaranteed to be set until tp_proxy_prepare_async() has finished preparing %TP_CHANNEL_FEATURE_CORE; until then, it may be the empty string. it was %NULL before an identifier was known, or when a channel with no TargetID D-Bus property had TargetHandleType %TP_HANDLE_TYPE_NONE.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <field name="parent">
        <type name="Proxy" c:type="TpProxy"/>
      </field>
      <field name="priv">
        <type name="ChannelPrivate" c:type="TpChannelPrivate*"/>
      </field>
      <glib:signal name="chat-state-changed" doc="Emitted when a contact's chat state changes after tp_proxy_prepare_async() has finished preparing the feature %TP_CHANNEL_FEATURE_CHAT_STATES." version="0.11.3">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="group-flags-changed" doc="Emitted when the #TpChannel:group-flags property changes while the channel is ready." version="0.7.12">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="added" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="removed" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="group-members-changed-detailed" doc="containing the full members added containing the members (full, local-pending or remote-pending) removed #guint containing the local-pending members added #guint containing the remote-pending members added a #GHashTable mapping (gchar *) to #GValue containing details about the change, as described in the specification of the MembersChangedDetailed signal. Emitted when the group members change in a Group channel that is ready. Contains a superset of the information in the TpChannel::group-members-changed signal, and is emitted at the same time; applications can connect to this signal and ignore the other." version="0.7.21">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="added" transfer-ownership="none" doc="a #GArray of #guint">
            <array name="GLib.Array" c:type="GArray_guint_">
              <type name="uint"/>
            </array>
          </parameter>
          <parameter name="removed" transfer-ownership="none" doc="a #GArray of #guint">
            <array name="GLib.Array" c:type="GArray_guint_">
              <type name="uint"/>
            </array>
          </parameter>
          <parameter name="local_pending" transfer-ownership="none" doc="a #GArray of">
            <array name="GLib.Array" c:type="GArray_guint_">
              <type name="uint"/>
            </array>
          </parameter>
          <parameter name="remote_pending" transfer-ownership="none" doc="a #GArray of">
            <array name="GLib.Array" c:type="GArray_guint_">
              <type name="uint"/>
            </array>
          </parameter>
          <parameter name="details" transfer-ownership="none">
            <type name="GLib.HashTable" c:type="GHashTable_gchararray+GValue_">
              <type name="utf8"/>
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <enumeration name="ChannelCallStateFlags" c:type="TpChannelCallStateFlags">
      <member name="ringing" value="1" c:identifier="TP_CHANNEL_CALL_STATE_RINGING"/>
      <member name="queued" value="2" c:identifier="TP_CHANNEL_CALL_STATE_QUEUED"/>
      <member name="held" value="4" c:identifier="TP_CHANNEL_CALL_STATE_HELD"/>
      <member name="forwarded" value="8" c:identifier="TP_CHANNEL_CALL_STATE_FORWARDED"/>
      <member name="in_progress" value="16" c:identifier="TP_CHANNEL_CALL_STATE_IN_PROGRESS"/>
    </enumeration>
    <enumeration name="ChannelChatState" c:type="TpChannelChatState">
      <member name="gone" value="0" c:identifier="TP_CHANNEL_CHAT_STATE_GONE"/>
      <member name="inactive" value="1" c:identifier="TP_CHANNEL_CHAT_STATE_INACTIVE"/>
      <member name="active" value="2" c:identifier="TP_CHANNEL_CHAT_STATE_ACTIVE"/>
      <member name="paused" value="3" c:identifier="TP_CHANNEL_CHAT_STATE_PAUSED"/>
      <member name="composing" value="4" c:identifier="TP_CHANNEL_CHAT_STATE_COMPOSING"/>
    </enumeration>
    <record name="ChannelClass" c:type="TpChannelClass" glib:is-gtype-struct-for="Channel" doc="The class of a #TpChannel. In addition to @parent_class there are four pointers reserved for possible future use. subclassing.)" version="0.7.1">
      <field name="parent_class">
        <type name="ProxyClass" c:type="TpProxyClass"/>
      </field>
      <field name="_1">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="_2">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="_3">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="_4">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
    </record>
    <class name="ChannelDispatchOperation" c:type="TpChannelDispatchOperation" doc="One of the channel dispatcher's functions is to offer incoming channels to Approver clients for approval. An approver should generally ask the user whether they want to participate in the requested communication channels (join the chat or chatroom, answer the call, accept the file transfer, or whatever is appropriate). A collection of channels offered in this way is represented by a ChannelDispatchOperation object. If the user wishes to accept the communication channels, the approver should call tp_cli_channel_dispatch_operation_call_handle_with() to indicate the user's or approver's preferred handler for the channels (the empty string indicates no particular preference, and will cause any suitable handler to be used). If the user wishes to reject the communication channels, or if the user accepts the channels and the approver will handle them itself, the approver should call tp_cli_channel_dispatch_operation_call_claim(). If this method succeeds, the approver immediately has control over the channels as their primary handler, and may do anything with them (in particular, it may close them in whatever way seems most appropriate). There are various situations in which the channel dispatch operation will be closed, causing the #TpProxy::invalidated signal to be emitted. If this happens, the approver should stop prompting the user. Because all approvers are launched simultaneously, the user might respond to another approver; if this happens, the #TpProxy::invalidated signal will be emitted with the domain %TP_DBUS_ERRORS and the error code %TP_DBUS_ERROR_OBJECT_REMOVED. If a channel closes, the #TpChannelDispatchOperation::channel-lost signal is emitted. If all channels close, there is nothing more to dispatch, so the #TpProxy::invalidated signal will be emitted with the domain %TP_DBUS_ERRORS and the error code %TP_DBUS_ERROR_OBJECT_REMOVED. If the channel dispatcher crashes or exits, the #TpProxy::invalidated signal will be emitted with the domain %TP_DBUS_ERRORS and the error code %TP_DBUS_ERROR_NAME_OWNER_LOST. In a high-quality implementation, the dispatcher should be restarted, at which point it will create new channel dispatch operations for any undispatched channels, and the approver will be notified again. be added in a later version of telepathy-glib, along with a mechanism similar to tp_connection_call_when_ready()." version="0.7.32" parent="Proxy" glib:type-name="TpChannelDispatchOperation" glib:get-type="tp_channel_dispatch_operation_get_type" glib:type-struct="ChannelDispatchOperationClass">
      <constructor name="new" c:identifier="tp_channel_dispatch_operation_new" doc="properties of this channel dispatch operation, or %NULL if none are known Convenience function to create a new channel dispatch operation proxy. The @immutable_properties argument is not yet used. running" throws="1">
        <return-value transfer-ownership="full">
          <type name="ChannelDispatchOperation" c:type="TpChannelDispatchOperation*"/>
        </return-value>
        <parameters>
          <parameter name="bus_daemon" transfer-ownership="none">
            <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
          </parameter>
          <parameter name="object_path" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="immutable_properties" transfer-ownership="none">
            <type name="GLib.HashTable" c:type="GHashTable*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="init_known_interfaces" c:identifier="tp_channel_dispatch_operation_init_known_interfaces" doc="Ensure that the known interfaces for TpChannelDispatchOperation have been set up. This is done automatically when necessary, but for correct overriding of library interfaces by local extensions, you should call this function before calling tp_proxy_or_subclass_hook_on_interface_add() with first argument %TP_TYPE_CHANNEL_DISPATCH_OPERATION." version="0.7.32">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <function name="get_feature_quark_core" c:identifier="tp_channel_dispatch_operation_get_feature_quark_core">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <method name="handle_with_async" c:identifier="tp_channel_dispatch_operation_handle_with_async" doc="of the channel handler that should handle the channel, or %NULL if the client has no preferred channel handler Called by an approver to accept a channel bundle and request that the given handler be used to handle it. If successful, this method will cause the #TpProxy::invalidated signal to be emitted with the TP_DBUS_ERROR_OBJECT_REMOVED error code. However, this method may fail because the dispatch has already been completed and the object has already gone. If this occurs, it indicates that another approver has asked for the bundle to be handled by a particular handler. The approver MUST NOT attempt to interact with the channels further in this case, unless it is separately invoked as the handler. Approvers which are also channel handlers SHOULD use tp_channel_dispatch_operation_claim_async() instead of tp_channel_dispatch_operation_handle_with_async() to request that they can handle a channel bundle themselves." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="handler" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="handle_with_finish" c:identifier="tp_channel_dispatch_operation_handle_with_finish" doc="Finishes an async call to HandleWith()." version="0.11.5" throws="1">
        <return-value transfer-ownership="none" doc="call was successful, otherwise %FALSE">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="claim_async" c:identifier="tp_channel_dispatch_operation_claim_async" doc="Called by an approver to claim channels for handling internally. If this method is called successfully, the process calling this method becomes the handler for the channel. If successful, this method will cause the #TpProxy::invalidated signal to be emitted, in the same wayas for tp_channel_dispatch_operation_handle_with_async(). This method may fail because the dispatch operation has already been completed. Again, see tp_channel_dispatch_operation_claim_async() for more details. The approver MUST NOT attempt to interact with the channels further in this case." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="2">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="claim_finish" c:identifier="tp_channel_dispatch_operation_claim_finish" doc="Finishes an async call to Claim()." version="0.11.5" throws="1">
        <return-value transfer-ownership="none" doc="call was successful, otherwise %FALSE">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="account" version="0.11.5" writable="1" construct-only="1" doc="The #TpAccount with which the connection and channels are associated. Read-only except during construction. This is not guaranteed to be set until tp_proxy_prepare_async() has finished preparing %TP_CHANNEL_DISPATCH_OPERATION_FEATURE_CORE.">
        <type name="Account" c:type="TpAccount"/>
      </property>
      <property name="channels" version="0.11.5" writable="1" construct-only="1" doc="A #GPtrArray containing the #TpChannel to be dispatched. Read-only. This is not guaranteed to be set until tp_proxy_prepare_async() has finished preparing %TP_CHANNEL_DISPATCH_OPERATION_FEATURE_CORE.">
        <type name="GLib.PtrArray" c:type="GPtrArray"/>
      </property>
      <property name="connection" version="0.11.5" writable="1" construct-only="1" doc="The #TpConnection with which the channels are associated. Read-only except during construction. This is not guaranteed to be set until tp_proxy_prepare_async() has finished preparing %TP_CHANNEL_DISPATCH_OPERATION_FEATURE_CORE.">
        <type name="Connection" c:type="TpConnection"/>
      </property>
      <property name="possible-handlers" version="0.11.5" doc="A #GStrv containing the well known bus names (starting with TP_CLIENT_BUS_NAME_BASE) of the possible Handlers for the channels Read-only except during construction. This is not guaranteed to be set until tp_proxy_prepare_async() has finished preparing %TP_CHANNEL_DISPATCH_OPERATION_FEATURE_CORE.">
        <type name="GObject.Strv" c:type="GStrv"/>
      </property>
      <field name="parent">
        <type name="Proxy" c:type="TpProxy"/>
      </field>
      <field name="priv">
        <type name="ChannelDispatchOperationPrivate" c:type="TpChannelDispatchOperationPrivate*"/>
      </field>
      <glib:signal name="channel-lost" doc="Emitted when a channel has closed before it could be claimed or handled." version="0.11.5">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="channel" transfer-ownership="none">
            <type name="Channel" c:type="TpChannel"/>
          </parameter>
          <parameter name="domain" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="code" transfer-ownership="none">
            <type name="int" c:type="gint"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <type name="utf8" c:type="gchararray"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ChannelDispatchOperationClass" c:type="TpChannelDispatchOperationClass" glib:is-gtype-struct-for="ChannelDispatchOperation" doc="The class of a #TpChannelDispatchOperation.">
      <field name="parent_class">
        <type name="ProxyClass" c:type="TpProxyClass"/>
      </field>
      <field name="_padding">
        <array zero-terminated="0" c:type="GCallback" fixed-size="7">
          <type name="GObject.Callback"/>
        </array>
      </field>
      <field name="priv">
        <type name="ChannelDispatchOperationClassPrivate" c:type="TpChannelDispatchOperationClassPrivate*"/>
      </field>
    </record>
    <record name="ChannelDispatchOperationClassPrivate" c:type="TpChannelDispatchOperationClassPrivate">
    </record>
    <record name="ChannelDispatchOperationPrivate" c:type="TpChannelDispatchOperationPrivate">
    </record>
    <enumeration name="ChannelGroupChangeReason" c:type="TpChannelGroupChangeReason">
      <member name="none" value="0" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_NONE"/>
      <member name="offline" value="1" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_OFFLINE"/>
      <member name="kicked" value="2" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_KICKED"/>
      <member name="busy" value="3" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_BUSY"/>
      <member name="invited" value="4" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_INVITED"/>
      <member name="banned" value="5" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_BANNED"/>
      <member name="error" value="6" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_ERROR"/>
      <member name="invalid_contact" value="7" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_INVALID_CONTACT"/>
      <member name="no_answer" value="8" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_NO_ANSWER"/>
      <member name="renamed" value="9" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_RENAMED"/>
      <member name="permission_denied" value="10" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_PERMISSION_DENIED"/>
      <member name="separated" value="11" c:identifier="TP_CHANNEL_GROUP_CHANGE_REASON_SEPARATED"/>
    </enumeration>
    <enumeration name="ChannelGroupFlags" c:type="TpChannelGroupFlags">
      <member name="can_add" value="1" c:identifier="TP_CHANNEL_GROUP_FLAG_CAN_ADD"/>
      <member name="can_remove" value="2" c:identifier="TP_CHANNEL_GROUP_FLAG_CAN_REMOVE"/>
      <member name="can_rescind" value="4" c:identifier="TP_CHANNEL_GROUP_FLAG_CAN_RESCIND"/>
      <member name="message_add" value="8" c:identifier="TP_CHANNEL_GROUP_FLAG_MESSAGE_ADD"/>
      <member name="message_remove" value="16" c:identifier="TP_CHANNEL_GROUP_FLAG_MESSAGE_REMOVE"/>
      <member name="message_accept" value="32" c:identifier="TP_CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT"/>
      <member name="message_reject" value="64" c:identifier="TP_CHANNEL_GROUP_FLAG_MESSAGE_REJECT"/>
      <member name="message_rescind" value="128" c:identifier="TP_CHANNEL_GROUP_FLAG_MESSAGE_RESCIND"/>
      <member name="channel_specific_handles" value="256" c:identifier="TP_CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES"/>
      <member name="only_one_group" value="512" c:identifier="TP_CHANNEL_GROUP_FLAG_ONLY_ONE_GROUP"/>
      <member name="handle_owners_not_available" value="1024" c:identifier="TP_CHANNEL_GROUP_FLAG_HANDLE_OWNERS_NOT_AVAILABLE"/>
      <member name="properties" value="2048" c:identifier="TP_CHANNEL_GROUP_FLAG_PROPERTIES"/>
      <member name="members_changed_detailed" value="4096" c:identifier="TP_CHANNEL_GROUP_FLAG_MEMBERS_CHANGED_DETAILED"/>
      <member name="message_depart" value="8192" c:identifier="TP_CHANNEL_GROUP_FLAG_MESSAGE_DEPART"/>
    </enumeration>
    <enumeration name="ChannelMediaCapabilities" c:type="TpChannelMediaCapabilities">
      <member name="audio" value="1" c:identifier="TP_CHANNEL_MEDIA_CAPABILITY_AUDIO"/>
      <member name="video" value="2" c:identifier="TP_CHANNEL_MEDIA_CAPABILITY_VIDEO"/>
      <member name="nat_traversal_stun" value="4" c:identifier="TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_STUN"/>
      <member name="nat_traversal_gtalk_p2p" value="8" c:identifier="TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_GTALK_P2P"/>
      <member name="nat_traversal_ice_udp" value="16" c:identifier="TP_CHANNEL_MEDIA_CAPABILITY_NAT_TRAVERSAL_ICE_UDP"/>
      <member name="immutable_streams" value="32" c:identifier="TP_CHANNEL_MEDIA_CAPABILITY_IMMUTABLE_STREAMS"/>
    </enumeration>
    <enumeration name="ChannelPasswordFlags" c:type="TpChannelPasswordFlags">
      <member name="channel_password_flag_provide" value="8" c:identifier="TP_CHANNEL_PASSWORD_FLAG_PROVIDE"/>
    </enumeration>
    <record name="ChannelPrivate" c:type="TpChannelPrivate">
    </record>
    <class name="ChannelRequest" c:type="TpChannelRequest" doc="Requesting a channel from the channel dispatcher can take some time, so an object is created in the channel dispatcher to represent each request. This proxy represents one of those objects. Any client can call tp_cli_channel_request_call_cancel() at any time to attempt to cancel the request. On success, the #TpChannelRequest::succeeded signal will be emitted. Immediately after that, the #TpProxy::invalidated signal will be emitted, with the domain %TP_DBUS_ERRORS and the error code %TP_DBUS_ERROR_OBJECT_REMOVED (this is not an error condition, it merely indicates that the channel request no longer exists). On failure, the #TpProxy::invalidated signal will be emitted with some other suitable error, usually from the %TP_ERRORS domain. If the channel dispatcher crashes or exits, the #TpProxy::invalidated signal will be emitted with the domain %TP_DBUS_ERRORS and the error code %TP_DBUS_ERROR_NAME_OWNER_LOST. UserActionTime, PreferredHandler, Requests and Interfaces properties will be added in a later version of telepathy-glib, along with a mechanism similar to tp_connection_call_when_ready(). Until suitable convenience methods are implemented, the generic tp_cli_dbus_properties_call_get_all() method can be used to get those properties." version="0.7.32" parent="Proxy" glib:type-name="TpChannelRequest" glib:get-type="tp_channel_request_get_type" glib:type-struct="ChannelRequestClass">
      <constructor name="new" c:identifier="tp_channel_request_new" doc="properties of this channel request, or %NULL if none are known Convenience function to create a new channel request proxy. If the channel request was newly created, the client making the request is responsible for calling tp_cli_channel_request_call_proceed() when it is ready for the channel request to proceed. The @immutable_properties argument is not yet used. not running" throws="1">
        <return-value transfer-ownership="full">
          <type name="ChannelRequest" c:type="TpChannelRequest*"/>
        </return-value>
        <parameters>
          <parameter name="bus_daemon" transfer-ownership="none">
            <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
          </parameter>
          <parameter name="object_path" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="immutable_properties" transfer-ownership="none">
            <type name="GLib.HashTable" c:type="GHashTable*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="init_known_interfaces" c:identifier="tp_channel_request_init_known_interfaces" doc="Ensure that the known interfaces for TpChannelRequest have been set up. This is done automatically when necessary, but for correct overriding of library interfaces by local extensions, you should call this function before calling tp_proxy_or_subclass_hook_on_interface_add() with first argument %TP_TYPE_CHANNEL_REQUEST." version="0.7.32">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <field name="parent">
        <type name="Proxy" c:type="TpProxy"/>
      </field>
      <field name="priv">
        <type name="ChannelRequestPrivate" c:type="TpChannelRequestPrivate*"/>
      </field>
      <glib:signal name="succeeded" doc="Emitted when the channel request succeeds.">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ChannelRequestClass" c:type="TpChannelRequestClass" glib:is-gtype-struct-for="ChannelRequest" doc="The class of a #TpChannelRequest.">
      <field name="parent_class">
        <type name="ProxyClass" c:type="TpProxyClass"/>
      </field>
      <field name="_padding">
        <array zero-terminated="0" c:type="GCallback" fixed-size="7">
          <type name="GObject.Callback"/>
        </array>
      </field>
      <field name="priv">
        <type name="ChannelRequestClassPrivate" c:type="TpChannelRequestClassPrivate*"/>
      </field>
    </record>
    <record name="ChannelRequestClassPrivate" c:type="TpChannelRequestClassPrivate">
    </record>
    <record name="ChannelRequestPrivate" c:type="TpChannelRequestPrivate">
    </record>
    <enumeration name="ChannelTextMessageFlags" c:type="TpChannelTextMessageFlags">
      <member name="truncated" value="1" c:identifier="TP_CHANNEL_TEXT_MESSAGE_FLAG_TRUNCATED"/>
      <member name="non_text_content" value="2" c:identifier="TP_CHANNEL_TEXT_MESSAGE_FLAG_NON_TEXT_CONTENT"/>
      <member name="scrollback" value="4" c:identifier="TP_CHANNEL_TEXT_MESSAGE_FLAG_SCROLLBACK"/>
      <member name="rescued" value="8" c:identifier="TP_CHANNEL_TEXT_MESSAGE_FLAG_RESCUED"/>
    </enumeration>
    <enumeration name="ChannelTextMessageType" c:type="TpChannelTextMessageType">
      <member name="normal" value="0" c:identifier="TP_CHANNEL_TEXT_MESSAGE_TYPE_NORMAL"/>
      <member name="action" value="1" c:identifier="TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION"/>
      <member name="notice" value="2" c:identifier="TP_CHANNEL_TEXT_MESSAGE_TYPE_NOTICE"/>
      <member name="auto_reply" value="3" c:identifier="TP_CHANNEL_TEXT_MESSAGE_TYPE_AUTO_REPLY"/>
      <member name="delivery_report" value="4" c:identifier="TP_CHANNEL_TEXT_MESSAGE_TYPE_DELIVERY_REPORT"/>
    </enumeration>
    <enumeration name="ChannelTextSendError" c:type="TpChannelTextSendError">
      <member name="unknown" value="0" c:identifier="TP_CHANNEL_TEXT_SEND_ERROR_UNKNOWN"/>
      <member name="offline" value="1" c:identifier="TP_CHANNEL_TEXT_SEND_ERROR_OFFLINE"/>
      <member name="invalid_contact" value="2" c:identifier="TP_CHANNEL_TEXT_SEND_ERROR_INVALID_CONTACT"/>
      <member name="permission_denied" value="3" c:identifier="TP_CHANNEL_TEXT_SEND_ERROR_PERMISSION_DENIED"/>
      <member name="too_long" value="4" c:identifier="TP_CHANNEL_TEXT_SEND_ERROR_TOO_LONG"/>
      <member name="not_implemented" value="5" c:identifier="TP_CHANNEL_TEXT_SEND_ERROR_NOT_IMPLEMENTED"/>
    </enumeration>
    <callback name="ChannelWhenReadyCb" c:type="TpChannelWhenReadyCb" doc="if error is non-%NULL, error-&gt;domain is TP_DBUS_ERRORS and error-&gt;code is TP_DBUS_ERROR_PROXY_UNREFERENCED) it was invalidated if it is now invalid Signature of a callback passed to tp_channel_call_when_ready(), which will be called exactly once, when the channel becomes ready or invalid (whichever happens first)">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="channel" transfer-ownership="none">
          <type name="Channel" c:type="TpChannel*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="2">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="ConnMgrParamFlags" c:type="TpConnMgrParamFlags">
      <member name="required" value="1" c:identifier="TP_CONN_MGR_PARAM_FLAG_REQUIRED"/>
      <member name="register" value="2" c:identifier="TP_CONN_MGR_PARAM_FLAG_REGISTER"/>
      <member name="has_default" value="4" c:identifier="TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT"/>
      <member name="secret" value="8" c:identifier="TP_CONN_MGR_PARAM_FLAG_SECRET"/>
      <member name="dbus_property" value="16" c:identifier="TP_CONN_MGR_PARAM_FLAG_DBUS_PROPERTY"/>
    </enumeration>
    <class name="Connection" c:type="TpConnection" doc="A proxy object for a Telepathy connection. There are no interesting public struct fields. subclassing.)" version="0.7.1" parent="Proxy" glib:type-name="TpConnection" glib:get-type="tp_connection_get_type" glib:type-struct="ConnectionClass">
      <constructor name="new" c:identifier="tp_connection_new" doc="process; if well-known, this function will make a blocking call to the bus daemon to resolve the unique name. May be %NULL if @object_path is not, in which case a well-known name will be derived from @object_path. May be %NULL if @bus_name is a well-known name, in which case the object path will be derived from @bus_name. &lt;!-- --&gt; fails or on invalid arguments" version="0.7.1" throws="1">
        <return-value transfer-ownership="full">
          <type name="Connection" c:type="TpConnection*"/>
        </return-value>
        <parameters>
          <parameter name="dbus" transfer-ownership="none">
            <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
          </parameter>
          <parameter name="bus_name" transfer-ownership="none" allow-none="1" doc="the well-known or unique name of the connection">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="object_path" transfer-ownership="none" allow-none="1" doc="the object path of the connection process.">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="init_known_interfaces" c:identifier="tp_connection_init_known_interfaces" doc="Ensure that the known interfaces for TpConnection have been set up. This is done automatically when necessary, but for correct overriding of library interfaces by local extensions, you should call this function before calling tp_proxy_or_subclass_hook_on_interface_add() with first argument %TP_TYPE_CONNECTION." version="0.7.6">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <function name="presence_type_cmp_availability" c:identifier="tp_connection_presence_type_cmp_availability" doc="Compares @p1 and @p2 like strcmp(). @p1 &gt; @p2 means @p1 is more available than @p2. unknown &gt; unset" version="0.7.16">
        <return-value transfer-ownership="none">
          <type name="int" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="p1" transfer-ownership="none">
            <type name="ConnectionPresenceType" c:type="TpConnectionPresenceType"/>
          </parameter>
          <parameter name="p2" transfer-ownership="none">
            <type name="ConnectionPresenceType" c:type="TpConnectionPresenceType"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_feature_quark_core" c:identifier="tp_connection_get_feature_quark_core">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="get_feature_quark_connected" c:identifier="tp_connection_get_feature_quark_connected">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="get_feature_quark_capabilities" c:identifier="tp_connection_get_feature_quark_capabilities">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="get_feature_quark_avatar_requirements" c:identifier="tp_connection_get_feature_quark_avatar_requirements">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <method name="get_status" c:identifier="tp_connection_get_status" doc="If @reason is not %NULL it is set to the reason why &quot;status&quot; changed to its current value, or %TP_CONNECTION_STATUS_REASON_NONE_SPECIFIED if unknown. don't know yet." version="0.7.14">
        <return-value transfer-ownership="full">
          <type name="ConnectionStatus" c:type="TpConnectionStatus"/>
        </return-value>
        <parameters>
          <parameter name="reason" direction="out" caller-allocates="1" transfer-ownership="none" doc="a TpConnectionStatusReason, or %NULL">
            <type name="ConnectionStatusReason" c:type="TpConnectionStatusReason*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_self_handle" c:identifier="tp_connection_get_self_handle" doc="Return the %TP_HANDLE_TYPE_CONTACT handle of the local user on this connection, or 0 if the self-handle is not known yet or the connection has become invalid (the TpProxy::invalidated signal). The returned handle is not necessarily valid forever (the notify::self-handle signal will be emitted if it changes, which can happen on protocols such as IRC). Construct a #TpContact object if you want to track the local user's identifier in the protocol, or other information like their presence status, over time." version="0.7.26">
        <return-value transfer-ownership="full">
          <type name="Handle" c:type="TpHandle"/>
        </return-value>
      </method>
      <method name="get_capabilities" c:identifier="tp_connection_get_capabilities" doc="&lt;!-- --&gt; property" version="0.11.3">
        <return-value transfer-ownership="full">
          <type name="Capabilities" c:type="TpCapabilities*"/>
        </return-value>
      </method>
      <method name="get_avatar_requirements" c:identifier="tp_connection_get_avatar_requirements" doc="To wait for valid avatar requirements, call tp_proxy_prepare_async() with the feature %TP_CONNECTION_FEATURE_AVATAR_REQUIREMENTS. This property cannot change after @self goes to the Connected state. feature is not yet prepared or the connection doesn't have the necessary properties." version="0.11.4">
        <return-value transfer-ownership="none" doc="a #TpAvatarRequirements struct, or %NULL if the">
          <type name="AvatarRequirements" c:type="TpAvatarRequirements*"/>
        </return-value>
      </method>
      <method name="parse_object_path" c:identifier="tp_connection_parse_object_path" doc="of the connection manager name of the connection If the object path of @connection is in the correct form, set return FALSE." version="0.7.27">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="protocol" direction="out" caller-allocates="0" transfer-ownership="full" doc="If not NULL, used to return the protocol">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="cm_name" direction="out" caller-allocates="0" transfer-ownership="full" doc="If not NULL, used to return the connection">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_detailed_error" c:identifier="tp_connection_get_detailed_error" doc="optionally used to return a map from string to #GValue, which must not be modified or destroyed by the caller If the connection has disconnected, return the D-Bus error name with which it disconnected (in particular, this is %TP_ERROR_STR_CANCELLED if it was disconnected by a user request). Otherwise, return %NULL, without altering @details." version="0.11.4">
        <return-value transfer-ownership="none" doc="a D-Bus error name, or %NULL.">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="details" direction="out" caller-allocates="0" transfer-ownership="none" allow-none="1">
            <type name="GLib.HashTable" c:type="GHashTable**">
              <type name="utf8"/>
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="hold_handles" c:identifier="tp_connection_hold_handles" doc="unreferenced) destroyed, @callback will not be called Hold (ensure a reference to) the given handles, if they are valid. If they are valid, the callback will later be called with the given handles; if not all of them are valid, the callback will be called with an error. This function, along with tp_connection_unref_handles(), tp_connection_get_contact_attributes() and #TpContact, keeps a client-side reference count of handles; you should not use the RequestHandles, HoldHandles and GetContactAttributes D-Bus methods directly as well as these functions.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="timeout_ms" transfer-ownership="none">
            <type name="int" c:type="gint"/>
          </parameter>
          <parameter name="handle_type" transfer-ownership="none">
            <type name="HandleType" c:type="TpHandleType"/>
          </parameter>
          <parameter name="n_handles" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="handles" transfer-ownership="none" doc="an array of handles">
            <array length="3" c:type="TpHandle*">
              <type name="Handle"/>
            </array>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="notified" closure="6" destroy="7">
            <type name="ConnectionHoldHandlesCb" c:type="TpConnectionHoldHandlesCb"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_handles" c:identifier="tp_connection_request_handles" doc="handles are required, terminated by %NULL (must not be %NULL or empty) unreferenced) destroyed, @callback will not be called Request the handles corresponding to the given identifiers, and if they are valid, hold (ensure a reference to) the corresponding handles. If they are valid, the callback will later be called with the given handles; if not all of them are valid, the callback will be called with an error.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="timeout_ms" transfer-ownership="none">
            <type name="int" c:type="gint"/>
          </parameter>
          <parameter name="handle_type" transfer-ownership="none">
            <type name="HandleType" c:type="TpHandleType"/>
          </parameter>
          <parameter name="ids" transfer-ownership="none" doc="an array of string identifiers for which">
            <array c:type="gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="notified" closure="5" destroy="6">
            <type name="ConnectionRequestHandlesCb" c:type="TpConnectionRequestHandlesCb"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref_handles" c:identifier="tp_connection_unref_handles" doc="Release the reference to the handles in @handles that was obtained by calling tp_connection_hold_handles() or tp_connection_request_handles(). This function might release any references held by calling tp_cli_connection_call_request_handles(), tp_cli_connection_run_request_handles(), tp_cli_connection_call_hold_handles(), tp_cli_connection_run_hold_handles(), tp_cli_connection_interface_contacts_call_get_contact_attributes() or tp_cli_connection_interface_contacts_run_get_contact_attributes() directly. Those functions should be avoided in favour of using #TpContact, tp_connection_hold_handles(), tp_connection_request_handles() and tp_connection_get_contact_attributes(), which along with this function perform client-side reference counting of handles. If @self has already become invalid, this function does nothing.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="handle_type" transfer-ownership="none">
            <type name="HandleType" c:type="TpHandleType"/>
          </parameter>
          <parameter name="n_handles" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="handles" transfer-ownership="none" doc="an array of @n_handles handles">
            <array length="2" c:type="TpHandle*">
              <type name="Handle"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="get_contact_attributes" c:identifier="tp_connection_get_contact_attributes" doc="failure (unless @weak_object has become unreferenced) destroyed, @callback will not be called Return (via a callback) any number of attributes of the given handles, and if they are valid and @hold is TRUE, hold a reference to them. This is a thin wrapper around the GetContactAttributes D-Bus method, and should be used in preference to tp_cli_connection_interface_contacts_get_contact_attributes(); mixing this function, tp_connection_hold_handles(), tp_connection_unref_handles(), and #TpContact with direct use of the RequestHandles, HoldHandles and GetContactAttributes D-Bus methods is unwise, as #TpConnection and #TpContact perform client-side reference counting of handles. The #TpContact API provides a higher-level abstraction which should usually be used instead. handles that were valid. Invalid handles are simply omitted from the parameter to the callback. If @hold is %TRUE, the @callback is given one reference to each handle that appears as a key in the callback's @attributes parameter.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="timeout_ms" transfer-ownership="none">
            <type name="int" c:type="gint"/>
          </parameter>
          <parameter name="n_handles" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="handles" transfer-ownership="none" doc="an array of handles">
            <array length="2" c:type="TpHandle*">
              <type name="Handle"/>
            </array>
          </parameter>
          <parameter name="interfaces" transfer-ownership="none">
            <array c:type="gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="hold" transfer-ownership="none">
            <type name="boolean" c:type="gboolean"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" doc="called on success or">
            <type name="GObject.Callback" c:type="tp_cli_connection_interface_contacts_callback_for_get_contact_attributes"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contacts_by_handle" c:identifier="tp_connection_get_contacts_by_handle" doc="must be %TRUE) of type %TP_HANDLE_TYPE_CONTACT representing the desired contacts must be ready for use (if supported) before the callback is called (may be %NULL if @n_features is 0) called, or if the operation is cancelled weakly referenced; if this object is destroyed, the operation will be cancelled Create a number of #TpContact objects and make asynchronous method calls to hold their handles and ensure that all the features specified in It is not an error to put features in @features even if the connection manager doesn't support them - users of this method should have a static list of features they would like to use if possible, and use it for all connection managers." version="0.7.18">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="n_handles" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="handles" transfer-ownership="none" doc="An array of handles">
            <array length="1" c:type="TpHandle*">
              <type name="uint"/>
            </array>
          </parameter>
          <parameter name="n_features" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="features" transfer-ownership="none" allow-none="1" doc="An array of features that">
            <array length="3" c:type="TpContactFeature*">
              <type name="uint"/>
            </array>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="notified" closure="6" destroy="7">
            <type name="ConnectionContactsByHandleCb" c:type="TpConnectionContactsByHandleCb"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none" allow-none="1" doc="An object to pass to the callback, which will be">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="upgrade_contacts" c:identifier="tp_connection_upgrade_contacts" doc="must be %TRUE) associated with @self ready for use (if supported) before the callback is called called, or if the operation is cancelled weakly referenced; if this object is destroyed, the operation will be cancelled Given several #TpContact objects, make asynchronous method calls ensure that all the features specified in @features are ready for use (if they are supported at all). It is not an error to put features in @features even if the connection manager doesn't support them - users of this method should have a static list of features they would like to use if possible, and use it for all connection managers." version="0.7.18">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="n_contacts" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="contacts" transfer-ownership="none" doc="An array of #TpContact objects">
            <array length="1" c:type="TpContact**">
              <type name="Contact"/>
            </array>
          </parameter>
          <parameter name="n_features" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="features" transfer-ownership="none" doc="An array of features that must be">
            <array length="3" c:type="TpContactFeature*">
              <type name="ContactFeature"/>
            </array>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="notified" closure="6" destroy="7">
            <type name="ConnectionUpgradeContactsCb" c:type="TpConnectionUpgradeContactsCb"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none" allow-none="1" doc="An object to pass to the callback, which will be">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contacts_by_id" c:identifier="tp_connection_get_contacts_by_id" doc="must be %TRUE) the desired contacts by their identifiers in the IM protocol (XMPP JIDs, SIP URIs, MSN Passports, AOL screen-names etc.) that must be ready for use (if supported) before the callback is called (may be %NULL if @n_features is 0) called, or if the operation is cancelled be weakly referenced; if this object is destroyed, the operation will be cancelled Create a number of #TpContact objects and make asynchronous method calls to obtain their handles and ensure that all the features specified in It is not an error to put features in @features even if the connection manager doesn't support them - users of this method should have a static list of features they would like to use if possible, and use it for all connection managers." version="0.7.18">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="n_ids" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="ids" transfer-ownership="none" doc="An array of strings representing">
            <array length="1" c:type="gchar**">
              <type name="int8"/>
            </array>
          </parameter>
          <parameter name="n_features" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="features" transfer-ownership="none" allow-none="1" doc="An array of features">
            <array length="3" c:type="TpContactFeature*">
              <type name="ContactFeature"/>
            </array>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="notified" closure="6" destroy="7">
            <type name="ConnectionContactsByIdCb" c:type="TpConnectionContactsByIdCb"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none" allow-none="1" doc="An object to pass to the callback, which will">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <property name="capabilities" doc="The %TpCapabilities object representing the capabilities of this connection, or NULL if we don't know yet. To wait for valid capability information, call tp_proxy_prepare_async() with the feature %TP_CONNECTION_FEATURE_CAPABILITIES.">
        <type name="Capabilities" c:type="TpCapabilities"/>
      </property>
      <property name="connection-ready" doc="Initially %FALSE; changes to %TRUE when the connection has gone to CONNECTED status, introspection has finished and it's ready for use. By the time this property becomes %TRUE, any extra interfaces will have been set up and the #TpProxy:interfaces property will have been populated. This is similar to %TP_CONNECTION_FEATURE_CONNECTED, except that once it has changed to %TRUE, it remains %TRUE even if the connection has been invalidated.">
        <type name="boolean" c:type="gboolean"/>
      </property>
      <property name="self-handle" doc="The %TP_HANDLE_TYPE_CONTACT handle of the local user on this connection, or 0 if we don't know yet or if the connection has become invalid. To wait for a valid self-handle (and other properties), call tp_proxy_prepare_async() with the feature %TP_CONNECTION_FEATURE_CONNECTED.">
        <type name="uint" c:type="guint"/>
      </property>
      <property name="status" doc="This connection's status, or %TP_UNKNOWN_CONNECTION_STATUS if we don't know yet. To wait for a valid status (and other properties), call tp_proxy_prepare_async() with the feature %TP_CONNECTION_FEATURE_CORE. Since version 0.11.3, the change to status %TP_CONNECTION_STATUS_CONNECTED is delayed slightly, until introspection of the connection has finished.">
        <type name="uint" c:type="guint"/>
      </property>
      <property name="status-reason" doc="To wait for a valid status (and other properties), call tp_proxy_prepare_async() with the feature %TP_CONNECTION_FEATURE_CORE. The reason why #TpConnection:status changed to its current value, or TP_CONNECTION_STATUS_REASON_NONE_SPECIFIED if unknown. know yet.">
        <type name="uint" c:type="guint"/>
      </property>
      <field name="parent">
        <type name="Proxy" c:type="TpProxy"/>
      </field>
      <field name="priv">
        <type name="ConnectionPrivate" c:type="TpConnectionPrivate*"/>
      </field>
    </class>
    <enumeration name="ConnectionAliasFlags" c:type="TpConnectionAliasFlags">
      <member name="connection_alias_flag_user_set" value="1" c:identifier="TP_CONNECTION_ALIAS_FLAG_USER_SET"/>
    </enumeration>
    <enumeration name="ConnectionCapabilityFlags" c:type="TpConnectionCapabilityFlags">
      <member name="create" value="1" c:identifier="TP_CONNECTION_CAPABILITY_FLAG_CREATE"/>
      <member name="invite" value="2" c:identifier="TP_CONNECTION_CAPABILITY_FLAG_INVITE"/>
    </enumeration>
    <record name="ConnectionClass" c:type="TpConnectionClass" glib:is-gtype-struct-for="Connection" doc="The class of a #TpConnection. In addition to @parent_class there are four pointers reserved for possible future use. subclassing.)" version="0.7.1">
      <field name="parent_class">
        <type name="ProxyClass" c:type="TpProxyClass"/>
      </field>
      <field name="_1">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="_2">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="_3">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="_4">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
    </record>
    <callback name="ConnectionContactsByHandleCb" c:type="TpConnectionContactsByHandleCb" doc="(one per valid handle), or 0 on unrecoverable errors objects (this callback is not given a reference to any of these objects, and must call g_object_ref() on any that it will keep), or %NULL on unrecoverable errors tp_connection_get_contacts_by_handle() (or on unrecoverable errors, the total number of handles that were given) passed to tp_connection_get_contacts_by_handle() but turned out to be invalid (or on unrecoverable errors, all the handles that were given) to fail tp_connection_get_contacts_by_handle() tp_connection_get_contacts_by_handle() Signature of a callback used to receive the result of tp_connection_get_contacts_by_handle(). If an unrecoverable error occurs (for instance, if @connection becomes disconnected) the whole operation fails, and no contacts or invalid handles are returned. If some or even all of the @handles passed to tp_connection_get_contacts_by_handle() were not valid, this is not considered to be a failure. @error will be %NULL in this situation, valid (possibly none of them), and @invalid will contain the handles that were not valid." version="0.7.18">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="connection" transfer-ownership="none">
          <type name="Connection" c:type="TpConnection*"/>
        </parameter>
        <parameter name="n_contacts" transfer-ownership="none">
          <type name="uint" c:type="guint"/>
        </parameter>
        <parameter name="contacts" transfer-ownership="none" doc="An array of @n_contacts TpContact">
          <array length="1" c:type="TpContact**">
            <type name="Contact"/>
          </array>
        </parameter>
        <parameter name="n_failed" transfer-ownership="none">
          <type name="uint" c:type="guint"/>
        </parameter>
        <parameter name="failed" transfer-ownership="none" doc="An array of @n_failed handles that were">
          <array length="3" c:type="TpHandle*">
            <type name="Handle"/>
          </array>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="6">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ConnectionContactsByIdCb" c:type="TpConnectionContactsByIdCb" doc="(one per valid ID), or 0 on unrecoverable errors objects (this callback is not given a reference to any of these objects, and must call g_object_ref() on any that it will keep), or %NULL on unrecoverable errors (JIDs, SIP URIs etc.) that were passed to tp_connection_get_contacts_by_id(), in an order corresponding to @contacts, or %NULL on unrecoverable errors the keys are IDs and the values are errors (#GError) to fail tp_connection_get_contacts_by_id() tp_connection_get_contacts_by_id() Signature of a callback used to receive the result of tp_connection_get_contacts_by_id(). The normalized form of requested_ids[i] is tp_contact_get_identifier (contacts[i]). If some or even all of the @ids passed to tp_connection_get_contacts_by_id() were not valid, this is not considered to be a fatal error. @error will be %NULL in this situation, valid (it may be empty), and @failed_id_errors will map the IDs that were not valid to a corresponding #GError (if the connection manager complies with the Telepathy spec, it will have domain %TP_ERRORS and code %TP_ERROR_INVALID_HANDLE). If an unrecoverable error occurs (for instance, if @connection becomes disconnected) the whole operation fails, and no contacts or requested IDs are returned. @failed_id_errors will contain all the IDs that were requested, mapped to a corresponding #GError (either one indicating that the ID was invalid, if that was determined before the fatal error occurred, or a copy of @error)." version="0.7.18">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="connection" transfer-ownership="none">
          <type name="Connection" c:type="TpConnection*"/>
        </parameter>
        <parameter name="n_contacts" transfer-ownership="none">
          <type name="uint" c:type="guint"/>
        </parameter>
        <parameter name="contacts" transfer-ownership="none" doc="An array of @n_contacts TpContact">
          <array length="1" c:type="TpContact**">
            <type name="Contact"/>
          </array>
        </parameter>
        <parameter name="requested_ids" transfer-ownership="none" doc="An array of @n_contacts valid IDs">
          <array length="1" c:type="gchar**">
            <type name="int8"/>
          </array>
        </parameter>
        <parameter name="failed_id_errors" transfer-ownership="none" doc="A hash table in which">
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="GLib.Error"/>
          </type>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="6">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ConnectionHoldHandlesCb" c:type="TpConnectionHoldHandlesCb" doc="tp_connection_hold_handles() tp_connection_hold_handles() on success, or 0 on failure tp_connection_hold_handles() on success, or %NULL on failure tp_connection_hold_handles() tp_connection_hold_handles() Signature of the callback called when tp_connection_hold_handles() succeeds or fails. On success, the caller has one reference to each handle in @handles, which may be released later with tp_connection_unref_handles(). If not released, the handles will remain valid until @connection becomes invalid (signalled by #TpProxy::invalidated). For convenience, the handle type and handles requested by the caller are passed through to this callback on success, so the caller does not have to include them in @user_data.">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="connection" transfer-ownership="none">
          <type name="Connection" c:type="TpConnection*"/>
        </parameter>
        <parameter name="handle_type" transfer-ownership="none">
          <type name="HandleType" c:type="TpHandleType"/>
        </parameter>
        <parameter name="n_handles" transfer-ownership="none">
          <type name="uint" c:type="guint"/>
        </parameter>
        <parameter name="handles" transfer-ownership="none">
          <type name="Handle" c:type="TpHandle*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="5">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </callback>
    <class name="ConnectionManager" c:type="TpConnectionManager" doc="Should be considered read-only array of pointers to #TpConnectionManagerProtocol structures; otherwise %NULL. Should be considered read-only considered read-only #TpConnectionManager:always-introspect property if you want to change it if no info has been discovered yet A proxy object for a Telepathy connection manager. This might represent a connection manager which is currently running (in which case it can be introspected) or not (in which case its capabilities can be read from .manager files in the filesystem). Accordingly, this object never emits #TpProxy::invalidated unless all references to it are discarded. Various fields and methods on this object do not work until %TP_CONNECTION_MANAGER_FEATURE_CORE is prepared. Use tp_proxy_prepare_async() to wait for this to happen. Note that the @protocols may be freed and reallocated (based on new information) whenever the main loop is entered. Since 0.11.3, each protocol struct can be copied with tp_connection_manager_protocol_copy() if a private copy is needed." version="0.7.1" parent="Proxy" glib:type-name="TpConnectionManager" glib:get-type="tp_connection_manager_get_type" glib:type-struct="ConnectionManagerClass">
      <constructor name="new" c:identifier="tp_connection_manager_new" doc="property, which may (and generally should) be %NULL. Convenience function to create a new connection manager proxy. If its protocol and parameter information are required, you should call tp_connection_manager_call_when_ready() on the result. is set." throws="1">
        <return-value transfer-ownership="full">
          <type name="ConnectionManager" c:type="TpConnectionManager*"/>
        </return-value>
        <parameters>
          <parameter name="dbus" transfer-ownership="none">
            <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="manager_filename" transfer-ownership="none" allow-none="1" doc="The #TpConnectionManager:manager-file">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="check_valid_name" c:identifier="tp_connection_manager_check_valid_name" doc="Check that the given string is a valid connection manager name, i.e. that it consists entirely of ASCII letters, digits and underscores, and starts with a letter." version="0.7.1" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="check_valid_protocol_name" c:identifier="tp_connection_manager_check_valid_protocol_name" doc="Check that the given string is a valid protocol name, i.e. that it consists entirely of ASCII letters, digits and hyphen/minus, and starts with a letter." version="0.7.1" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="init_known_interfaces" c:identifier="tp_connection_manager_init_known_interfaces" doc="Ensure that the known interfaces for TpConnectionManager have been set up. This is done automatically when necessary, but for correct overriding of library interfaces by local extensions, you should call this function before calling tp_proxy_or_subclass_hook_on_interface_add() with first argument %TP_TYPE_CONNECTION_MANAGER." version="0.7.32">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <function name="get_feature_quark_core" c:identifier="tp_connection_manager_get_feature_quark_core">
        <return-value transfer-ownership="full">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <method name="get_name" c:identifier="tp_connection_manager_get_name" doc="Return the internal name of this connection manager in the Telepathy D-Bus API, e.g. &quot;gabble&quot; or &quot;haze&quot;. This is often the name of the binary without the &quot;telepathy-&quot; prefix. The returned string is valid as long as @self is. Copy it with g_strdup() if a longer lifetime is required." version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="is_running" c:identifier="tp_connection_manager_is_running" doc="Return %TRUE if this connection manager currently appears to be running. This may change at any time that the main loop is running; the #TpConnectionManager::activated and #TpConnectionManager::exited signals are emitted." version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="get_info_source" c:identifier="tp_connection_manager_get_info_source" doc="If protocol and parameter information has been obtained from the connection manager, return %TP_CM_INFO_SOURCE_LIVE; if it has been obtained from the cache in the .manager file, return %TP_CM_INFO_SOURCE_FILE. If this information has not yet been obtained, or obtaining it failed, return %TP_CM_INFO_SOURCE_NONE. This may increase at any time that the main loop is running; the #GObject::notify signal is emitted." version="0.7.26">
        <return-value transfer-ownership="full">
          <type name="CMInfoSource" c:type="TpCMInfoSource"/>
        </return-value>
      </method>
      <method name="dup_protocol_names" c:identifier="tp_connection_manager_dup_protocol_names" doc="Returns a list of protocol names supported by this connection manager. These are the internal protocol names used by the Telepathy specification (e.g. &quot;jabber&quot; and &quot;msn&quot;), rather than user-visible names in any particular locale. If this function is called before the connection manager information has been obtained, the result is always %NULL. Use tp_connection_manager_call_when_ready() to wait for this. The result is copied and must be freed by the caller, but it is not necessarily still true after the main loop is re-entered." version="0.7.26">
        <return-value transfer-ownership="full" doc="a #GStrv of protocol names">
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
      </method>
      <method name="has_protocol" c:identifier="tp_connection_manager_has_protocol" doc="e.g. &quot;jabber&quot; or &quot;msn&quot; Return whether @protocol is supported by this connection manager. If this function is called before the connection manager information has been obtained, the result is always %FALSE. Use tp_connection_manager_call_when_ready() to wait for this." version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="protocol" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_protocol" c:identifier="tp_connection_manager_get_protocol" doc="e.g. &quot;jabber&quot; or &quot;msn&quot; Returns a structure representing a protocol, or %NULL if this connection manager does not support the specified protocol. If this function is called before the connection manager information has been obtained, the result is always %NULL. Use tp_connection_manager_call_when_ready() to wait for this. The result is not necessarily valid after the main loop is re-entered. Since 0.11.3, it can be copied with tp_connection_manager_protocol_copy() if a permanently-valid copy is needed." version="0.7.26">
        <return-value transfer-ownership="none" doc="a structure representing the protocol">
          <type name="ConnectionManagerProtocol" c:type="TpConnectionManagerProtocol*"/>
        </return-value>
        <parameters>
          <parameter name="protocol" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="always-introspect" writable="1" doc="If %TRUE, always introspect the connection manager as it comes online, even if we already have its info from a .manager file. Default %FALSE.">
        <type name="boolean" c:type="gboolean"/>
      </property>
      <property name="connection-manager" doc="The name of the connection manager, e.g. &quot;gabble&quot; (read-only).">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="info-source" doc="Where we got the current information on supported protocols (a #TpCMInfoSource). Since 0.7.26, the #GObject::notify signal is emitted for this property. (Note that this is of type %G_TYPE_UINT, not %TP_TYPE_CM_INFO_SOURCE, for historical reasons.)">
        <type name="uint" c:type="guint"/>
      </property>
      <property name="manager-file" writable="1" construct="1" doc="The absolute path of the .manager file. If set to %NULL (the default), the XDG data directories will be searched for a .manager file of the correct name. If set to the empty string, no .manager file will be read.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <field name="parent">
        <type name="Proxy" c:type="TpProxy"/>
      </field>
      <field name="name">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="protocols">
        <type name="ConnectionManagerProtocol" c:type="TpConnectionManagerProtocol**"/>
      </field>
      <field name="running" bits="1">
        <type name="uint" c:type="unsigned"/>
      </field>
      <field name="always_introspect" bits="1">
        <type name="uint" c:type="unsigned"/>
      </field>
      <field name="info_source" bits="2">
        <type name="uint" c:type="unsigned"/>
      </field>
      <field name="reserved_flags" bits="28">
        <type name="uint" c:type="guint"/>
      </field>
      <field name="priv">
        <type name="ConnectionManagerPrivate" c:type="TpConnectionManagerPrivate*"/>
      </field>
      <glib:signal name="activated" doc="Emitted when the connection manager's well-known name appears on the bus.">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="exited" doc="Emitted when the connection manager's well-known name disappears from the bus or when activation fails.">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="got-info" doc="Emitted when the connection manager's capabilities have been discovered. This signal is not very helpful. Since 0.7.26, using tp_connection_manager_call_when_ready() instead is recommended.">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ConnectionManagerClass" c:type="TpConnectionManagerClass" glib:is-gtype-struct-for="ConnectionManager" doc="The class of a #TpConnectionManager." version="0.7.1">
      <field name="parent_class">
        <type name="ProxyClass" c:type="TpProxyClass"/>
      </field>
      <field name="priv">
        <type name="any" c:type="gpointer*"/>
      </field>
    </record>
    <callback name="ConnectionManagerListCb" c:type="TpConnectionManagerListCb" doc="#TpConnectionManager (the objects will be unreferenced and the array will be freed after the callback returns, so the callback must reference any CMs it stores a pointer to), or %NULL on error %NULL) Signature of the callback supplied to tp_list_connection_managers(). Since 0.11.3, tp_list_connection_managers() will wait for %TP_CONNECTION_MANAGER_FEATURE_CORE to be prepared (so tp_connection_manager_is_prepared() will return %TRUE) on each connection manager passed to @callback, unless an error occurred while launching that connection manager." version="0.7.1">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cms" transfer-ownership="none" doc="%NULL-terminated array of">
          <array c:type="TpConnectionManager**">
            <type name="ConnectionManager"/>
          </array>
        </parameter>
        <parameter name="n_cms" transfer-ownership="none">
          <type name="size_t" c:type="gsize"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="3">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </callback>
    <record name="ConnectionManagerParam" c:type="TpConnectionManagerParam" doc="of an appropriate type if %TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT is not set on this parameter, or an unset GValue if the signature is not recognised by telepathy-glib Structure representing a connection manager parameter." version="0.7.1" glib:type-name="TpConnectionManagerParam" glib:get-type="tp_connection_manager_param_get_type">
      <field name="name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="dbus_signature" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="default_value" writable="1">
        <type name="GObject.Value" c:type="GValue"/>
      </field>
      <field name="flags" writable="1">
        <type name="uint" c:type="guint"/>
      </field>
      <field name="priv" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
      <method name="get_name" c:identifier="tp_connection_manager_param_get_name" doc="&lt;!-- --&gt;" version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_dbus_signature" c:identifier="tp_connection_manager_param_get_dbus_signature" doc="&lt;!-- --&gt;" version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="is_required" c:identifier="tp_connection_manager_param_is_required" doc="&lt;!-- --&gt;" version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="is_required_for_registration" c:identifier="tp_connection_manager_param_is_required_for_registration" doc="&lt;!-- --&gt; (by setting the special &quot;register&quot; parameter to %TRUE)" version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="is_secret" c:identifier="tp_connection_manager_param_is_secret" doc="&lt;!-- --&gt;" version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="is_dbus_property" c:identifier="tp_connection_manager_param_is_dbus_property" doc="&lt;!-- --&gt;" version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="get_default" c:identifier="tp_connection_manager_param_get_default" doc="type and value are written Get the default value for this parameter, if there is one. If %FALSE is returned, @value is left uninitialized." version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="value" transfer-ownership="none" doc="#GValue into which the default's">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="tp_connection_manager_param_copy" doc="tp_connection_manager_param_free()" version="0.11.3">
        <return-value transfer-ownership="full" doc="allocated #TpConnectionManagerParam, free with">
          <type name="ConnectionManagerParam" c:type="TpConnectionManagerParam*"/>
        </return-value>
      </method>
      <method name="free" c:identifier="tp_connection_manager_param_free" doc="Frees @param, which was copied with tp_connection_manager_param_copy()." version="0.11.3">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <record name="ConnectionManagerPrivate" c:type="TpConnectionManagerPrivate">
    </record>
    <record name="ConnectionManagerProtocol" c:type="TpConnectionManagerProtocol" doc="a structure whose @name is %NULL Structure representing a protocol supported by a connection manager. Note that the size of this structure may change, so its size must not be relied on." version="0.7.1" glib:type-name="TpConnectionManagerProtocol" glib:get-type="tp_connection_manager_protocol_get_type">
      <field name="name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="params" writable="1">
        <type name="ConnectionManagerParam" c:type="TpConnectionManagerParam*"/>
      </field>
      <field name="priv" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
      <method name="dup_param_names" c:identifier="tp_connection_manager_protocol_dup_param_names" doc="Returns a list of parameter names supported by this connection manager for this protocol. The result is copied and must be freed by the caller with g_strfreev()." version="0.7.26">
        <return-value transfer-ownership="full" doc="a #GStrv of protocol names">
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
      </method>
      <method name="has_param" c:identifier="tp_connection_manager_protocol_has_param" doc="&lt;!-- no more to say --&gt;" version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="param" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_param" c:identifier="tp_connection_manager_protocol_get_param" doc="&lt;!-- no more to say --&gt; supported" version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="ConnectionManagerParam" c:type="TpConnectionManagerParam*"/>
        </return-value>
        <parameters>
          <parameter name="param" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="can_register" c:identifier="tp_connection_manager_protocol_can_register" doc="Return whether a new account can be registered on this protocol, by setting the special &quot;register&quot; parameter to %TRUE." version="0.7.26">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="copy" c:identifier="tp_connection_manager_protocol_copy" doc="tp_connection_manager_protocol_free()" version="0.11.3">
        <return-value transfer-ownership="full" doc="allocated #TpConnectionManagerProtocol, free with">
          <type name="ConnectionManagerProtocol" c:type="TpConnectionManagerProtocol*"/>
        </return-value>
      </method>
      <method name="free" c:identifier="tp_connection_manager_protocol_free" doc="Frees @proto, which was copied with tp_connection_manager_protocol_copy()." version="0.11.3">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <callback name="ConnectionManagerWhenReadyCb" c:type="TpConnectionManagerWhenReadyCb" doc="would return %FALSE tp_connection_manager_call_when_ready() Called as the result of tp_connection_manager_call_when_ready(). If the connection manager's protocol and parameter information could be retrieved, non-%NULL and @cm is not ready.">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cm" transfer-ownership="none">
          <type name="ConnectionManager" c:type="TpConnectionManager*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="2">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ConnectionNameListCb" c:type="TpConnectionNameListCb" doc="connection bus names, or %NULL on error connection manager names (e.g. &quot;gabble&quot;) in the same order as @names, or %NULL on error same order as @names, or %NULL on error Signature of the callback supplied to tp_list_connection_names()." version="0.7.1">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="names" transfer-ownership="none" doc="%NULL-terminated array of @n">
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="n" transfer-ownership="none" doc="or 0 on error">
          <type name="size_t" c:type="gsize"/>
        </parameter>
        <parameter name="cms" transfer-ownership="none" doc="%NULL-terminated array of @n">
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="protocols" transfer-ownership="none" doc="%NULL-terminated array of">
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="5">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="ConnectionPresenceType" c:type="TpConnectionPresenceType">
      <member name="unset" value="0" c:identifier="TP_CONNECTION_PRESENCE_TYPE_UNSET"/>
      <member name="offline" value="1" c:identifier="TP_CONNECTION_PRESENCE_TYPE_OFFLINE"/>
      <member name="available" value="2" c:identifier="TP_CONNECTION_PRESENCE_TYPE_AVAILABLE"/>
      <member name="away" value="3" c:identifier="TP_CONNECTION_PRESENCE_TYPE_AWAY"/>
      <member name="extended_away" value="4" c:identifier="TP_CONNECTION_PRESENCE_TYPE_EXTENDED_AWAY"/>
      <member name="hidden" value="5" c:identifier="TP_CONNECTION_PRESENCE_TYPE_HIDDEN"/>
      <member name="busy" value="6" c:identifier="TP_CONNECTION_PRESENCE_TYPE_BUSY"/>
      <member name="unknown" value="7" c:identifier="TP_CONNECTION_PRESENCE_TYPE_UNKNOWN"/>
      <member name="error" value="8" c:identifier="TP_CONNECTION_PRESENCE_TYPE_ERROR"/>
    </enumeration>
    <record name="ConnectionPrivate" c:type="TpConnectionPrivate">
    </record>
    <callback name="ConnectionRequestHandlesCb" c:type="TpConnectionRequestHandlesCb" doc="tp_connection_request_handles() tp_connection_request_handles() on success, or 0 on failure handles corresponding to @ids, in the same order, or %NULL on failure tp_connection_request_handles() on success, or %NULL on failure tp_connection_request_handles() tp_connection_request_handles() Signature of the callback called when tp_connection_request_handles() succeeds or fails. On success, the caller has one reference to each handle in @handles, which may be released later with tp_connection_unref_handles(). If not released, the handles will remain valid until @connection becomes invalid (signalled by TpProxy::invalidated). For convenience, the handle type and IDs requested by the caller are passed through to this callback, so the caller does not have to include them in @user_data.">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="connection" transfer-ownership="none">
          <type name="Connection" c:type="TpConnection*"/>
        </parameter>
        <parameter name="handle_type" transfer-ownership="none">
          <type name="HandleType" c:type="TpHandleType"/>
        </parameter>
        <parameter name="n_handles" transfer-ownership="none">
          <type name="uint" c:type="guint"/>
        </parameter>
        <parameter name="handles" transfer-ownership="none" doc="the @n_handles">
          <array length="2" c:type="TpHandle*">
            <type name="uint"/>
          </array>
        </parameter>
        <parameter name="ids" transfer-ownership="none">
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="6">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="ConnectionStatus" c:type="TpConnectionStatus">
      <member name="connected" value="0" c:identifier="TP_CONNECTION_STATUS_CONNECTED"/>
      <member name="connecting" value="1" c:identifier="TP_CONNECTION_STATUS_CONNECTING"/>
      <member name="disconnected" value="2" c:identifier="TP_CONNECTION_STATUS_DISCONNECTED"/>
    </enumeration>
    <enumeration name="ConnectionStatusReason" c:type="TpConnectionStatusReason">
      <member name="none_specified" value="0" c:identifier="TP_CONNECTION_STATUS_REASON_NONE_SPECIFIED"/>
      <member name="requested" value="1" c:identifier="TP_CONNECTION_STATUS_REASON_REQUESTED"/>
      <member name="network_error" value="2" c:identifier="TP_CONNECTION_STATUS_REASON_NETWORK_ERROR"/>
      <member name="authentication_failed" value="3" c:identifier="TP_CONNECTION_STATUS_REASON_AUTHENTICATION_FAILED"/>
      <member name="encryption_error" value="4" c:identifier="TP_CONNECTION_STATUS_REASON_ENCRYPTION_ERROR"/>
      <member name="name_in_use" value="5" c:identifier="TP_CONNECTION_STATUS_REASON_NAME_IN_USE"/>
      <member name="cert_not_provided" value="6" c:identifier="TP_CONNECTION_STATUS_REASON_CERT_NOT_PROVIDED"/>
      <member name="cert_untrusted" value="7" c:identifier="TP_CONNECTION_STATUS_REASON_CERT_UNTRUSTED"/>
      <member name="cert_expired" value="8" c:identifier="TP_CONNECTION_STATUS_REASON_CERT_EXPIRED"/>
      <member name="cert_not_activated" value="9" c:identifier="TP_CONNECTION_STATUS_REASON_CERT_NOT_ACTIVATED"/>
      <member name="cert_hostname_mismatch" value="10" c:identifier="TP_CONNECTION_STATUS_REASON_CERT_HOSTNAME_MISMATCH"/>
      <member name="cert_fingerprint_mismatch" value="11" c:identifier="TP_CONNECTION_STATUS_REASON_CERT_FINGERPRINT_MISMATCH"/>
      <member name="cert_self_signed" value="12" c:identifier="TP_CONNECTION_STATUS_REASON_CERT_SELF_SIGNED"/>
      <member name="cert_other_error" value="13" c:identifier="TP_CONNECTION_STATUS_REASON_CERT_OTHER_ERROR"/>
    </enumeration>
    <callback name="ConnectionUpgradeContactsCb" c:type="TpConnectionUpgradeContactsCb" doc="requested not given an extra reference to any of these objects, and must call g_object_ref() on any that it will keep) tp_connection_upgrade_contacts() tp_connection_upgrade_contacts() Signature of a callback used to receive the result of tp_connection_upgrade_contacts(). If an unrecoverable error occurs (for instance, if @connection becomes disconnected) it is indicated by @error, but the contacts in @contacts are still provided." version="0.7.18">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="connection" transfer-ownership="none">
          <type name="Connection" c:type="TpConnection*"/>
        </parameter>
        <parameter name="n_contacts" transfer-ownership="none">
          <type name="uint" c:type="guint"/>
        </parameter>
        <parameter name="contacts" transfer-ownership="none">
          <type name="Contact" c:type="TpContact**"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="4">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ConnectionWhenReadyCb" c:type="TpConnectionWhenReadyCb" doc="if error is non-%NULL, error-&gt;domain is TP_DBUS_ERRORS and error-&gt;code is TP_DBUS_ERROR_PROXY_UNREFERENCED) it was invalidated if it is now invalid Signature of a callback passed to tp_connection_call_when_ready(), which will be called exactly once, when the connection becomes ready or invalid (whichever happens first)">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="connection" transfer-ownership="none">
          <type name="Connection" c:type="TpConnection*"/>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="2">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Contact" c:type="TpContact" doc="An object representing a contact on a #TpConnection. Contact objects support tracking a number of attributes of contacts, as described by the #TpContactFeature flags. Features can be specified when instantiating contact objects (with tp_connection_get_contacts_by_id() or tp_connection_get_contacts_by_handle()), or added to an existing contact object with tp_connection_upgrade_contacts(). For example, a client wishing to keep track of a contact's alias would set #TP_CONTACT_FEATURE_ALIAS, and then listen for the &quot;notify::alias&quot; signal, emitted whenever the #TpContact:alias property changes. Note that releasing a #TpContact object might release handle references held by calling tp_cli_connection_call_request_handles(), tp_cli_connection_run_request_handles(), tp_cli_connection_call_hold_handles(), tp_cli_connection_run_hold_handles(), tp_cli_connection_interface_contacts_call_get_contact_attributes() or tp_cli_connection_interface_contacts_run_get_contact_attributes() directly. Those functions should be avoided in favour of using #TpContact, tp_connection_hold_handles(), tp_connection_request_handles() and tp_connection_get_contact_attributes()." version="0.7.18" parent="GObject.Object" glib:type-name="TpContact" glib:get-type="tp_contact_get_type" glib:type-struct="ContactClass">
      <method name="get_connection" c:identifier="tp_contact_get_connection" doc="&lt;!-- nothing more to say --&gt; (it must be referenced with g_object_ref if it must remain valid longer than the contact)" version="0.7.18">
        <return-value transfer-ownership="none" doc="a borrowed reference to the #TpContact:connection">
          <type name="Connection" c:type="TpConnection*"/>
        </return-value>
      </method>
      <method name="get_handle" c:identifier="tp_contact_get_handle" doc="Return the contact's handle, which is of type %TP_HANDLE_TYPE_CONTACT, or 0 if the #TpContact:connection has become invalid. This handle is referenced using the Telepathy D-Bus API and remains referenced for as long as @self exists and the #TpContact:connection remains valid. However, the caller of this function does not gain an additional reference to the handle." version="0.7.18">
        <return-value transfer-ownership="full">
          <type name="Handle" c:type="TpHandle"/>
        </return-value>
      </method>
      <method name="get_identifier" c:identifier="tp_contact_get_identifier" doc="Return the contact's identifier. This remains valid for as long as @self exists; if the caller requires a string that will persist for longer than that, it must be copied with g_strdup()." version="0.7.18">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="has_feature" c:identifier="tp_contact_has_feature" doc="&lt;!-- --&gt;" version="0.7.18">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="feature" transfer-ownership="none">
            <type name="ContactFeature" c:type="TpContactFeature"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_alias" c:identifier="tp_contact_get_alias" doc="Return the contact's alias. This remains valid until the main loop is re-entered; if the caller requires a string that will persist for longer than that, it must be copied with g_strdup()." version="0.7.18">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_avatar_token" c:identifier="tp_contact_get_avatar_token" doc="Return the contact's avatar token. This remains valid until the main loop is re-entered; if the caller requires a string that will persist for longer than that, it must be copied with g_strdup(). (possibly %NULL)" version="0.7.18">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_presence_type" c:identifier="tp_contact_get_presence_type" doc="If this object has been set up to track %TP_CONTACT_FEATURE_PRESENCE and the underlying connection supports either the Presence or SimplePresence interfaces, return the type of the contact's presence. Otherwise, return %TP_CONNECTION_PRESENCE_TYPE_UNSET." version="0.7.18">
        <return-value transfer-ownership="full">
          <type name="ConnectionPresenceType" c:type="TpConnectionPresenceType"/>
        </return-value>
      </method>
      <method name="get_presence_status" c:identifier="tp_contact_get_presence_status" doc="Return the name of the contact's presence status, or an empty string. This remains valid until the main loop is re-entered; if the caller requires a string that will persist for longer than that, it must be copied with g_strdup(). property" version="0.7.18">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_presence_message" c:identifier="tp_contact_get_presence_message" doc="Return the contact's user-defined status message, or an empty string. This remains valid until the main loop is re-entered; if the caller requires a string that will persist for longer than that, it must be copied with g_strdup(). property" version="0.7.18">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_location" c:identifier="tp_contact_get_location" doc="Return the contact's user-defined location or %NULL if the location is unspecified. This remains valid until the main loop is re-entered; if the caller requires a hash table that will persist for longer than that, it must be reffed with g_hash_table_ref(). #GHashTable (or %NULL) as the #TpContact:location property" version="0.11.1">
        <return-value transfer-ownership="none" doc="the same">
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="GObject.Value"/>
          </type>
        </return-value>
      </method>
      <method name="get_capabilities" c:identifier="tp_contact_get_capabilities" doc="&lt;!-- --&gt; #TpContact:capabilities property" version="0.11.3">
        <return-value transfer-ownership="full" doc="as the">
          <type name="Capabilities" c:type="TpCapabilities*"/>
        </return-value>
      </method>
      <method name="get_avatar_file" c:identifier="tp_contact_get_avatar_file" doc="Return the contact's avatar file. This remains valid until the main loop is re-entered; if the caller requires a #GFile that will persist for longer than that, it must be reffed with g_object_ref(). (possibly %NULL)" version="0.11.UNRELEASED">
        <return-value transfer-ownership="none" doc="the same #GFile as the #TpContact:avatar-file property">
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
      </method>
      <method name="get_avatar_mime_type" c:identifier="tp_contact_get_avatar_mime_type" doc="Return the contact's avatar MIME type. This remains valid until the main loop is re-entered; if the caller requires a string that will persist for longer than that, it must be copied with g_strdup(). (possibly %NULL)" version="0.11.UNRELEASED">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <property name="alias" doc="The contact's alias if available, falling back to their #TpContact:identifier if no alias is available or if the #TpContact has not been set up to track %TP_CONTACT_FEATURE_ALIAS. This alias may have been supplied by the contact themselves, or by the local user, so it does not necessarily unambiguously identify the contact. However, it is suitable for use as a main &quot;display name&quot; for the contact. This is never %NULL for contact objects that are visible to library-user code.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="avatar-file" version="0.11.UNRELEASED" doc="#GFile to the latest cached avatar image, or %NULL if this contact has no avatar, or if the avatar data is not yet retrieved. When #TpContact:avatar-token changes, this property is not updated immediately, but will be updated when the new avatar data is retrieved and stored in cache. Until then, the file will keep its old value of the latest cached avatar image. This is set to %NULL if %TP_CONTACT_FEATURE_AVATAR_DATA is not set on this contact. Note that setting %TP_CONTACT_FEATURE_AVATAR_DATA will also implicitly set %TP_CONTACT_FEATURE_AVATAR_TOKEN.">
        <type name="Gio.File" c:type="GFile"/>
      </property>
      <property name="avatar-mime-type" version="0.11.UNRELEASED" doc="MIME type of the latest cached avatar image, or %NULL if this contact has no avatar, or if the avatar data is not yet retrieved. This is always the MIME type of the image given by #TpContact:avatar-file.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="avatar-token" doc="An opaque string representing state of the contact's avatar (depending on the protocol, this might be a hash, a timestamp or something else), or an empty string if there is no avatar. This may be %NULL if it is not known whether this contact has an avatar or not (either for network protocol reasons, or because this #TpContact has not been set up to track %TP_CONTACT_FEATURE_AVATAR_TOKEN).">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="capabilities" version="0.11.3" doc="The capabilities supported by this contact. If the underlying Connection doesn't support the ContactCapabilities interface, this property will contain the capabilities supported by the connection. Use tp_capabilities_is_specific_to_contact() to check if the capabilities are specific to this #TpContact or not. This may be %NULL if this #TpContact object has not been set up to track %TP_CONTACT_FEATURE_CAPABILITIES.">
        <type name="Capabilities" c:type="TpCapabilities"/>
      </property>
      <property name="connection" doc="The #TpConnection to which this contact belongs.">
        <type name="Connection" c:type="TpConnection"/>
      </property>
      <property name="handle" doc="The contact's handle in the Telepathy D-Bus API, a handle of type %TP_HANDLE_TYPE_CONTACT representing the string given by #TpContact:identifier. This handle is referenced using the Telepathy D-Bus API and remains referenced for as long as the #TpContact exists and the #TpContact:connection remains valid. However, getting this property does not cause an additional reference to the handle to be held. If the #TpContact:connection becomes invalid, this property is no longer meaningful and will be set to 0.">
        <type name="uint" c:type="guint"/>
      </property>
      <property name="identifier" doc="The contact's identifier in the instant messaging protocol (e.g. XMPP JID, SIP URI, AOL screenname or IRC nick - whatever the underlying protocol uses to identify a user). This is never %NULL for contact objects that are visible to library-user code.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="presence-message" doc="If this contact has set a user-defined status message, that message; if not, an empty string (which user interfaces may replace with a localized form of the #TpContact:presence-status or #TpContact:presence-type). This may be an empty string even if the contact has set a message, if this #TpContact object has not been set up to track %TP_CONTACT_FEATURE_PRESENCE. It is never %NULL.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="presence-status" doc="A string representing the presence status of this contact. This may be a well-known string from the Telepathy specification, like &quot;available&quot;, or a connection-manager-specific string, like &quot;out-to-lunch&quot;. This may be an empty string if this #TpContact object has not been set up to track %TP_CONTACT_FEATURE_PRESENCE. It is never %NULL.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="presence-type" doc="The #TpConnectionPresenceType representing the type of presence status for this contact. This is provided so even unknown values for #TpContact:presence-status can be classified into their fundamental types. This may be %TP_CONNECTION_PRESENCE_TYPE_UNSET if this #TpContact has not been set up to track %TP_CONTACT_FEATURE_PRESENCE.">
        <type name="uint" c:type="guint"/>
      </property>
    </class>
    <record name="ContactClass" c:type="TpContactClass" glib:is-gtype-struct-for="Contact">
    </record>
    <enumeration name="ContactFeature" doc="#TpContact:presence-status and #TpContact:presence-message (available since 0.11.3) #TpContact:avatar-mime-type. Implies %TP_CONTACT_FEATURE_AVATAR_TOKEN (available since 0.11.UNRELEASED) supported by this version of telepathy-glib Enumeration representing the features a #TpContact can optionally support. When requesting a #TpContact, library users specify the desired features; the #TpContact code will only initialize state for those features, to avoid unwanted D-Bus round-trips and signal connections. Since 0.11.5, there is a corresponding #GEnumClass type, %TP_TYPE_CONTACT_FEATURE." version="0.7.18" c:type="TpContactFeature">
      <member name="alias" value="0" c:identifier="TP_CONTACT_FEATURE_ALIAS"/>
      <member name="avatar_token" value="1" c:identifier="TP_CONTACT_FEATURE_AVATAR_TOKEN"/>
      <member name="presence" value="2" c:identifier="TP_CONTACT_FEATURE_PRESENCE"/>
      <member name="location" value="3" c:identifier="TP_CONTACT_FEATURE_LOCATION"/>
      <member name="capabilities" value="4" c:identifier="TP_CONTACT_FEATURE_CAPABILITIES"/>
      <member name="avatar_data" value="5" c:identifier="TP_CONTACT_FEATURE_AVATAR_DATA"/>
    </enumeration>
    <enumeration name="ContactInfoFieldFlags" c:type="TpContactInfoFieldFlags">
      <member name="contact_info_field_flag_parameters_exact" value="1" c:identifier="TP_CONTACT_INFO_FIELD_FLAG_PARAMETERS_EXACT"/>
    </enumeration>
    <enumeration name="ContactInfoFlags" c:type="TpContactInfoFlags">
      <member name="can_set" value="1" c:identifier="TP_CONTACT_INFO_FLAG_CAN_SET"/>
      <member name="push" value="2" c:identifier="TP_CONTACT_INFO_FLAG_PUSH"/>
    </enumeration>
    <record name="ContactPrivate" c:type="TpContactPrivate">
    </record>
    <class name="DBusDaemon" c:type="TpDBusDaemon" doc="A subclass of #TpProxy that represents the D-Bus daemon. It mainly provides functionality to manage well-known names on the bus." version="0.7.1" parent="Proxy" glib:type-name="TpDBusDaemon" glib:get-type="tp_dbus_daemon_get_type" glib:type-struct="DBusDaemonClass">
      <function name="dup" c:identifier="tp_dbus_daemon_dup" doc="Returns a proxy for signals and method calls on the D-Bus daemon on which this process was activated (if it was launched by D-Bus service activation), or the session bus (otherwise). If it is not possible to connect to the appropriate bus, raise an error and return %NULL. The returned #TpDBusDaemon is cached; the same #TpDBusDaemon object will be returned by this function repeatedly, as long as at least one reference exists. daemon, or %NULL" version="0.7.26" throws="1">
        <return-value transfer-ownership="full">
          <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
        </return-value>
      </function>
      <function name="init_known_interfaces" c:identifier="tp_dbus_daemon_init_known_interfaces" doc="Ensure that the known interfaces for TpDBusDaemon have been set up. This is done automatically when necessary, but for correct overriding of library interfaces by local extensions, you should call this function before calling tp_proxy_or_subclass_hook_on_interface_add() with first argument %TP_TYPE_DBUS_DAEMON." version="0.7.32">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <method name="watch_name_owner" c:identifier="tp_dbus_daemon_watch_name_owner" doc="cancelled due to tp_dbus_daemon_cancel_name_owner_watch() Arrange for @callback to be called with the owner of @name as soon as possible (which might even be before this function returns!), then again every time the ownership of @name changes. If multiple watches are registered for the same @name, they will be called in the order they were registered." version="0.7.1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="notified" closure="3" destroy="4">
            <type name="DBusDaemonNameOwnerChangedCb" c:type="TpDBusDaemonNameOwnerChangedCb"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="cancel_name_owner_watch" c:identifier="tp_dbus_daemon_cancel_name_owner_watch" doc="If there was a previous call to tp_dbus_daemon_watch_name_owner() with exactly the given @name, @callback and @user_data, remove it. If more than one watch matching the details provided was active, remove only the most recently added one." version="0.7.1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="call" closure="3">
            <type name="DBusDaemonNameOwnerChangedCb" c:type="TpDBusDaemonNameOwnerChangedCb"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gconstpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="request_name" c:identifier="tp_dbus_daemon_request_name" doc="already owns the name Claim the given well-known name without queueing, allowing replacement or replacing an existing name-owner. This makes a synchronous call to the bus daemon. an error occurred." version="0.7.30" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="well_known_name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="idempotent" transfer-ownership="none">
            <type name="boolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="release_name" c:identifier="tp_dbus_daemon_release_name" doc="Release the given well-known name. This makes a synchronous call to the bus daemon. if an error occurred." version="0.7.30" throws="1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="well_known_name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_unique_name" c:identifier="tp_dbus_daemon_get_unique_name" doc="as long as this #TpDBusDaemon is" version="0.7.35">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="list_names" c:identifier="tp_dbus_daemon_list_names" doc="has succeeded or failed, or after @weak_object has been destroyed it is destroyed, @callback will not be called at all Call the ListNames method on the bus daemon, asynchronously. The @callback will be called from the main loop with a list of all the names (either unique or well-known) that exist on the bus. In versions of telepathy-glib that have it, this should be preferred instead of calling tp_cli_dbus_daemon_call_list_names(), since that function will result in wakeups for every NameOwnerChanged signal." version="0.7.35">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="timeout_ms" transfer-ownership="none">
            <type name="int" c:type="gint"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="notified" closure="3" destroy="4">
            <type name="DBusDaemonListNamesCb" c:type="TpDBusDaemonListNamesCb"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_activatable_names" c:identifier="tp_dbus_daemon_list_activatable_names" doc="has succeeded or failed, or after @weak_object has been destroyed it is destroyed, @callback will not be called at all Call the ListActivatableNames method on the bus daemon, asynchronously. The @callback will be called from the main loop with a list of all the well-known names that are available for service-activation on the bus. In versions of telepathy-glib that have it, this should be preferred instead of calling tp_cli_dbus_daemon_call_list_activatable_names(), since that function will result in wakeups for every NameOwnerChanged signal." version="0.7.35">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="timeout_ms" transfer-ownership="none">
            <type name="int" c:type="gint"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="notified" closure="3" destroy="4">
            <type name="DBusDaemonListNamesCb" c:type="TpDBusDaemonListNamesCb"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="weak_object" transfer-ownership="none">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="register_object" c:identifier="tp_dbus_daemon_register_object" doc="Export @object at @object_path. This is a convenience wrapper around dbus_g_connection_register_g_object(), and behaves similarly." version="0.11.3">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object_path" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none" doc="an object to export">
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="unregister_object" c:identifier="tp_dbus_daemon_unregister_object" doc="with tp_dbus_daemon_register_object() Stop exporting @object on D-Bus. This is a convenience wrapper around dbus_g_connection_unregister_g_object(), and behaves similarly." version="0.11.3">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none" doc="an object previously exported">
            <type name="GObject.Object" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="DBusDaemonClass" c:type="TpDBusDaemonClass" glib:is-gtype-struct-for="DBusDaemon" doc="The class of #TpDBusDaemon." version="0.7.1">
    </record>
    <callback name="DBusDaemonListNamesCb" c:type="TpDBusDaemonListNamesCb" doc="bus names, or %NULL on error tp_dbus_daemon_list_names or tp_dbus_daemon_list_activatable_names tp_dbus_daemon_list_names or tp_dbus_daemon_list_activatable_names Signature of a callback for functions that list bus names." version="0.7.35">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="bus_daemon" transfer-ownership="none">
          <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
        </parameter>
        <parameter name="names" transfer-ownership="none">
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="error" transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="3">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="DBusDaemonNameOwnerChangedCb" c:type="TpDBusDaemonNameOwnerChangedCb" doc="tp_dbus_daemon_watch_name_owner() The signature of the callback called by tp_dbus_daemon_watch_name_owner()." version="0.7.1">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="bus_daemon" transfer-ownership="none">
          <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="new_owner" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="3">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="DBusDaemonPrivate" c:type="TpDBusDaemonPrivate">
    </record>
    <enumeration name="DBusError" doc="a remote D-Bus object is not recognised when the #TpProxy has lost its last reference object does not appear to have the required interface remote process loses ownership of its bus name, and raised by any #TpProxy methods that have not had a reply at that time or are called after the proxy becomes invalid in this way (usually meaning it crashed) valid, or is of an unacceptable type (e.g. well-known vs. unique) error name given is not valid given is not valid name given is not valid #TpProxy::invalidated to indicate an application-specific indication that the remote object no longer exists, if no more specific error is available. loop (*_run_*) if they are cancelled object is inconsistent or otherwise obviously wrong (added in 0.7.17) time of compilation #GError codes for use with the %TP_DBUS_ERRORS domain. Since 0.11.5, there is a corresponding #GEnumClass type, %TP_TYPE_DBUS_ERROR." version="0.7.1" c:type="TpDBusError">
      <member name="unknown_remote_error" value="0" c:identifier="TP_DBUS_ERROR_UNKNOWN_REMOTE_ERROR"/>
      <member name="proxy_unreferenced" value="1" c:identifier="TP_DBUS_ERROR_PROXY_UNREFERENCED"/>
      <member name="no_interface" value="2" c:identifier="TP_DBUS_ERROR_NO_INTERFACE"/>
      <member name="name_owner_lost" value="3" c:identifier="TP_DBUS_ERROR_NAME_OWNER_LOST"/>
      <member name="invalid_bus_name" value="4" c:identifier="TP_DBUS_ERROR_INVALID_BUS_NAME"/>
      <member name="invalid_interface_name" value="5" c:identifier="TP_DBUS_ERROR_INVALID_INTERFACE_NAME"/>
      <member name="invalid_object_path" value="6" c:identifier="TP_DBUS_ERROR_INVALID_OBJECT_PATH"/>
      <member name="invalid_member_name" value="7" c:identifier="TP_DBUS_ERROR_INVALID_MEMBER_NAME"/>
      <member name="object_removed" value="8" c:identifier="TP_DBUS_ERROR_OBJECT_REMOVED"/>
      <member name="cancelled" value="9" c:identifier="TP_DBUS_ERROR_CANCELLED"/>
      <member name="inconsistent" value="10" c:identifier="TP_DBUS_ERROR_INCONSISTENT"/>
    </enumeration>
    <enumeration name="DBusNameType" doc="(not including the name of the bus daemon itself) com.example.Service (not including the name of the bus daemon itself) itself, which has the syntax of a well-known name, but behaves like a unique name names, but not the bus daemon A set of flags indicating which D-Bus bus names are acceptable. They can be combined with the bitwise-or operator to accept multiple types. %TP_DBUS_NAME_TYPE_NOT_BUS_DAEMON and %TP_DBUS_NAME_TYPE_ANY are the bitwise-or of other appropriate types, for convenience. Since 0.11.5, there is a corresponding #GFlagsClass type, %TP_TYPE_DBUS_NAME_TYPE." version="0.7.1" c:type="TpDBusNameType">
      <member name="unique" value="1" c:identifier="TP_DBUS_NAME_TYPE_UNIQUE"/>
      <member name="well_known" value="2" c:identifier="TP_DBUS_NAME_TYPE_WELL_KNOWN"/>
      <member name="bus_daemon" value="4" c:identifier="TP_DBUS_NAME_TYPE_BUS_DAEMON"/>
      <member name="not_bus_daemon" value="3" c:identifier="TP_DBUS_NAME_TYPE_NOT_BUS_DAEMON"/>
      <member name="any" value="7" c:identifier="TP_DBUS_NAME_TYPE_ANY"/>
    </enumeration>
    <record name="DBusPropertiesMixinClass" c:type="_TpDBusPropertiesMixinClass">
    </record>
    <enumeration name="DBusPropertiesMixinFlags" doc="GetAll Bitfield representing allowed access to a property. Since 0.11.5, there is a corresponding #GFlagsClass type, %TP_TYPE_DBUS_PROPERTIES_MIXIN_FLAGS." version="0.7.3" c:type="TpDBusPropertiesMixinFlags">
      <member name="read" value="1" c:identifier="TP_DBUS_PROPERTIES_MIXIN_FLAG_READ"/>
      <member name="write" value="2" c:identifier="TP_DBUS_PROPERTIES_MIXIN_FLAG_WRITE"/>
    </enumeration>
    <callback name="DBusPropertiesMixinGetter" c:type="TpDBusPropertiesMixinGetter" doc="the value Signature of a callback used to get the value of a property. For simplicity, in this mixin we don't allow getting a property to fail; implementations must always be prepared to return *something*.">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="iface" transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="getter_data" transfer-ownership="none">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="DBusPropertiesMixinIfaceImpl" c:type="TpDBusPropertiesMixinIfaceImpl" doc="the @getter_data from each property implementation will be passed the @setter_data from each property implementation will be passed Structure representing an implementation of an interface's properties. In addition to the documented fields, there are four pointers which must be initialized to %NULL. This structure must either be statically allocated, or duplicated and never freed, so it always remains valid." version="0.7.3">
      <field name="name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="getter" writable="1">
        <type name="DBusPropertiesMixinGetter" c:type="TpDBusPropertiesMixinGetter"/>
      </field>
      <field name="setter" writable="1">
        <type name="DBusPropertiesMixinSetter" c:type="TpDBusPropertiesMixinSetter"/>
      </field>
      <field name="props" writable="1">
        <type name="DBusPropertiesMixinPropImpl" c:type="TpDBusPropertiesMixinPropImpl*"/>
      </field>
      <field name="_1" writable="1">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="_2" writable="1">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="mixin_next" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
      <field name="mixin_priv" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
    </record>
    <record name="DBusPropertiesMixinIfaceInfo" c:type="TpDBusPropertiesMixinIfaceInfo" doc="Semi-abstract description of an interface. Each service GInterface that has properties must have one of these attached to it via tp_svc_interface_set_dbus_properties_info() in its base_init function; service GInterfaces that do not have properties may have one of these with no properties. This structure must either be statically allocated, or duplicated and never freed, so it always remains valid. In addition to the documented members, there are two private pointers for future expansion, which must always be initialized to %NULL." version="0.7.3">
      <field name="dbus_interface" writable="1">
        <type name="GLib.Quark" c:type="GQuark"/>
      </field>
      <field name="props" writable="1">
        <type name="DBusPropertiesMixinPropInfo" c:type="TpDBusPropertiesMixinPropInfo*"/>
      </field>
      <field name="_1" writable="1">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="_2" writable="1">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
    </record>
    <record name="DBusPropertiesMixinPropImpl" c:type="TpDBusPropertiesMixinPropImpl" doc="Structure representing an implementation of a property. In addition to the documented fields, there are three pointers which must be initialized to %NULL. This structure must either be statically allocated, or duplicated and never freed, so it always remains valid." version="0.7.3">
      <field name="name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="getter_data" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
      <field name="setter_data" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
      <field name="_1" writable="1">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="_2" writable="1">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="mixin_priv" writable="1">
        <type name="any" c:type="gpointer"/>
      </field>
    </record>
    <record name="DBusPropertiesMixinPropInfo" c:type="TpDBusPropertiesMixinPropInfo" doc="Semi-abstract description of a property, as attached to a service GInterface. This structure must either be statically allocated, or duplicated and never freed, so it always remains valid. In addition to the documented members, there are two private pointers for future expansion, which must always be initialized to %NULL." version="0.7.3">
      <field name="name" writable="1">
        <type name="GLib.Quark" c:type="GQuark"/>
      </field>
      <field name="flags" writable="1">
        <type name="DBusPropertiesMixinFlags" c:type="TpDBusPropertiesMixinFlags"/>
      </field>
      <field name="dbus_signature" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="type" writable="1">
        <type name="GType" c:type="GType"/>
      </field>
      <field name="_1" writable="1">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
      <field name="_2" writable="1">
        <type name="GObject.Callback" c:type="GCallback"/>
      </field>
    </record>
    <callback name="DBusPropertiesMixinSetter" c:type="TpDBusPropertiesMixinSetter" doc="Signature of a callback used to get the value of a property." throws="1">
      <return-value transfer-ownership="none" doc="on failure">
        <type name="boolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="iface" transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="setter_data" transfer-ownership="none">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="DTMFEvent" c:type="TpDTMFEvent">
      <member name="digit_0" value="0" c:identifier="TP_DTMF_EVENT_DIGIT_0"/>
      <member name="digit_1" value="1" c:identifier="TP_DTMF_EVENT_DIGIT_1"/>
      <member name="digit_2" value="2" c:identifier="TP_DTMF_EVENT_DIGIT_2"/>
      <member name="digit_3" value="3" c:identifier="TP_DTMF_EVENT_DIGIT_3"/>
      <member name="digit_4" value="4" c:identifier="TP_DTMF_EVENT_DIGIT_4"/>
      <member name="digit_5" value="5" c:identifier="TP_DTMF_EVENT_DIGIT_5"/>
      <member name="digit_6" value="6" c:identifier="TP_DTMF_EVENT_DIGIT_6"/>
      <member name="digit_7" value="7" c:identifier="TP_DTMF_EVENT_DIGIT_7"/>
      <member name="digit_8" value="8" c:identifier="TP_DTMF_EVENT_DIGIT_8"/>
      <member name="digit_9" value="9" c:identifier="TP_DTMF_EVENT_DIGIT_9"/>
      <member name="asterisk" value="10" c:identifier="TP_DTMF_EVENT_ASTERISK"/>
      <member name="hash" value="11" c:identifier="TP_DTMF_EVENT_HASH"/>
      <member name="letter_a" value="12" c:identifier="TP_DTMF_EVENT_LETTER_A"/>
      <member name="letter_b" value="13" c:identifier="TP_DTMF_EVENT_LETTER_B"/>
      <member name="letter_c" value="14" c:identifier="TP_DTMF_EVENT_LETTER_C"/>
      <member name="letter_d" value="15" c:identifier="TP_DTMF_EVENT_LETTER_D"/>
    </enumeration>
    <enumeration name="DebugLevel" c:type="TpDebugLevel">
      <member name="error" value="0" c:identifier="TP_DEBUG_LEVEL_ERROR"/>
      <member name="critical" value="1" c:identifier="TP_DEBUG_LEVEL_CRITICAL"/>
      <member name="warning" value="2" c:identifier="TP_DEBUG_LEVEL_WARNING"/>
      <member name="message" value="3" c:identifier="TP_DEBUG_LEVEL_MESSAGE"/>
      <member name="info" value="4" c:identifier="TP_DEBUG_LEVEL_INFO"/>
      <member name="debug" value="5" c:identifier="TP_DEBUG_LEVEL_DEBUG"/>
    </enumeration>
    <enumeration name="DeliveryReportingSupportFlags" c:type="TpDeliveryReportingSupportFlags">
      <member name="failures" value="1" c:identifier="TP_DELIVERY_REPORTING_SUPPORT_FLAG_RECEIVE_FAILURES"/>
      <member name="successes" value="2" c:identifier="TP_DELIVERY_REPORTING_SUPPORT_FLAG_RECEIVE_SUCCESSES"/>
    </enumeration>
    <enumeration name="DeliveryStatus" c:type="TpDeliveryStatus">
      <member name="unknown" value="0" c:identifier="TP_DELIVERY_STATUS_UNKNOWN"/>
      <member name="delivered" value="1" c:identifier="TP_DELIVERY_STATUS_DELIVERED"/>
      <member name="temporarily_failed" value="2" c:identifier="TP_DELIVERY_STATUS_TEMPORARILY_FAILED"/>
      <member name="permanently_failed" value="3" c:identifier="TP_DELIVERY_STATUS_PERMANENTLY_FAILED"/>
      <member name="accepted" value="4" c:identifier="TP_DELIVERY_STATUS_ACCEPTED"/>
    </enumeration>
    <enumeration name="FileHashType" c:type="TpFileHashType">
      <member name="none" value="0" c:identifier="TP_FILE_HASH_TYPE_NONE"/>
      <member name="md5" value="1" c:identifier="TP_FILE_HASH_TYPE_MD5"/>
      <member name="sha1" value="2" c:identifier="TP_FILE_HASH_TYPE_SHA1"/>
      <member name="sha256" value="3" c:identifier="TP_FILE_HASH_TYPE_SHA256"/>
    </enumeration>
    <enumeration name="FileTransferState" c:type="TpFileTransferState">
      <member name="none" value="0" c:identifier="TP_FILE_TRANSFER_STATE_NONE"/>
      <member name="pending" value="1" c:identifier="TP_FILE_TRANSFER_STATE_PENDING"/>
      <member name="accepted" value="2" c:identifier="TP_FILE_TRANSFER_STATE_ACCEPTED"/>
      <member name="open" value="3" c:identifier="TP_FILE_TRANSFER_STATE_OPEN"/>
      <member name="completed" value="4" c:identifier="TP_FILE_TRANSFER_STATE_COMPLETED"/>
      <member name="cancelled" value="5" c:identifier="TP_FILE_TRANSFER_STATE_CANCELLED"/>
    </enumeration>
    <enumeration name="FileTransferStateChangeReason" c:type="TpFileTransferStateChangeReason">
      <member name="none" value="0" c:identifier="TP_FILE_TRANSFER_STATE_CHANGE_REASON_NONE"/>
      <member name="requested" value="1" c:identifier="TP_FILE_TRANSFER_STATE_CHANGE_REASON_REQUESTED"/>
      <member name="local_stopped" value="2" c:identifier="TP_FILE_TRANSFER_STATE_CHANGE_REASON_LOCAL_STOPPED"/>
      <member name="remote_stopped" value="3" c:identifier="TP_FILE_TRANSFER_STATE_CHANGE_REASON_REMOTE_STOPPED"/>
      <member name="local_error" value="4" c:identifier="TP_FILE_TRANSFER_STATE_CHANGE_REASON_LOCAL_ERROR"/>
      <member name="remote_error" value="5" c:identifier="TP_FILE_TRANSFER_STATE_CHANGE_REASON_REMOTE_ERROR"/>
    </enumeration>
    <enumeration name="HandleType" c:type="TpHandleType">
      <member name="none" value="0" c:identifier="TP_HANDLE_TYPE_NONE"/>
      <member name="contact" value="1" c:identifier="TP_HANDLE_TYPE_CONTACT"/>
      <member name="room" value="2" c:identifier="TP_HANDLE_TYPE_ROOM"/>
      <member name="list" value="3" c:identifier="TP_HANDLE_TYPE_LIST"/>
      <member name="group" value="4" c:identifier="TP_HANDLE_TYPE_GROUP"/>
    </enumeration>
    <constant name="IFACE_ACCOUNT" value="org.freedesktop.Telepathy.Account">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_ACCOUNT_INTERFACE_AVATAR" value="org.freedesktop.Telepathy.Account.Interface.Avatar">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_ACCOUNT_MANAGER" value="org.freedesktop.Telepathy.AccountManager">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL" value="org.freedesktop.Telepathy.Channel">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_DISPATCHER" value="org.freedesktop.Telepathy.ChannelDispatcher">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_DISPATCHER_INTERFACE_OPERATION_LIST" value="org.freedesktop.Telepathy.ChannelDispatcher.Interface.OperationList">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_DISPATCH_OPERATION" value="org.freedesktop.Telepathy.ChannelDispatchOperation">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_INTERFACE_CALL_STATE" value="org.freedesktop.Telepathy.Channel.Interface.CallState">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_INTERFACE_CHAT_STATE" value="org.freedesktop.Telepathy.Channel.Interface.ChatState">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_INTERFACE_DESTROYABLE" value="org.freedesktop.Telepathy.Channel.Interface.Destroyable">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_INTERFACE_DTMF" value="org.freedesktop.Telepathy.Channel.Interface.DTMF">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_INTERFACE_GROUP" value="org.freedesktop.Telepathy.Channel.Interface.Group">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_INTERFACE_HOLD" value="org.freedesktop.Telepathy.Channel.Interface.Hold">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_INTERFACE_MEDIA_SIGNALLING" value="org.freedesktop.Telepathy.Channel.Interface.MediaSignalling">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_INTERFACE_MESSAGES" value="org.freedesktop.Telepathy.Channel.Interface.Messages">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_INTERFACE_PASSWORD" value="org.freedesktop.Telepathy.Channel.Interface.Password">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_INTERFACE_TUBE" value="org.freedesktop.Telepathy.Channel.Interface.Tube">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_REQUEST" value="org.freedesktop.Telepathy.ChannelRequest">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_TYPE_CONTACT_LIST" value="org.freedesktop.Telepathy.Channel.Type.ContactList">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_TYPE_DBUS_TUBE" value="org.freedesktop.Telepathy.Channel.Type.DBusTube">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_TYPE_FILE_TRANSFER" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_TYPE_ROOM_LIST" value="org.freedesktop.Telepathy.Channel.Type.RoomList">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_TYPE_STREAMED_MEDIA" value="org.freedesktop.Telepathy.Channel.Type.StreamedMedia">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_TYPE_STREAM_TUBE" value="org.freedesktop.Telepathy.Channel.Type.StreamTube">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_TYPE_TEXT" value="org.freedesktop.Telepathy.Channel.Type.Text">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CHANNEL_TYPE_TUBES" value="org.freedesktop.Telepathy.Channel.Type.Tubes">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CLIENT" value="org.freedesktop.Telepathy.Client">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CLIENT_APPROVER" value="org.freedesktop.Telepathy.Client.Approver">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CLIENT_HANDLER" value="org.freedesktop.Telepathy.Client.Handler">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CLIENT_INTERFACE_REQUESTS" value="org.freedesktop.Telepathy.Client.Interface.Requests">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CLIENT_OBSERVER" value="org.freedesktop.Telepathy.Client.Observer">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION" value="org.freedesktop.Telepathy.Connection">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_ALIASING" value="org.freedesktop.Telepathy.Connection.Interface.Aliasing">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_AVATARS" value="org.freedesktop.Telepathy.Connection.Interface.Avatars">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_BALANCE" value="org.freedesktop.Telepathy.Connection.Interface.Balance">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_CAPABILITIES" value="org.freedesktop.Telepathy.Connection.Interface.Capabilities">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_CONTACTS" value="org.freedesktop.Telepathy.Connection.Interface.Contacts">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES" value="org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_CONTACT_INFO" value="org.freedesktop.Telepathy.Connection.Interface.ContactInfo">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_LOCATION" value="org.freedesktop.Telepathy.Connection.Interface.Location">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_PRESENCE" value="org.freedesktop.Telepathy.Connection.Interface.Presence">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_REQUESTS" value="org.freedesktop.Telepathy.Connection.Interface.Requests">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE" value="org.freedesktop.Telepathy.Connection.Interface.SimplePresence">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_CONNECTION_MANAGER" value="org.freedesktop.Telepathy.ConnectionManager">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_DBUS_DAEMON" value="org.freedesktop.DBus">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_DBUS_INTROSPECTABLE" value="org.freedesktop.DBus.Introspectable">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_DBUS_PEER" value="org.freedesktop.DBus.Peer">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_DBUS_PROPERTIES" value="org.freedesktop.DBus.Properties">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_DEBUG" value="org.freedesktop.Telepathy.Debug">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_MEDIA_SESSION_HANDLER" value="org.freedesktop.Telepathy.Media.SessionHandler">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_MEDIA_STREAM_HANDLER" value="org.freedesktop.Telepathy.Media.StreamHandler">
      <type name="utf8"/>
    </constant>
    <constant name="IFACE_PROPERTIES_INTERFACE" value="org.freedesktop.Telepathy.Properties">
      <type name="utf8"/>
    </constant>
    <callback name="IntFunc" c:type="TpIntFunc" doc="A callback function acting on unsigned integers.">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="i" transfer-ownership="none">
          <type name="uint" c:type="guint"/>
        </parameter>
        <parameter name="userdata" transfer-ownership="none">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="IntSet" c:type="TpIntSet" doc="Opaque type representing a set of unsigned integers." glib:type-name="TpIntSet" glib:get-type="tp_intset_get_type">
      <constructor name="new" c:identifier="tp_intset_new" doc="Allocate a new integer set.">
        <return-value transfer-ownership="full">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
      </constructor>
      <constructor name="new_containing" c:identifier="tp_intset_new_containing" doc="Allocate a new integer set containing the given integer. tp_intset_destroy()">
        <return-value transfer-ownership="full">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="destroy" c:identifier="tp_intset_destroy" doc="Free all memory used by the set.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="clear" c:identifier="tp_intset_clear" doc="Unset every integer in the set.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="add" c:identifier="tp_intset_add" doc="Add an integer into a TpIntSet.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="tp_intset_remove" doc="Remove an integer from a TpIntSet">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_member" c:identifier="tp_intset_is_member" doc="Tests if @element is a member of @set">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="foreach" c:identifier="tp_intset_foreach" doc="Call @func(element, @userdata) for each element of @set, in order.">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="func" transfer-ownership="none" scope="call" closure="2">
            <type name="IntFunc" c:type="TpIntFunc"/>
          </parameter>
          <parameter name="userdata" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_array" c:identifier="tp_intset_to_array" doc="the same integers as @set.">
        <return-value transfer-ownership="full" doc="containing">
          <array name="GLib.Array" c:type="GArray*">
            <type name="uint"/>
          </array>
        </return-value>
      </method>
      <method name="is_empty" c:identifier="tp_intset_is_empty" doc="Return the same thing as &lt;code&gt;(tp_intset_size (set) == 0)&lt;/code&gt;, but calculated more efficiently." version="0.11.UNRELEASED">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <method name="size" c:identifier="tp_intset_size">
        <return-value transfer-ownership="none">
          <type name="uint" c:type="guint"/>
        </return-value>
      </method>
      <method name="is_equal" c:identifier="tp_intset_is_equal">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="right" transfer-ownership="none">
            <type name="IntSet" c:type="TpIntSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="tp_intset_copy" doc="tp_intset_destroy() by the caller">
        <return-value transfer-ownership="full">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
      </method>
      <method name="intersection" c:identifier="tp_intset_intersection" doc="(analogous to the bitwise operation left &amp; right), to be freed with tp_intset_destroy() by the caller">
        <return-value transfer-ownership="full">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
        <parameters>
          <parameter name="right" transfer-ownership="none">
            <type name="IntSet" c:type="TpIntSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="union" c:identifier="tp_intset_union" doc="(analogous to the bitwise operation left | right), to be freed with tp_intset_destroy() by the caller">
        <return-value transfer-ownership="full">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
        <parameters>
          <parameter name="right" transfer-ownership="none">
            <type name="IntSet" c:type="TpIntSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="difference" c:identifier="tp_intset_difference" doc="(analogous to the bitwise operation left &amp; (~right)), to be freed with tp_intset_destroy() by the caller">
        <return-value transfer-ownership="full">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
        <parameters>
          <parameter name="right" transfer-ownership="none">
            <type name="IntSet" c:type="TpIntSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="symmetric_difference" c:identifier="tp_intset_symmetric_difference" doc="but not both (analogous to the bitwise operation left ^ right), to be freed with tp_intset_destroy() by the caller">
        <return-value transfer-ownership="full">
          <type name="IntSet" c:type="TpIntSet*"/>
        </return-value>
        <parameters>
          <parameter name="right" transfer-ownership="none">
            <type name="IntSet" c:type="TpIntSet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dump" c:identifier="tp_intset_dump" doc="numbers in @set in a human-readable format">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
    </record>
    <record name="IntSetFastIter" c:type="TpIntSetFastIter" doc="An opaque structure representing iteration in undefined order over a set of integers. Must be initialized with tp_intset_fast_iter_init(). Usage is similar to #GHashTableIter: &lt;informalexample&gt;&lt;programlisting&gt; TpIntSetFastIter iter; guint element; tp_intset_fast_iter_init (&amp;amp;iter, intset); while (tp_intset_fast_iter_next (&amp;amp;iter, &amp;amp;element)) { printf (&quot;%u is in the intset\n&quot;, element); } &lt;/programlisting&gt;&lt;/informalexample&gt;" version="0.11.UNRELEASED">
      <field name="_dummy" writable="1">
        <array zero-terminated="0" c:type="gpointer" fixed-size="16">
          <type name="any"/>
        </array>
      </field>
    </record>
    <record name="IntSetIter" c:type="TpIntSetIter" doc="element in the set by tp_intset_iter_next(); undefined after tp_intset_iter_next() returns %FALSE. A structure representing iteration over a set of integers. Must be initialized with either TP_INTSET_ITER_INIT() or tp_intset_iter_init(). Since 0.11.UNRELEASED, consider using #TpIntSetFastIter if iteration in numerical order is not required.">
      <field name="set" writable="1">
        <type name="IntSet" c:type="TpIntSet*"/>
      </field>
      <field name="element" writable="1">
        <type name="uint" c:type="guint"/>
      </field>
    </record>
    <enumeration name="LocalHoldState" c:type="TpLocalHoldState">
      <member name="unheld" value="0" c:identifier="TP_LOCAL_HOLD_STATE_UNHELD"/>
      <member name="held" value="1" c:identifier="TP_LOCAL_HOLD_STATE_HELD"/>
      <member name="pending_hold" value="2" c:identifier="TP_LOCAL_HOLD_STATE_PENDING_HOLD"/>
      <member name="pending_unhold" value="3" c:identifier="TP_LOCAL_HOLD_STATE_PENDING_UNHOLD"/>
    </enumeration>
    <enumeration name="LocalHoldStateReason" c:type="TpLocalHoldStateReason">
      <member name="none" value="0" c:identifier="TP_LOCAL_HOLD_STATE_REASON_NONE"/>
      <member name="requested" value="1" c:identifier="TP_LOCAL_HOLD_STATE_REASON_REQUESTED"/>
      <member name="resource_not_available" value="2" c:identifier="TP_LOCAL_HOLD_STATE_REASON_RESOURCE_NOT_AVAILABLE"/>
    </enumeration>
    <constant name="MC5_BUS_NAME" value="org.freedesktop.Telepathy.MissionControl5">
      <type name="utf8"/>
    </constant>
    <enumeration name="MediaStreamBaseProto" c:type="TpMediaStreamBaseProto">
      <member name="udp" value="0" c:identifier="TP_MEDIA_STREAM_BASE_PROTO_UDP"/>
      <member name="tcp" value="1" c:identifier="TP_MEDIA_STREAM_BASE_PROTO_TCP"/>
    </enumeration>
    <enumeration name="MediaStreamDirection" c:type="TpMediaStreamDirection">
      <member name="none" value="0" c:identifier="TP_MEDIA_STREAM_DIRECTION_NONE"/>
      <member name="send" value="1" c:identifier="TP_MEDIA_STREAM_DIRECTION_SEND"/>
      <member name="receive" value="2" c:identifier="TP_MEDIA_STREAM_DIRECTION_RECEIVE"/>
      <member name="bidirectional" value="3" c:identifier="TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL"/>
    </enumeration>
    <enumeration name="MediaStreamError" c:type="TpMediaStreamError">
      <member name="unknown" value="0" c:identifier="TP_MEDIA_STREAM_ERROR_UNKNOWN"/>
      <member name="eos" value="1" c:identifier="TP_MEDIA_STREAM_ERROR_EOS"/>
      <member name="codec_negotiation_failed" value="2" c:identifier="TP_MEDIA_STREAM_ERROR_CODEC_NEGOTIATION_FAILED"/>
      <member name="connection_failed" value="3" c:identifier="TP_MEDIA_STREAM_ERROR_CONNECTION_FAILED"/>
      <member name="network_error" value="4" c:identifier="TP_MEDIA_STREAM_ERROR_NETWORK_ERROR"/>
      <member name="no_codecs" value="5" c:identifier="TP_MEDIA_STREAM_ERROR_NO_CODECS"/>
      <member name="invalid_cm_behavior" value="6" c:identifier="TP_MEDIA_STREAM_ERROR_INVALID_CM_BEHAVIOR"/>
      <member name="media_error" value="7" c:identifier="TP_MEDIA_STREAM_ERROR_MEDIA_ERROR"/>
    </enumeration>
    <enumeration name="MediaStreamPendingSend" c:type="TpMediaStreamPendingSend">
      <member name="local_send" value="1" c:identifier="TP_MEDIA_STREAM_PENDING_LOCAL_SEND"/>
      <member name="remote_send" value="2" c:identifier="TP_MEDIA_STREAM_PENDING_REMOTE_SEND"/>
    </enumeration>
    <enumeration name="MediaStreamState" c:type="TpMediaStreamState">
      <member name="disconnected" value="0" c:identifier="TP_MEDIA_STREAM_STATE_DISCONNECTED"/>
      <member name="connecting" value="1" c:identifier="TP_MEDIA_STREAM_STATE_CONNECTING"/>
      <member name="connected" value="2" c:identifier="TP_MEDIA_STREAM_STATE_CONNECTED"/>
    </enumeration>
    <enumeration name="MediaStreamTransportType" c:type="TpMediaStreamTransportType">
      <member name="local" value="0" c:identifier="TP_MEDIA_STREAM_TRANSPORT_TYPE_LOCAL"/>
      <member name="derived" value="1" c:identifier="TP_MEDIA_STREAM_TRANSPORT_TYPE_DERIVED"/>
      <member name="relay" value="2" c:identifier="TP_MEDIA_STREAM_TRANSPORT_TYPE_RELAY"/>
    </enumeration>
    <enumeration name="MediaStreamType" c:type="TpMediaStreamType">
      <member name="audio" value="0" c:identifier="TP_MEDIA_STREAM_TYPE_AUDIO"/>
      <member name="video" value="1" c:identifier="TP_MEDIA_STREAM_TYPE_VIDEO"/>
    </enumeration>
    <enumeration name="MessagePartSupportFlags" c:type="TpMessagePartSupportFlags">
      <member name="one_attachment" value="1" c:identifier="TP_MESSAGE_PART_SUPPORT_FLAG_ONE_ATTACHMENT"/>
      <member name="multiple_attachments" value="2" c:identifier="TP_MESSAGE_PART_SUPPORT_FLAG_MULTIPLE_ATTACHMENTS"/>
    </enumeration>
    <enumeration name="MessageSendingFlags" c:type="TpMessageSendingFlags">
      <member name="message_sending_flag_report_delivery" value="1" c:identifier="TP_MESSAGE_SENDING_FLAG_REPORT_DELIVERY"/>
    </enumeration>
    <constant name="NUM_TP_CHANNEL_CHAT_STATES" value="5">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_CHANNEL_GROUP_CHANGE_REASONS" value="12">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_CHANNEL_TEXT_MESSAGE_TYPES" value="5">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_CHANNEL_TEXT_SEND_ERRORS" value="6">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_CONNECTION_PRESENCE_TYPES" value="9">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_CONNECTION_STATUSES" value="3">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_CONNECTION_STATUS_REASONS" value="14">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_CONTACT_FEATURES" value="1">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_DBUS_ERRORS" value="1">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_DEBUG_LEVELS" value="6">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_DELIVERY_STATUSES" value="5">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_DTMF_EVENTS" value="16">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_FILE_HASH_TYPES" value="4">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_FILE_TRANSFER_STATES" value="6">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_FILE_TRANSFER_STATE_CHANGE_REASONS" value="6">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_HANDLE_TYPES" value="5">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_LOCAL_HOLD_STATES" value="4">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_LOCAL_HOLD_STATE_REASONS" value="3">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_MEDIA_STREAM_BASE_PROTOS" value="2">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_MEDIA_STREAM_DIRECTIONS" value="4">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_MEDIA_STREAM_ERRORS" value="8">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_MEDIA_STREAM_STATES" value="3">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_MEDIA_STREAM_TRANSPORT_TYPES" value="3">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_MEDIA_STREAM_TYPES" value="2">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_RICH_PRESENCE_ACCESS_CONTROL_TYPES" value="4">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_SOCKET_ACCESS_CONTROLS" value="4">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_SOCKET_ADDRESS_TYPES" value="4">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_TUBE_CHANNEL_STATES" value="4">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_TUBE_STATES" value="3">
      <type name="int"/>
    </constant>
    <constant name="NUM_TP_TUBE_TYPES" value="2">
      <type name="int"/>
    </constant>
    <class name="ObserveChannelsContext" c:type="TpObserveChannelsContext" doc="Data structure representing the context of a Observer.ObserveChannels() call." version="0.11.5" parent="GObject.Object" glib:type-name="TpObserveChannelsContext" glib:get-type="tp_observe_channels_context_get_type" glib:type-struct="ObserveChannelsContextClass">
      <method name="accept" c:identifier="tp_observe_channels_context_accept" doc="Called by #TpBaseClientClassObserveChannelsImpl when it's done so the D-Bus method can return." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="fail" c:identifier="tp_observe_channels_context_fail" doc="Called by #TpBaseClientClassObserveChannelsImpl to raise a D-Bus error." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="GError*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delay" c:identifier="tp_observe_channels_context_delay" doc="Called by #TpBaseClientClassObserveChannelsImpl to indicate that it implements the method in an async way. The caller must take a reference to the #TpObserveChannelsContext before calling this function, and is responsible for calling either tp_observe_channels_context_accept() or tp_observe_channels_context_fail() later." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="is_recovering" c:identifier="tp_observe_channels_context_is_recovering" doc="If this call to ObserveChannels is for channels that already existed before this observer started (because the observer used tp_base_client_set_observer_recover()), return %TRUE. In most cases, the result is %FALSE." version="0.11.5">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
      </method>
      <property name="account" version="0.11.5" writable="1" construct-only="1" doc="A #TpAccount object representing the Account that has been passed to ObserveChannels. Read-only except during construction. This property can't be %NULL.">
        <type name="Account" c:type="TpAccount"/>
      </property>
      <property name="channels" version="0.11.5" writable="1" construct-only="1" doc="A #GPtrArray containing #TpChannel objects representing the channels that have been passed to ObserveChannels. Read-only except during construction. This property can't be %NULL.">
        <type name="GLib.PtrArray" c:type="GPtrArray"/>
      </property>
      <property name="connection" version="0.11.5" writable="1" construct-only="1" doc="A #TpConnection object representing the Connection that has been passed to ObserveChannels. Read-only except during construction. This property can't be %NULL.">
        <type name="Connection" c:type="TpConnection"/>
      </property>
      <property name="dispatch-operation" version="0.11.5" writable="1" construct-only="1" doc="A #TpChannelDispatchOperation object representing the ChannelDispatchOperation that has been passed to ObserveChannels, or %NULL if none has been passed. Read-only except during construction.">
        <type name="ChannelDispatchOperation" c:type="TpChannelDispatchOperation"/>
      </property>
      <property name="requests" version="0.11.5" writable="1" construct-only="1" doc="A #GPtrArray containing #TpChannelRequest objects representing the requests that have been passed to ObserveChannels. Read-only except during construction. This property can't be %NULL.">
        <type name="GLib.PtrArray" c:type="GPtrArray"/>
      </property>
    </class>
    <record name="ObserveChannelsContextClass" c:type="TpObserveChannelsContextClass" glib:is-gtype-struct-for="ObserveChannelsContext" doc="The class of a #TpObserveChannelsContext." version="0.11.5">
    </record>
    <record name="ObserveChannelsContextPrivate" c:type="TpObserveChannelsContextPrivate">
    </record>
    <constant name="PROP_ACCOUNT_AUTOMATIC_PRESENCE" value="org.freedesktop.Telepathy.Account.AutomaticPresence">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_CONNECTION" value="org.freedesktop.Telepathy.Account.Connection">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_CONNECTION_STATUS" value="org.freedesktop.Telepathy.Account.ConnectionStatus">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_CONNECTION_STATUS_REASON" value="org.freedesktop.Telepathy.Account.ConnectionStatusReason">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_CONNECT_AUTOMATICALLY" value="org.freedesktop.Telepathy.Account.ConnectAutomatically">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_CURRENT_PRESENCE" value="org.freedesktop.Telepathy.Account.CurrentPresence">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_DISPLAY_NAME" value="org.freedesktop.Telepathy.Account.DisplayName">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_ENABLED" value="org.freedesktop.Telepathy.Account.Enabled">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_HAS_BEEN_ONLINE" value="org.freedesktop.Telepathy.Account.HasBeenOnline">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_ICON" value="org.freedesktop.Telepathy.Account.Icon">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_INTERFACES" value="org.freedesktop.Telepathy.Account.Interfaces">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_INTERFACE_AVATAR_AVATAR" value="org.freedesktop.Telepathy.Account.Interface.Avatar.Avatar">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_MANAGER_INTERFACES" value="org.freedesktop.Telepathy.AccountManager.Interfaces">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_MANAGER_INVALID_ACCOUNTS" value="org.freedesktop.Telepathy.AccountManager.InvalidAccounts">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_MANAGER_SUPPORTED_ACCOUNT_PROPERTIES" value="org.freedesktop.Telepathy.AccountManager.SupportedAccountProperties">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_MANAGER_VALID_ACCOUNTS" value="org.freedesktop.Telepathy.AccountManager.ValidAccounts">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_NICKNAME" value="org.freedesktop.Telepathy.Account.Nickname">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_NORMALIZED_NAME" value="org.freedesktop.Telepathy.Account.NormalizedName">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_PARAMETERS" value="org.freedesktop.Telepathy.Account.Parameters">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_REQUESTED_PRESENCE" value="org.freedesktop.Telepathy.Account.RequestedPresence">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_ACCOUNT_VALID" value="org.freedesktop.Telepathy.Account.Valid">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_CHANNEL_TYPE" value="org.freedesktop.Telepathy.Channel.ChannelType">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_DISPATCHER_INTERFACES" value="org.freedesktop.Telepathy.ChannelDispatcher.Interfaces">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_DISPATCHER_INTERFACE_OPERATION_LIST_DISPATCH_OPERATIONS" value="org.freedesktop.Telepathy.ChannelDispatcher.Interface.OperationList.DispatchOperations">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_DISPATCH_OPERATION_ACCOUNT" value="org.freedesktop.Telepathy.ChannelDispatchOperation.Account">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_DISPATCH_OPERATION_CHANNELS" value="org.freedesktop.Telepathy.ChannelDispatchOperation.Channels">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_DISPATCH_OPERATION_CONNECTION" value="org.freedesktop.Telepathy.ChannelDispatchOperation.Connection">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_DISPATCH_OPERATION_INTERFACES" value="org.freedesktop.Telepathy.ChannelDispatchOperation.Interfaces">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_DISPATCH_OPERATION_POSSIBLE_HANDLERS" value="org.freedesktop.Telepathy.ChannelDispatchOperation.PossibleHandlers">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INITIATOR_HANDLE" value="org.freedesktop.Telepathy.Channel.InitiatorHandle">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INITIATOR_ID" value="org.freedesktop.Telepathy.Channel.InitiatorID">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACES" value="org.freedesktop.Telepathy.Channel.Interfaces">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_GROUP_GROUP_FLAGS" value="org.freedesktop.Telepathy.Channel.Interface.Group.GroupFlags">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_GROUP_HANDLE_OWNERS" value="org.freedesktop.Telepathy.Channel.Interface.Group.HandleOwners">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_GROUP_LOCAL_PENDING_MEMBERS" value="org.freedesktop.Telepathy.Channel.Interface.Group.LocalPendingMembers">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_GROUP_MEMBERS" value="org.freedesktop.Telepathy.Channel.Interface.Group.Members">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_GROUP_REMOTE_PENDING_MEMBERS" value="org.freedesktop.Telepathy.Channel.Interface.Group.RemotePendingMembers">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_GROUP_SELF_HANDLE" value="org.freedesktop.Telepathy.Channel.Interface.Group.SelfHandle">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_MESSAGES_DELIVERY_REPORTING_SUPPORT" value="org.freedesktop.Telepathy.Channel.Interface.Messages.DeliveryReportingSupport">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_MESSAGES_MESSAGE_PART_SUPPORT_FLAGS" value="org.freedesktop.Telepathy.Channel.Interface.Messages.MessagePartSupportFlags">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_MESSAGES_PENDING_MESSAGES" value="org.freedesktop.Telepathy.Channel.Interface.Messages.PendingMessages">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_MESSAGES_SUPPORTED_CONTENT_TYPES" value="org.freedesktop.Telepathy.Channel.Interface.Messages.SupportedContentTypes">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_TUBE_PARAMETERS" value="org.freedesktop.Telepathy.Channel.Interface.Tube.Parameters">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_INTERFACE_TUBE_STATE" value="org.freedesktop.Telepathy.Channel.Interface.Tube.State">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_REQUESTED" value="org.freedesktop.Telepathy.Channel.Requested">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_REQUEST_ACCOUNT" value="org.freedesktop.Telepathy.ChannelRequest.Account">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_REQUEST_INTERFACES" value="org.freedesktop.Telepathy.ChannelRequest.Interfaces">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_REQUEST_PREFERRED_HANDLER" value="org.freedesktop.Telepathy.ChannelRequest.PreferredHandler">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_REQUEST_REQUESTS" value="org.freedesktop.Telepathy.ChannelRequest.Requests">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_REQUEST_USER_ACTION_TIME" value="org.freedesktop.Telepathy.ChannelRequest.UserActionTime">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TARGET_HANDLE" value="org.freedesktop.Telepathy.Channel.TargetHandle">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TARGET_HANDLE_TYPE" value="org.freedesktop.Telepathy.Channel.TargetHandleType">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TARGET_ID" value="org.freedesktop.Telepathy.Channel.TargetID">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_DBUS_TUBE_DBUS_NAMES" value="org.freedesktop.Telepathy.Channel.Type.DBusTube.DBusNames">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_DBUS_TUBE_SERVICE_NAME" value="org.freedesktop.Telepathy.Channel.Type.DBusTube.ServiceName">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_DBUS_TUBE_SUPPORTED_ACCESS_CONTROLS" value="org.freedesktop.Telepathy.Channel.Type.DBusTube.SupportedAccessControls">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_AVAILABLE_SOCKET_TYPES" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.AvailableSocketTypes">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_CONTENT_HASH" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.ContentHash">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_CONTENT_HASH_TYPE" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.ContentHashType">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_CONTENT_TYPE" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.ContentType">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_DATE" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.Date">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_DESCRIPTION" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.Description">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_FILENAME" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.Filename">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_INITIAL_OFFSET" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.InitialOffset">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_SIZE" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.Size">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_STATE" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.State">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_FILE_TRANSFER_TRANSFERRED_BYTES" value="org.freedesktop.Telepathy.Channel.Type.FileTransfer.TransferredBytes">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_ROOM_LIST_SERVER" value="org.freedesktop.Telepathy.Channel.Type.RoomList.Server">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_STREAMED_MEDIA_IMMUTABLE_STREAMS" value="org.freedesktop.Telepathy.Channel.Type.StreamedMedia.ImmutableStreams">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_AUDIO" value="org.freedesktop.Telepathy.Channel.Type.StreamedMedia.InitialAudio">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_STREAMED_MEDIA_INITIAL_VIDEO" value="org.freedesktop.Telepathy.Channel.Type.StreamedMedia.InitialVideo">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_STREAM_TUBE_SERVICE" value="org.freedesktop.Telepathy.Channel.Type.StreamTube.Service">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CHANNEL_TYPE_STREAM_TUBE_SUPPORTED_SOCKET_TYPES" value="org.freedesktop.Telepathy.Channel.Type.StreamTube.SupportedSocketTypes">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CLIENT_APPROVER_APPROVER_CHANNEL_FILTER" value="org.freedesktop.Telepathy.Client.Approver.ApproverChannelFilter">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CLIENT_HANDLER_BYPASS_APPROVAL" value="org.freedesktop.Telepathy.Client.Handler.BypassApproval">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CLIENT_HANDLER_CAPABILITIES" value="org.freedesktop.Telepathy.Client.Handler.Capabilities">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CLIENT_HANDLER_HANDLED_CHANNELS" value="org.freedesktop.Telepathy.Client.Handler.HandledChannels">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CLIENT_HANDLER_HANDLER_CHANNEL_FILTER" value="org.freedesktop.Telepathy.Client.Handler.HandlerChannelFilter">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CLIENT_INTERFACES" value="org.freedesktop.Telepathy.Client.Interfaces">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CLIENT_OBSERVER_OBSERVER_CHANNEL_FILTER" value="org.freedesktop.Telepathy.Client.Observer.ObserverChannelFilter">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CLIENT_OBSERVER_RECOVER" value="org.freedesktop.Telepathy.Client.Observer.Recover">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACES" value="org.freedesktop.Telepathy.Connection.Interfaces">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_AVATARS_MAXIMUM_AVATAR_BYTES" value="org.freedesktop.Telepathy.Connection.Interface.Avatars.MaximumAvatarBytes">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_AVATARS_MAXIMUM_AVATAR_HEIGHT" value="org.freedesktop.Telepathy.Connection.Interface.Avatars.MaximumAvatarHeight">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_AVATARS_MAXIMUM_AVATAR_WIDTH" value="org.freedesktop.Telepathy.Connection.Interface.Avatars.MaximumAvatarWidth">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_AVATARS_MINIMUM_AVATAR_HEIGHT" value="org.freedesktop.Telepathy.Connection.Interface.Avatars.MinimumAvatarHeight">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_AVATARS_MINIMUM_AVATAR_WIDTH" value="org.freedesktop.Telepathy.Connection.Interface.Avatars.MinimumAvatarWidth">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_AVATARS_RECOMMENDED_AVATAR_HEIGHT" value="org.freedesktop.Telepathy.Connection.Interface.Avatars.RecommendedAvatarHeight">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_AVATARS_RECOMMENDED_AVATAR_WIDTH" value="org.freedesktop.Telepathy.Connection.Interface.Avatars.RecommendedAvatarWidth">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_AVATARS_SUPPORTED_AVATAR_MIME_TYPES" value="org.freedesktop.Telepathy.Connection.Interface.Avatars.SupportedAvatarMIMETypes">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_BALANCE_ACCOUNT_BALANCE" value="org.freedesktop.Telepathy.Connection.Interface.Balance.AccountBalance">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_CONTACTS_CONTACT_ATTRIBUTE_INTERFACES" value="org.freedesktop.Telepathy.Connection.Interface.Contacts.ContactAttributeInterfaces">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_CONTACT_INFO_CONTACT_INFO_FLAGS" value="org.freedesktop.Telepathy.Connection.Interface.ContactInfo.ContactInfoFlags">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_CONTACT_INFO_SUPPORTED_FIELDS" value="org.freedesktop.Telepathy.Connection.Interface.ContactInfo.SupportedFields">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_LOCATION_LOCATION_ACCESS_CONTROL" value="org.freedesktop.Telepathy.Connection.Interface.Location.LocationAccessControl">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_LOCATION_LOCATION_ACCESS_CONTROL_TYPES" value="org.freedesktop.Telepathy.Connection.Interface.Location.LocationAccessControlTypes">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_REQUESTS_CHANNELS" value="org.freedesktop.Telepathy.Connection.Interface.Requests.Channels">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_REQUESTS_REQUESTABLE_CHANNEL_CLASSES" value="org.freedesktop.Telepathy.Connection.Interface.Requests.RequestableChannelClasses">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_INTERFACE_SIMPLE_PRESENCE_STATUSES" value="org.freedesktop.Telepathy.Connection.Interface.SimplePresence.Statuses">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_MANAGER_INTERFACES" value="org.freedesktop.Telepathy.ConnectionManager.Interfaces">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_SELF_HANDLE" value="org.freedesktop.Telepathy.Connection.SelfHandle">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_CONNECTION_STATUS" value="org.freedesktop.Telepathy.Connection.Status">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_DEBUG_ENABLED" value="org.freedesktop.Telepathy.Debug.Enabled">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_MEDIA_STREAM_HANDLER_CREATED_LOCALLY" value="org.freedesktop.Telepathy.Media.StreamHandler.CreatedLocally">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_MEDIA_STREAM_HANDLER_NAT_TRAVERSAL" value="org.freedesktop.Telepathy.Media.StreamHandler.NATTraversal">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_MEDIA_STREAM_HANDLER_RELAY_INFO" value="org.freedesktop.Telepathy.Media.StreamHandler.RelayInfo">
      <type name="utf8"/>
    </constant>
    <constant name="PROP_MEDIA_STREAM_HANDLER_STUN_SERVERS" value="org.freedesktop.Telepathy.Media.StreamHandler.STUNServers">
      <type name="utf8"/>
    </constant>
    <enumeration name="PropertyFlags" c:type="TpPropertyFlags">
      <member name="read" value="1" c:identifier="TP_PROPERTY_FLAG_READ"/>
      <member name="write" value="2" c:identifier="TP_PROPERTY_FLAG_WRITE"/>
    </enumeration>
    <class name="Proxy" c:type="TpProxy" doc="Structure representing a Telepathy client-side proxy." version="0.7.1" parent="GObject.Object" glib:type-name="TpProxy" glib:get-type="tp_proxy_get_type" glib:type-struct="ProxyClass">
      <method name="has_interface_by_id" c:identifier="tp_proxy_has_interface_by_id" doc="&lt;!-- --&gt;" version="0.7.1">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="iface" transfer-ownership="none">
            <type name="GLib.Quark" c:type="GQuark"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_dbus_daemon" c:identifier="tp_proxy_get_dbus_daemon" doc="&lt;!-- --&gt; this object, if any; always %NULL if this object is itself a #TpDBusDaemon. The caller must reference the returned object with g_object_ref() if it will be kept." version="0.7.17">
        <return-value transfer-ownership="none" doc="a borrowed reference to the #TpDBusDaemon for">
          <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
        </return-value>
      </method>
      <method name="get_bus_name" c:identifier="tp_proxy_get_bus_name" doc="&lt;!-- --&gt; must copy the string with g_strdup() if it will be kept." version="0.7.17">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_object_path" c:identifier="tp_proxy_get_object_path" doc="&lt;!-- --&gt; string with g_strdup() if it will be kept." version="0.7.17">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </method>
      <method name="get_invalidated" c:identifier="tp_proxy_get_invalidated" doc="&lt;!-- --&gt; invalidated. The caller must copy the error, for instance with g_error_copy(), if it will be kept." version="0.7.17">
        <return-value transfer-ownership="none">
          <type name="GLib.Error" c:type="GError*"/>
        </return-value>
      </method>
      <method name="dbus_error_to_gerror" c:identifier="tp_proxy_dbus_error_to_gerror" doc="tp_cli_connection_connect_to_connection_error() Convert a D-Bus error name into a GError as if it was returned by a method on this proxy. This method is useful when D-Bus error names are emitted in signals, such as Connection.ConnectionError and Group.MembersChangedDetailed." version="0.7.24" throws="1">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="dbus_error" transfer-ownership="none">
            <type name="utf8" c:type="char*"/>
          </parameter>
          <parameter name="debug_message" transfer-ownership="none">
            <type name="utf8" c:type="char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_prepared" c:identifier="tp_proxy_is_prepared" doc="Return %TRUE if @feature has been prepared successfully, or %FALSE if available on this object at all. (For instance, if @feature is %TP_CHANNEL_FEATURE_CHAT_STATES and @self is a #TpChannel in a protocol that doesn't actually implement chat states, or is not a #TpChannel at all, then this method will return %FALSE.) To prepare features, call tp_proxy_prepare_async()." version="0.11.3">
        <return-value transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="feature" transfer-ownership="none">
            <type name="GLib.Quark" c:type="GQuark"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepare_async" c:identifier="tp_proxy_prepare_async" doc="of desired features, ending with 0; %NULL is equivalent to an array containing only 0 been prepared or failed to prepare, or after the proxy is invalidated #TpProxy itself does not support any features, but subclasses like #TpChannel can support features, which can either be core functionality like %TP_CHANNEL_FEATURE_CORE, or extended functionality like %TP_CHANNEL_FEATURE_CHAT_STATES. Proxy instances start with no features prepared. When features are requested via tp_proxy_prepare_async(), the proxy starts to do the necessary setup to use those features. tp_proxy_prepare_async() always waits for core functionality of the proxy's instance, because %TP_CHANNEL_FEATURE_CORE is core functionality of a #TpChannel, |[ TpChannel *channel = ...; tp_proxy_prepare_async (channel, NULL, NULL, callback, user_data); ]| is equivalent to |[ TpChannel *channel = ...; GQuark features[] = { TP_CHANNEL_FEATURE_CORE, 0 }; tp_proxy_prepare_async (channel, features, NULL, callback, user_data); ]| If a feature represents core functionality (like %TP_CHANNEL_FEATURE_CORE), failure to prepare it will result in tp_proxy_prepare_async() finishing is no longer useful, it will also emit #TpProxy::invalidated. If a feature represents non-essential functionality (like %TP_CHANNEL_FEATURE_CHAT_STATES), or is not supported by the object at all, then failure to prepare it is not fatal: tp_proxy_prepare_async() will complete successfully, but tp_proxy_is_prepared() will still return %FALSE for the feature, and accessor methods for the feature will typically return a dummy value. Some #TpProxy subclasses automatically start to prepare their core features when instantiated, and features will sometimes become prepared as a side-effect of other actions, but to ensure that a feature is present you must generally call tp_proxy_prepare_async() and wait for the result." version="0.11.3">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="features" transfer-ownership="none" allow-none="1" doc="an array">
            <array c:type="GQuark*">
              <type name="GLib.Quark"/>
            </array>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="async" closure="3">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepare_finish" c:identifier="tp_proxy_prepare_finish" doc="Check for error in a call to tp_proxy_prepare_async(). An error here generally indicates that either the asynchronous call was cancelled, or @self has emitted #TpProxy::invalidated. or was cancelled" version="0.11.3" throws="1">
        <return-value transfer-ownership="none" doc="failed">
          <type name="boolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="bus-name" writable="1" construct-only="1" doc="The D-Bus bus name for this object. Read-only except during construction.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <property name="dbus-daemon" writable="1" construct-only="1" doc="The D-Bus daemon for this object (this object itself, if it is a TpDBusDaemon). Read-only except during construction.">
        <type name="DBusDaemon" c:type="TpDBusDaemon"/>
      </property>
      <property name="interfaces" doc="Known D-Bus interface names for this object.">
        <type name="GObject.Strv" c:type="GStrv"/>
      </property>
      <property name="object-path" writable="1" construct-only="1" doc="The D-Bus object path for this object. Read-only except during construction.">
        <type name="utf8" c:type="gchararray"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="dbus_daemon">
        <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
      </field>
      
      <field name="bus_name">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="object_path">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="invalidated">
        <type name="GLib.Error" c:type="GError*"/>
      </field>
      <field name="priv">
        <type name="ProxyPrivate" c:type="TpProxyPrivate*"/>
      </field>
      <glib:signal name="invalidated" doc="Emitted when this proxy has been become invalid for whatever reason. Any more specific signal should be emitted first.">
        <return-value transfer-ownership="full">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="domain" transfer-ownership="none">
            <type name="uint" c:type="guint"/>
          </parameter>
          <parameter name="code" transfer-ownership="none">
            <type name="int" c:type="gint"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <type name="utf8" c:type="gchararray"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ProxyClass" c:type="TpProxyClass" glib:is-gtype-struct-for="Proxy" doc="automatically add this interface in its constructor constructor will fail if a well-known bus name is given tp_proxy_prepare_async() (currently only usable within telepathy-glib itself) The class of a #TpProxy." version="0.7.1">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="interface">
        <type name="GLib.Quark" c:type="GQuark"/>
      </field>
      <field name="must_have_unique_name" bits="1">
        <type name="uint" c:type="unsigned"/>
      </field>
      <field name="_reserved_flags" bits="31">
        <type name="uint" c:type="guint"/>
      </field>
      <field name="list_features">
        <type name="any" c:type="gpointer"/>
      </field>
      <field name="_reserved">
        <array zero-terminated="0" c:type="GCallback" fixed-size="3">
          <type name="GObject.Callback"/>
        </array>
      </field>
      <field name="priv">
        <type name="any" c:type="gpointer"/>
      </field>
    </record>
    <record name="ProxyFeature" c:type="TpProxyFeature" doc="Structure representing a feature. This is currently opaque to code outside telepathy-glib itself." version="0.11.3">
    </record>
    <record name="ProxyPendingCall" c:type="TpProxyPendingCall">
      <method name="cancel" c:identifier="tp_proxy_pending_call_cancel">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <record name="ProxyPrivate" c:type="TpProxyPrivate">
    </record>
    <record name="ProxySignalConnection" c:type="TpProxySignalConnection">
      <method name="disconnect" c:identifier="tp_proxy_signal_connection_disconnect">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
    </record>
    <enumeration name="RichPresenceAccessControlType" c:type="TpRichPresenceAccessControlType">
      <member name="whitelist" value="0" c:identifier="TP_RICH_PRESENCE_ACCESS_CONTROL_TYPE_WHITELIST"/>
      <member name="publish_list" value="1" c:identifier="TP_RICH_PRESENCE_ACCESS_CONTROL_TYPE_PUBLISH_LIST"/>
      <member name="group" value="2" c:identifier="TP_RICH_PRESENCE_ACCESS_CONTROL_TYPE_GROUP"/>
      <member name="open" value="3" c:identifier="TP_RICH_PRESENCE_ACCESS_CONTROL_TYPE_OPEN"/>
    </enumeration>
    <class name="SimpleApprover" c:type="TpSimpleApprover" doc="Data structure representing a simple Approver implementation." version="0.11.5" parent="BaseClient" glib:type-name="TpSimpleApprover" glib:get-type="tp_simple_approver_get_type" glib:type-struct="SimpleApproverClass">
      <constructor name="new" c:identifier="tp_simple_approver_new" doc="is destroyed Convenient function to create a new #TpSimpleApprover instance." version="0.11.5">
        <return-value transfer-ownership="full" doc="a new #TpSimpleApprover">
          <type name="TelepathyGLib.SimpleApprover" c:type="TpBaseClient*"/>
        </return-value>
        <parameters>
          <parameter name="dbus" transfer-ownership="none">
            <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="unique" transfer-ownership="none">
            <type name="boolean" c:type="gboolean"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="notified" closure="4" destroy="5">
            <type name="SimpleApproverAddDispatchOperationImpl" c:type="TpSimpleApproverAddDispatchOperationImpl"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="callback" version="0.11.5" readable="0" writable="1" construct-only="1" doc="The TpSimpleApproverAddDispatchOperationImpl callback implementing the ApproverChannels D-Bus method. This property can't be %NULL.">
        <type name="any" c:type="gpointer"/>
      </property>
      <property name="destroy" version="0.11.5" readable="0" writable="1" construct-only="1" doc="The #GDestroyNotify function called to free the user-data pointer when the #TpSimpleApprover is destroyed.">
        <type name="any" c:type="gpointer"/>
      </property>
      <property name="user-data" version="0.11.5" readable="0" writable="1" construct-only="1" doc="The user-data pointer passed to the callback implementing the ApproverChannels D-Bus method.">
        <type name="any" c:type="gpointer"/>
      </property>
      <field name="parent">
        <type name="BaseClient" c:type="TpBaseClient"/>
      </field>
      <field name="priv">
        <type name="SimpleApproverPrivate" c:type="TpSimpleApproverPrivate*"/>
      </field>
    </class>
    <callback name="SimpleApproverAddDispatchOperationImpl" c:type="TpSimpleApproverAddDispatchOperationImpl" doc="if possible all having %TP_CHANNEL_FEATURE_CORE prepared the dispatch_operation is not guaranteed to be prepared D-Bus call Signature of the implementation of the AddDispatchOperation method. This function must call either tp_add_dispatch_operation_context_accept(), tp_add_dispatch_operation_context_delay() or tp_add_dispatch_operation_context_fail() on @context before it returns." version="0.11.5">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <type name="SimpleApprover" c:type="TpSimpleApprover*"/>
        </parameter>
        <parameter name="account" transfer-ownership="none">
          <type name="Account" c:type="TpAccount*"/>
        </parameter>
        <parameter name="connection" transfer-ownership="none">
          <type name="Connection" c:type="TpConnection*"/>
        </parameter>
        <parameter name="channels" transfer-ownership="none" doc="a #GList of #TpChannel,">
          <type name="GLib.List" c:type="GList*">
            <type name="TelepathyGLib.Channel"/>
          </type>
        </parameter>
        <parameter name="dispatch_operation" transfer-ownership="none" allow-none="1" doc="a #TpChannelDispatchOperation or %NULL;">
          <type name="ChannelDispatchOperation" c:type="TpChannelDispatchOperation*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <type name="AddDispatchOperationContext" c:type="TpAddDispatchOperationContext*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="6">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="SimpleApproverClass" c:type="TpSimpleApproverClass" glib:is-gtype-struct-for="SimpleApprover" doc="The class of a #TpSimpleApprover." version="0.11.5">
      <field name="parent_class">
        <type name="BaseClientClass" c:type="TpBaseClientClass"/>
      </field>
      <field name="_padding">
        <array zero-terminated="0" c:type="GCallback" fixed-size="7">
          <type name="GObject.Callback"/>
        </array>
      </field>
    </record>
    <record name="SimpleApproverPrivate" c:type="TpSimpleApproverPrivate">
    </record>
    <class name="SimpleObserver" c:type="TpSimpleObserver" doc="Data structure representing a simple Observer implementation." version="0.11.5" parent="BaseClient" glib:type-name="TpSimpleObserver" glib:get-type="tp_simple_observer_get_type" glib:type-struct="SimpleObserverClass">
      <constructor name="new" c:identifier="tp_simple_observer_new" doc="is destroyed Convenient function to create a new #TpSimpleObserver instance." version="0.11.5">
        <return-value transfer-ownership="full" doc="a new #TpSimpleObserver">
          <type name="TelepathyGLib.SimpleObserver" c:type="TpBaseClient*"/>
        </return-value>
        <parameters>
          <parameter name="dbus" transfer-ownership="none">
            <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
          </parameter>
          <parameter name="recover" transfer-ownership="none">
            <type name="boolean" c:type="gboolean"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="unique" transfer-ownership="none">
            <type name="boolean" c:type="gboolean"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none" scope="notified" closure="5" destroy="6">
            <type name="SimpleObserverObserveChannelsImpl" c:type="TpSimpleObserverObserveChannelsImpl"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="any" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="call">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="callback" version="0.11.5" readable="0" writable="1" construct-only="1" doc="The TpSimpleObserverObserveChannelsImpl callback implementing the ObserverChannels D-Bus method. This property can't be %NULL.">
        <type name="any" c:type="gpointer"/>
      </property>
      <property name="destroy" version="0.11.5" readable="0" writable="1" construct-only="1" doc="The #GDestroyNotify function called to free the user-data pointer when the #TpSimpleObserver is destroyed.">
        <type name="any" c:type="gpointer"/>
      </property>
      <property name="recover" version="0.11.5" readable="0" writable="1" construct-only="1" doc="The value of the Observer.Recover D-Bus property.">
        <type name="boolean" c:type="gboolean"/>
      </property>
      <property name="user-data" version="0.11.5" readable="0" writable="1" construct-only="1" doc="The user-data pointer passed to the callback implementing the ObserverChannels D-Bus method.">
        <type name="any" c:type="gpointer"/>
      </property>
      <field name="parent">
        <type name="BaseClient" c:type="TpBaseClient"/>
      </field>
      <field name="priv">
        <type name="SimpleObserverPrivate" c:type="TpSimpleObserverPrivate*"/>
      </field>
    </class>
    <record name="SimpleObserverClass" c:type="TpSimpleObserverClass" glib:is-gtype-struct-for="SimpleObserver" doc="The class of a #TpSimpleObserver." version="0.11.5">
      <field name="parent_class">
        <type name="BaseClientClass" c:type="TpBaseClientClass"/>
      </field>
      <field name="_padding">
        <array zero-terminated="0" c:type="GCallback" fixed-size="7">
          <type name="GObject.Callback"/>
        </array>
      </field>
    </record>
    <callback name="SimpleObserverObserveChannelsImpl" c:type="TpSimpleObserverObserveChannelsImpl" doc="if possible all having %TP_CHANNEL_FEATURE_CORE prepared if possible the dispatch_operation is not guaranteed to be prepared #TpChannelRequest, all having their object-path defined but are not guaranteed to be prepared. D-Bus call Signature of the implementation of the ObserveChannels method. This function must call either tp_observe_channels_context_accept(), tp_observe_channels_context_delay() or tp_observe_channels_context_fail() on @context before it returns." version="0.11.5">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <type name="SimpleObserver" c:type="TpSimpleObserver*"/>
        </parameter>
        <parameter name="account" transfer-ownership="none">
          <type name="Account" c:type="TpAccount*"/>
        </parameter>
        <parameter name="connection" transfer-ownership="none">
          <type name="Connection" c:type="TpConnection*"/>
        </parameter>
        <parameter name="channels" transfer-ownership="none" doc="a #GList of #TpChannel,">
          <type name="GLib.List" c:type="GList*">
            <type name="TelepathyGLib.Channel"/>
          </type>
        </parameter>
        <parameter name="dispatch_operation" transfer-ownership="none" allow-none="1" doc="a #TpChannelDispatchOperation or %NULL;">
          <type name="ChannelDispatchOperation" c:type="TpChannelDispatchOperation*"/>
        </parameter>
        <parameter name="requests" transfer-ownership="none" doc="a #GList of">
          <type name="GLib.List" c:type="GList*">
            <type name="TelepathyGLib.ChannelRequest"/>
          </type>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <type name="ObserveChannelsContext" c:type="TpObserveChannelsContext*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="7">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="SimpleObserverPrivate" c:type="TpSimpleObserverPrivate">
    </record>
    <enumeration name="SocketAccessControl" c:type="TpSocketAccessControl">
      <member name="localhost" value="0" c:identifier="TP_SOCKET_ACCESS_CONTROL_LOCALHOST"/>
      <member name="port" value="1" c:identifier="TP_SOCKET_ACCESS_CONTROL_PORT"/>
      <member name="netmask" value="2" c:identifier="TP_SOCKET_ACCESS_CONTROL_NETMASK"/>
      <member name="credentials" value="3" c:identifier="TP_SOCKET_ACCESS_CONTROL_CREDENTIALS"/>
    </enumeration>
    <enumeration name="SocketAddressType" c:type="TpSocketAddressType">
      <member name="unix" value="0" c:identifier="TP_SOCKET_ADDRESS_TYPE_UNIX"/>
      <member name="abstract_unix" value="1" c:identifier="TP_SOCKET_ADDRESS_TYPE_ABSTRACT_UNIX"/>
      <member name="ipv4" value="2" c:identifier="TP_SOCKET_ADDRESS_TYPE_IPV4"/>
      <member name="ipv6" value="3" c:identifier="TP_SOCKET_ADDRESS_TYPE_IPV6"/>
    </enumeration>
    <constant name="TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_GTALK_P2P" value="org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/gtalk-p2p">
      <type name="utf8"/>
    </constant>
    <constant name="TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_ICE_UDP" value="org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/ice-udp">
      <type name="utf8"/>
    </constant>
    <constant name="TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_WLM_2009" value="org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/wlm-2009">
      <type name="utf8"/>
    </constant>
    <constant name="TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_WLM_8_5" value="org.freedesktop.Telepathy.Channel.Interface.MediaSignalling/wlm-8.5">
      <type name="utf8"/>
    </constant>
    <constant name="TOKEN_CONNECTION_CONTACT_ID" value="org.freedesktop.Telepathy.Connection/contact-id">
      <type name="utf8"/>
    </constant>
    <constant name="TOKEN_CONNECTION_INTERFACE_ALIASING_ALIAS" value="org.freedesktop.Telepathy.Connection.Interface.Aliasing/alias">
      <type name="utf8"/>
    </constant>
    <constant name="TOKEN_CONNECTION_INTERFACE_AVATARS_TOKEN" value="org.freedesktop.Telepathy.Connection.Interface.Avatars/token">
      <type name="utf8"/>
    </constant>
    <constant name="TOKEN_CONNECTION_INTERFACE_CAPABILITIES_CAPS" value="org.freedesktop.Telepathy.Connection.Interface.Capabilities/caps">
      <type name="utf8"/>
    </constant>
    <constant name="TOKEN_CONNECTION_INTERFACE_CONTACT_CAPABILITIES_CAPABILITIES" value="org.freedesktop.Telepathy.Connection.Interface.ContactCapabilities/capabilities">
      <type name="utf8"/>
    </constant>
    <constant name="TOKEN_CONNECTION_INTERFACE_LOCATION_LOCATION" value="org.freedesktop.Telepathy.Connection.Interface.Location/location">
      <type name="utf8"/>
    </constant>
    <constant name="TOKEN_CONNECTION_INTERFACE_SIMPLE_PRESENCE_PRESENCE" value="org.freedesktop.Telepathy.Connection.Interface.SimplePresence/presence">
      <type name="utf8"/>
    </constant>
    <enumeration name="TubeChannelState" c:type="TpTubeChannelState">
      <member name="local_pending" value="0" c:identifier="TP_TUBE_CHANNEL_STATE_LOCAL_PENDING"/>
      <member name="remote_pending" value="1" c:identifier="TP_TUBE_CHANNEL_STATE_REMOTE_PENDING"/>
      <member name="open" value="2" c:identifier="TP_TUBE_CHANNEL_STATE_OPEN"/>
      <member name="not_offered" value="3" c:identifier="TP_TUBE_CHANNEL_STATE_NOT_OFFERED"/>
    </enumeration>
    <enumeration name="TubeState" c:type="TpTubeState">
      <member name="local_pending" value="0" c:identifier="TP_TUBE_STATE_LOCAL_PENDING"/>
      <member name="remote_pending" value="1" c:identifier="TP_TUBE_STATE_REMOTE_PENDING"/>
      <member name="open" value="2" c:identifier="TP_TUBE_STATE_OPEN"/>
    </enumeration>
    <enumeration name="TubeType" c:type="TpTubeType">
      <member name="dbus" value="0" c:identifier="TP_TUBE_TYPE_DBUS"/>
      <member name="stream" value="1" c:identifier="TP_TUBE_TYPE_STREAM"/>
    </enumeration>
    <constant name="UNKNOWN_CONNECTION_STATUS" value="-1">
      <type name="int"/>
    </constant>
    <function name="dbus_check_valid_bus_name" c:identifier="tp_dbus_check_valid_bus_name" doc="%TP_DBUS_NAME_TYPE_WELL_KNOWN or %TP_DBUS_NAME_TYPE_BUS_DAEMON (often this will be %TP_DBUS_NAME_TYPE_NOT_BUS_DAEMON or %TP_DBUS_NAME_TYPE_ANY) Check that the given string is a valid D-Bus bus name of an appropriate type." version="0.7.1" throws="1">
      <return-value transfer-ownership="none">
        <type name="boolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="allow_types" transfer-ownership="none">
          <type name="DBusNameType" c:type="TpDBusNameType"/>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_check_valid_interface_name" c:identifier="tp_dbus_check_valid_interface_name" doc="returned Check that the given string is a valid D-Bus interface name. This is also appropriate to use to check for valid error names." version="0.7.1" throws="1">
      <return-value transfer-ownership="none">
        <type name="boolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_check_valid_member_name" c:identifier="tp_dbus_check_valid_member_name" doc="returned Check that the given string is a valid D-Bus member (method or signal) name." version="0.7.1" throws="1">
      <return-value transfer-ownership="none">
        <type name="boolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_check_valid_object_path" c:identifier="tp_dbus_check_valid_object_path" doc="returned Check that the given string is a valid D-Bus object path." version="0.7.1" throws="1">
      <return-value transfer-ownership="none">
        <type name="boolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="path" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_errors_quark" c:identifier="tp_dbus_errors_quark">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="dbus_properties_mixin_class_init" c:identifier="tp_dbus_properties_mixin_class_init" doc="Initialize the class @cls to use the D-Bus Properties mixin. The given struct member, of size sizeof(TpDBusPropertiesMixinClass), will be used to store property implementation information. Each property and each interface must have been declared as a member of a GInterface implemented by @cls, using tp_svc_interface_set_dbus_properties_info(). Before calling this function, the array @interfaces must have been placed in the #TpDBusPropertiesMixinClass structure; if it would be empty, it may instead be %NULL. This function should be called from the class_init callback in such a way that it will only be called once, even if the class is subclassed. which means that only interfaces whose properties are set up using tp_dbus_properties_mixin_implement_interface() will be used. #TpDBusPropertiesMixinClass can be omitted from @cls.  It is treated as if it were present, but with all fields (including TpDBusPropertiesMixinClass::interfaces) being %NULL, so only interfaces whose properties are set using tp_dbus_properties_mixin_implement_interface() will be used." version="0.7.3">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cls" transfer-ownership="none">
          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <type name="size_t" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_properties_mixin_get" c:identifier="tp_dbus_properties_mixin_get" doc="Initialize @value with the type of the property @property_name on by calling the D-Bus method org.freedesktop.DBus.Properties.Get. If Get would return a D-Bus error, @value remains unset and @error is filled in instead. on failure" version="0.7.13" throws="1">
      <return-value transfer-ownership="none">
        <type name="boolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="interface_name" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="property_name" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_properties_mixin_getter_gobject_properties" c:identifier="tp_dbus_properties_mixin_getter_gobject_properties" doc="the value which must be a string containing the GObject property's name An implementation of #TpDBusPropertiesMixinGetter which assumes that the @getter_data is the name of a readable #GObject property of an appropriate type, and uses it for the value of the D-Bus property.">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="iface" transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="getter_data" transfer-ownership="none">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_properties_mixin_iface_init" c:identifier="tp_dbus_properties_mixin_iface_init" doc="Declare that the DBus.Properties interface represented by @g_iface is implemented using this mixin.">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="g_iface" transfer-ownership="none">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="iface_data" transfer-ownership="none">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_properties_mixin_implement_interface" c:identifier="tp_dbus_properties_mixin_implement_interface" doc="are all write-only are all read-only properties, terminated by one with @name == %NULL Declare that, in addition to any interfaces set in tp_dbus_properties_mixin_class_init(), the given class (and its subclasses) will implement the properties of the interface @iface using the callbacks This function should be called from the class_init callback in such a way that it will only be called once, even if the class is subclassed. Typically, the static array @interfaces in the #TpDBusPropertiesMixinClass should be used for interfaces whose properties are implemented directly by the class @cls, and this function should be used for interfaces whose properties are implemented by mixins. It is an error for the same interface to appear in the array @interfaces in the #TpDBusPropertiesMixinClass, and also be set up by this function. If a class C and a subclass S both implement the properties of the same interface, only the implementations from the subclass S will be used, regardless of whether the implementations in C and/or S were set up by this function or via the array @interfaces in the #TpDBusPropertiesMixinClass.">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cls" transfer-ownership="none">
          <type name="GObject.ObjectClass" c:type="GObjectClass*"/>
        </parameter>
        <parameter name="iface" transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </parameter>
        <parameter name="getter" transfer-ownership="none" scope="call">
          <type name="DBusPropertiesMixinGetter" c:type="TpDBusPropertiesMixinGetter"/>
        </parameter>
        <parameter name="setter" transfer-ownership="none" scope="call">
          <type name="DBusPropertiesMixinSetter" c:type="TpDBusPropertiesMixinSetter"/>
        </parameter>
        <parameter name="props" transfer-ownership="none">
          <type name="DBusPropertiesMixinPropImpl" c:type="TpDBusPropertiesMixinPropImpl*"/>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_properties_mixin_make_properties_hash" c:identifier="tp_dbus_properties_mixin_make_properties_hash" doc="Retrieves the values of several D-Bus properties from an object, and builds a hash mapping the fully-qualified name of the property to its value.  This is equivalent to calling tp_dbus_properties_mixin_get() for each property and building the table yourself, with the proviso that this function will g_assert() if retrieving a property fails (for instance, because it does not exist). Additional keys and values can be inserted into the returned hash table; if this is done, the inserted keys and values will be freed when the hash table is destroyed. The keys must be allocated with g_strdup() or equivalent, and the values must be slice-allocated (for instance with tp_g_value_slice_new_string() or a similar function). Note that in particular, tp_asv_set_string() and similar functions should not be used with this hash table. GValues, which must be freed by the caller (at which point its contents will also be freed).">
      <return-value transfer-ownership="full" doc="fully-qualified property names to">
        <type name="GLib.HashTable" c:type="GHashTable*"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="first_interface" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="first_property" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter transfer-ownership="none">
          <varargs>
          </varargs>
        </parameter>
      </parameters>
    </function>
    <function name="dbus_properties_mixin_setter_gobject_properties" c:identifier="tp_dbus_properties_mixin_setter_gobject_properties" doc="which must be a string containing the GObject property's name An implementation of #TpDBusPropertiesMixinSetter which assumes that the type, and sets that property to the given value." throws="1">
      <return-value transfer-ownership="none">
        <type name="boolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="iface" transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="setter_data" transfer-ownership="none">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_divert_messages" c:identifier="tp_debug_divert_messages" doc="do nothing Open the given file for writing and duplicate its file descriptor to be used for stdout and stderr. This has the effect of closing the previous stdout and stderr, and sending all messages that would have gone there to the given file instead. By default the file is truncated and hence overwritten each time the process is executed. Since version 0.7.14, if the filename is prefixed with '+' then the file is not truncated and output is added at the end of the file. Passing %NULL to this function is guaranteed to have no effect. This is so you can call it with the recommended usage &lt;literal&gt;tp_debug_divert_messages (g_getenv (&quot;MYAPP_LOGFILE&quot;))&lt;/literal&gt; and it won't do anything if the environment variable is not set. This function still works if telepathy-glib was compiled without debug support." version="0.7.1">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_set_flags" c:identifier="tp_debug_set_flags" doc="no additional flags are set. Set the debug flags indicated by @flags_string, in addition to any already set. The parsing matches that of g_parse_debug_string(). If telepathy-glib was compiled with --disable-debug (not recommended), this function has no practical effect, since the debug messages it would enable were removed at compile time.">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="flags_string" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_set_persistent" c:identifier="tp_debug_set_persistent" doc="FALSE enables exiting if there are no connections (the default behavior). Used to enable persistent operation of the connection manager process for debugging purposes.">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="persistent" transfer-ownership="none">
          <type name="boolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_timestamped_log_handler" c:identifier="tp_debug_timestamped_log_handler" doc="A #GLogFunc that prepends the UTC time (currently in ISO 8601 format, with microsecond resolution) to the message, then calls g_log_default_handler. Intended usage is: &lt;informalexample&gt;&lt;programlisting&gt;if (g_getenv (&quot;MYPROG_TIMING&quot;) != NULL) g_log_set_default_handler (tp_debug_timestamped_log_handler, NULL); &lt;/programlisting&gt;&lt;/informalexample&gt; If telepathy-glib was compiled with --disable-debug (not recommended), this function is equivalent to g_log_default_handler(). RFC-3339 format. Previously, they were printed in local time, in a format similar to RFC-3339." version="0.7.1">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="log_domain" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="log_level" transfer-ownership="none">
          <type name="GLib.LogLevelFlags" c:type="GLogLevelFlags"/>
        </parameter>
        <parameter name="message" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="ignored" transfer-ownership="none">
          <type name="any" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="errors_disconnected_quark" c:identifier="tp_errors_disconnected_quark">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="errors_removed_from_group_quark" c:identifier="tp_errors_removed_from_group_quark">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="handle_type_is_valid" c:identifier="tp_handle_type_is_valid" doc="If the given handle type is valid, return %TRUE. If not, set @error and return %FALSE." throws="1">
      <return-value transfer-ownership="none">
        <type name="boolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <type name="HandleType" c:type="TpHandleType"/>
        </parameter>
      </parameters>
    </function>
    <function name="handle_type_to_string" c:identifier="tp_handle_type_to_string" doc="&lt;!----&gt; For invalid handle types, returns &quot;(no handle)&quot; for 0 or &quot;(invalid handle type)&quot; for others.">
      <return-value transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <type name="HandleType" c:type="TpHandleType"/>
        </parameter>
      </parameters>
    </function>
    <function name="iface_quark_account" c:identifier="tp_iface_quark_account">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_account_interface_avatar" c:identifier="tp_iface_quark_account_interface_avatar">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_account_manager" c:identifier="tp_iface_quark_account_manager">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel" c:identifier="tp_iface_quark_channel">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_dispatch_operation" c:identifier="tp_iface_quark_channel_dispatch_operation">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_dispatcher" c:identifier="tp_iface_quark_channel_dispatcher">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_dispatcher_interface_operation_list" c:identifier="tp_iface_quark_channel_dispatcher_interface_operation_list">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_interface_call_state" c:identifier="tp_iface_quark_channel_interface_call_state">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_interface_chat_state" c:identifier="tp_iface_quark_channel_interface_chat_state">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_interface_destroyable" c:identifier="tp_iface_quark_channel_interface_destroyable">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_interface_dtmf" c:identifier="tp_iface_quark_channel_interface_dtmf">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_interface_group" c:identifier="tp_iface_quark_channel_interface_group">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_interface_hold" c:identifier="tp_iface_quark_channel_interface_hold">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_interface_media_signalling" c:identifier="tp_iface_quark_channel_interface_media_signalling">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_interface_messages" c:identifier="tp_iface_quark_channel_interface_messages">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_interface_password" c:identifier="tp_iface_quark_channel_interface_password">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_interface_tube" c:identifier="tp_iface_quark_channel_interface_tube">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_request" c:identifier="tp_iface_quark_channel_request">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_type_contact_list" c:identifier="tp_iface_quark_channel_type_contact_list">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_type_dbus_tube" c:identifier="tp_iface_quark_channel_type_dbus_tube">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_type_file_transfer" c:identifier="tp_iface_quark_channel_type_file_transfer">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_type_room_list" c:identifier="tp_iface_quark_channel_type_room_list">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_type_stream_tube" c:identifier="tp_iface_quark_channel_type_stream_tube">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_type_streamed_media" c:identifier="tp_iface_quark_channel_type_streamed_media">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_type_text" c:identifier="tp_iface_quark_channel_type_text">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_channel_type_tubes" c:identifier="tp_iface_quark_channel_type_tubes">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_client" c:identifier="tp_iface_quark_client">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_client_approver" c:identifier="tp_iface_quark_client_approver">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_client_handler" c:identifier="tp_iface_quark_client_handler">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_client_interface_requests" c:identifier="tp_iface_quark_client_interface_requests">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_client_observer" c:identifier="tp_iface_quark_client_observer">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection" c:identifier="tp_iface_quark_connection">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_aliasing" c:identifier="tp_iface_quark_connection_interface_aliasing">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_avatars" c:identifier="tp_iface_quark_connection_interface_avatars">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_balance" c:identifier="tp_iface_quark_connection_interface_balance">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_capabilities" c:identifier="tp_iface_quark_connection_interface_capabilities">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_contact_capabilities" c:identifier="tp_iface_quark_connection_interface_contact_capabilities">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_contact_info" c:identifier="tp_iface_quark_connection_interface_contact_info">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_contacts" c:identifier="tp_iface_quark_connection_interface_contacts">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_location" c:identifier="tp_iface_quark_connection_interface_location">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_presence" c:identifier="tp_iface_quark_connection_interface_presence">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_requests" c:identifier="tp_iface_quark_connection_interface_requests">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_interface_simple_presence" c:identifier="tp_iface_quark_connection_interface_simple_presence">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_connection_manager" c:identifier="tp_iface_quark_connection_manager">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_dbus_daemon" c:identifier="tp_iface_quark_dbus_daemon">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_dbus_introspectable" c:identifier="tp_iface_quark_dbus_introspectable">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_dbus_peer" c:identifier="tp_iface_quark_dbus_peer">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_dbus_properties" c:identifier="tp_iface_quark_dbus_properties">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_debug" c:identifier="tp_iface_quark_debug">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_media_session_handler" c:identifier="tp_iface_quark_media_session_handler">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_media_stream_handler" c:identifier="tp_iface_quark_media_stream_handler">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="iface_quark_properties_interface" c:identifier="tp_iface_quark_properties_interface">
      <return-value transfer-ownership="full">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="intset_fast_iter_init" c:identifier="tp_intset_fast_iter_init" doc="Initialize @iter to iterate over @set in arbitrary order. @iter will become invalid if @set is modified." version="0.11.UNRELEASED">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="iter" transfer-ownership="none">
          <type name="IntSetFastIter" c:type="TpIntSetFastIter*"/>
        </parameter>
        <parameter name="set" transfer-ownership="none">
          <type name="IntSet" c:type="TpIntSet*"/>
        </parameter>
      </parameters>
    </function>
    <function name="intset_fast_iter_next" c:identifier="tp_intset_fast_iter_next" doc="Advances @iter and retrieves the integer it now points to. Iteration is not necessarily in numerical order." version="0.11.UNRELEASED">
      <return-value transfer-ownership="none">
        <type name="boolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="iter" transfer-ownership="none">
          <type name="IntSetFastIter" c:type="TpIntSetFastIter*"/>
        </parameter>
        <parameter name="output" direction="out" caller-allocates="0" transfer-ownership="full">
          <type name="uint" c:type="guint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="intset_from_array" c:identifier="tp_intset_from_array">
      <return-value transfer-ownership="full">
        <type name="IntSet" c:type="TpIntSet*"/>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none" doc="An array of guint">
          <array name="GLib.Array" c:type="GArray*">
            <type name="uint"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="intset_iter_next" c:identifier="tp_intset_iter_next" doc="If there are integers in (@iter-&gt;set) higher than (@iter-&gt;element), set (iter-&gt;element) to the next one and return %TRUE. Otherwise return %FALSE. Usage: &lt;informalexample&gt;&lt;programlisting&gt; TpIntSetIter iter = TP_INTSET_INIT (intset); while (tp_intset_iter_next (&amp;amp;iter)) { printf (&quot;%u is in the intset\n&quot;, iter.element); } &lt;/programlisting&gt;&lt;/informalexample&gt; Since 0.11.UNRELEASED, consider using #TpIntSetFastIter if iteration in numerical order is not required.">
      <return-value transfer-ownership="none" doc="has been advanced">
        <type name="boolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="iter" transfer-ownership="none">
          <type name="IntSetIter" c:type="TpIntSetIter*"/>
        </parameter>
      </parameters>
    </function>
    <function name="intset_sized_new" c:identifier="tp_intset_sized_new" doc="expect to store) Allocate a new integer set.">
      <return-value transfer-ownership="full">
        <type name="IntSet" c:type="TpIntSet*"/>
      </return-value>
      <parameters>
        <parameter name="size" transfer-ownership="none">
          <type name="uint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="list_connection_managers" c:identifier="tp_list_connection_managers" doc="succeeds or fails; not called if the @weak_object goes away referenced; the callback will not be called, and the call will be cancelled, if the object has vanished List the available (running or installed) connection managers. Call the callback when done. Since 0.7.26, this function will wait for each #TpConnectionManager to be ready, so all connection managers passed to @callback will be ready (tp_connection_manager_is_ready() will return %TRUE) unless an error occurred while launching that connection manager." version="0.7.1">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="bus_daemon" transfer-ownership="none">
          <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
        </parameter>
        <parameter name="callback" transfer-ownership="none" scope="notified" closure="2" destroy="3">
          <type name="ConnectionManagerListCb" c:type="TpConnectionManagerListCb"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="destroy" transfer-ownership="none" scope="call">
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none" allow-none="1" doc="if not %NULL, will be weakly">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </function>
    <function name="list_connection_names" c:identifier="tp_list_connection_names" doc="fails; not called if the D-Bus connection fails completely or if the goes away not be called if the object has vanished List the bus names of all the connections that currently exist, together with the connection manager name and the protocol name for each connection. Call the callback when done. The bus names passed to the callback can be used to construct #TpConnection objects for any connections that are of interest." version="0.7.1">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="bus_daemon" transfer-ownership="none">
          <type name="DBusDaemon" c:type="TpDBusDaemon*"/>
        </parameter>
        <parameter name="callback" transfer-ownership="none" scope="notified" closure="2" destroy="3">
          <type name="ConnectionNameListCb" c:type="TpConnectionNameListCb"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <type name="any" c:type="gpointer"/>
        </parameter>
        <parameter name="destroy" transfer-ownership="none" scope="call">
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
        <parameter name="weak_object" transfer-ownership="none" allow-none="1" doc="if not %NULL, will be weakly referenced; the callback will">
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
      </parameters>
    </function>
    <function name="svc_interface_set_dbus_properties_info" c:identifier="tp_svc_interface_set_dbus_properties_info" doc="Declare that @g_interface implements the given D-Bus interface, with the given properties. This may only be called once per GInterface, usually from a section of its base_init function that only runs once." version="0.7.3">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="g_interface" transfer-ownership="none">
          <type name="GType" c:type="GType"/>
        </parameter>
        <parameter name="info" transfer-ownership="none">
          <type name="DBusPropertiesMixinIfaceInfo" c:type="TpDBusPropertiesMixinIfaceInfo*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
