/* File:       e-gdbus-egdbusbook.h
 *
 * GType name: EGdbusBook
 * D-Bus name: org.gnome.evolution.dataserver.addressbook.Book
 *
 * Generated by GDBus Binding Tool 0.1. DO NOT EDIT.
 */

#ifndef __E_GDBUS_E_GDBUS_BOOK_H__
#define __E_GDBUS_E_GDBUS_BOOK_H__

#include <gio/gio.h>

#include "e-gdbus-typemappers.h"
G_BEGIN_DECLS

#define E_GDBUS_TYPE_BOOK         (e_gdbus_book_get_type ())
#define E_GDBUS_BOOK(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), E_GDBUS_TYPE_BOOK, EGdbusBook))
#define E_GDBUS_IS_BOOK(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_GDBUS_TYPE_BOOK))
#define E_GDBUS_BOOK_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), E_GDBUS_TYPE_BOOK, EGdbusBookIface))

/**
 * EGdbusBook:
 *
 * Opaque type representing a proxy or an exported object.
 */
typedef struct _EGdbusBook EGdbusBook; /* Dummy typedef */
/**
 * EGdbusBookIface:
 * @parent_iface: The parent interface.
 * @writable: Handler for the #EGdbusBook::writable signal.
 * @connection: Handler for the #EGdbusBook::connection signal.
 * @auth_required: Handler for the #EGdbusBook::auth-required signal.
 * @handle_open: Handler for the #EGdbusBook::handle-open signal.
 * @handle_remove: Handler for the #EGdbusBook::handle-remove signal.
 * @handle_get_contact: Handler for the #EGdbusBook::handle-get-contact signal.
 * @handle_get_contact_list: Handler for the #EGdbusBook::handle-get-contact-list signal.
 * @handle_authenticate_user: Handler for the #EGdbusBook::handle-authenticate-user signal.
 * @handle_add_contact: Handler for the #EGdbusBook::handle-add-contact signal.
 * @handle_remove_contacts: Handler for the #EGdbusBook::handle-remove-contacts signal.
 * @handle_modify_contact: Handler for the #EGdbusBook::handle-modify-contact signal.
 * @handle_get_static_capabilities: Handler for the #EGdbusBook::handle-get-static-capabilities signal.
 * @handle_get_required_fields: Handler for the #EGdbusBook::handle-get-required-fields signal.
 * @handle_get_supported_fields: Handler for the #EGdbusBook::handle-get-supported-fields signal.
 * @handle_get_supported_auth_methods: Handler for the #EGdbusBook::handle-get-supported-auth-methods signal.
 * @handle_get_book_view: Handler for the #EGdbusBook::handle-get-book-view signal.
 * @handle_get_changes: Handler for the #EGdbusBook::handle-get-changes signal.
 * @handle_cancel_operation: Handler for the #EGdbusBook::handle-cancel-operation signal.
 * @handle_close: Handler for the #EGdbusBook::handle-close signal.
 *
 * Virtual table.
 */
typedef struct _EGdbusBookIface EGdbusBookIface;

GType e_gdbus_book_get_type (void) G_GNUC_CONST;

/* ---------------------------------------------------------------------- */

typedef struct _EGdbusBookProxy EGdbusBookProxy;
typedef struct _EGdbusBookProxyClass EGdbusBookProxyClass;

/**
 * EGdbusBookProxyPrivate:
 *
 * The #EGdbusBookProxyPrivate structure contains only private data.
 */
typedef struct _EGdbusBookProxyPrivate EGdbusBookProxyPrivate;

/**
 * EGdbusBookProxy:
 *
 * The #EGdbusBookProxy structure contains only private data and
 * should only be accessed using the provided API.
 */
struct _EGdbusBookProxy
{
  GDBusProxy parent_instance;
  EGdbusBookProxyPrivate *priv;
};

/**
 * EGdbusBookProxyClass:
 *
 * Class structure for #EGdbusBookProxy.
 */
struct _EGdbusBookProxyClass
{
  GDBusProxyClass parent_class;
};

#define E_GDBUS_TYPE_BOOK_PROXY (e_gdbus_book_proxy_get_type ())
GType e_gdbus_book_proxy_get_type (void) G_GNUC_CONST;

void e_gdbus_book_proxy_new (GDBusConnection     *connection,
                   GDBusProxyFlags      flags,
                   const gchar         *name,
                   const gchar         *object_path,
                   GCancellable        *cancellable,
                   GAsyncReadyCallback  callback,
                   gpointer             user_data);
EGdbusBook *e_gdbus_book_proxy_new_finish (GAsyncResult  *res,
                        GError       **error);
EGdbusBook *e_gdbus_book_proxy_new_sync (GDBusConnection     *connection,
                       GDBusProxyFlags      flags,
                       const gchar         *name,
                       const gchar         *object_path,
                       GCancellable        *cancellable,
                       GError             **error);

void e_gdbus_book_proxy_new_for_bus (GBusType             bus_type,
                           GDBusProxyFlags      flags,
                           const gchar         *name,
                           const gchar         *object_path,
                           GCancellable        *cancellable,
                           GAsyncReadyCallback  callback,
                           gpointer             user_data);
EGdbusBook *e_gdbus_book_proxy_new_for_bus_finish (GAsyncResult  *res,
                                 GError       **error);
EGdbusBook *e_gdbus_book_proxy_new_for_bus_sync (GBusType             bus_type,
                               GDBusProxyFlags      flags,
                               const gchar         *name,
                               const gchar         *object_path,
                               GCancellable        *cancellable,
                               GError             **error);

/* ---------------------------------------------------------------------- */

typedef struct _EGdbusBookStub EGdbusBookStub;
typedef struct _EGdbusBookStubClass EGdbusBookStubClass;

/**
 * EGdbusBookStubPrivate:
 *
 * The #EGdbusBookStubPrivate structure contains only private data.
 */
typedef struct _EGdbusBookStubPrivate EGdbusBookStubPrivate;

/**
 * EGdbusBookStub:
 *
 * The #EGdbusBookStub structure contains only private data and
 * should only be accessed using the provided API.
 */
struct _EGdbusBookStub
{
  GObject parent_instance;
  EGdbusBookStubPrivate *priv;
};

/**
 * EGdbusBookStubClass:
 *
 * Class structure for #EGdbusBookStub.
 */
struct _EGdbusBookStubClass
{
  GObjectClass parent_class;
};

#define E_GDBUS_TYPE_BOOK_STUB (e_gdbus_book_stub_get_type ())
GType e_gdbus_book_stub_get_type (void) G_GNUC_CONST;

EGdbusBook *e_gdbus_book_stub_new (void);

guint e_gdbus_book_register_object (EGdbusBook *object,
                    GDBusConnection *connection,
                    const gchar *object_path,
                    GError **error);

void e_gdbus_book_drain_notify (EGdbusBook *object);

const GDBusInterfaceInfo *e_gdbus_book_interface_info (void) G_GNUC_CONST;

struct _EGdbusBookIface
{
  GTypeInterface parent_iface;

  /* Signal handlers for receiving D-Bus signals: */
  void (*writable) (
        EGdbusBook *object,
        gboolean arg_value);
  void (*connection) (
        EGdbusBook *object,
        gboolean arg_connected);
  void (*auth_required) (
        EGdbusBook *object);

  /* Signal handlers for handling D-Bus method calls: */
  gboolean (*handle_open) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        gboolean in_only_if_exists);
  gboolean (*handle_remove) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);
  gboolean (*handle_get_contact) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *in_uid);
  gboolean (*handle_get_contact_list) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *in_query);
  gboolean (*handle_authenticate_user) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *in_user,
        const gchar *in_passwd,
        const gchar *in_auth_method);
  gboolean (*handle_add_contact) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *in_vcard);
  gboolean (*handle_remove_contacts) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar * const *in_list);
  gboolean (*handle_modify_contact) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *in_vcard);
  gboolean (*handle_get_static_capabilities) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);
  gboolean (*handle_get_required_fields) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);
  gboolean (*handle_get_supported_fields) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);
  gboolean (*handle_get_supported_auth_methods) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);
  gboolean (*handle_get_book_view) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *in_query,
        guint in_max_results);
  gboolean (*handle_get_changes) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *in_change_id);
  gboolean (*handle_cancel_operation) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);
  gboolean (*handle_close) (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);
};

/* C Bindings for properties */

/* D-Bus Methods */
void e_gdbus_book_call_open (
        EGdbusBook *proxy,
        gboolean in_only_if_exists,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_open_finish (
        EGdbusBook *proxy,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_open_sync (
        EGdbusBook *proxy,
        gboolean in_only_if_exists,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_remove (
        EGdbusBook *proxy,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_remove_finish (
        EGdbusBook *proxy,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_remove_sync (
        EGdbusBook *proxy,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_get_contact (
        EGdbusBook *proxy,
        const gchar *in_uid,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_get_contact_finish (
        EGdbusBook *proxy,
        gchar **out_vcard,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_get_contact_sync (
        EGdbusBook *proxy,
        const gchar *in_uid,
        gchar **out_vcard,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_get_contact_list (
        EGdbusBook *proxy,
        const gchar *in_query,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_get_contact_list_finish (
        EGdbusBook *proxy,
        gchar ***out_vcards,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_get_contact_list_sync (
        EGdbusBook *proxy,
        const gchar *in_query,
        gchar ***out_vcards,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_authenticate_user (
        EGdbusBook *proxy,
        const gchar *in_user,
        const gchar *in_passwd,
        const gchar *in_auth_method,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_authenticate_user_finish (
        EGdbusBook *proxy,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_authenticate_user_sync (
        EGdbusBook *proxy,
        const gchar *in_user,
        const gchar *in_passwd,
        const gchar *in_auth_method,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_add_contact (
        EGdbusBook *proxy,
        const gchar *in_vcard,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_add_contact_finish (
        EGdbusBook *proxy,
        gchar **out_uid,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_add_contact_sync (
        EGdbusBook *proxy,
        const gchar *in_vcard,
        gchar **out_uid,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_remove_contacts (
        EGdbusBook *proxy,
        const gchar * const *in_list,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_remove_contacts_finish (
        EGdbusBook *proxy,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_remove_contacts_sync (
        EGdbusBook *proxy,
        const gchar * const *in_list,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_modify_contact (
        EGdbusBook *proxy,
        const gchar *in_vcard,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_modify_contact_finish (
        EGdbusBook *proxy,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_modify_contact_sync (
        EGdbusBook *proxy,
        const gchar *in_vcard,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_get_static_capabilities (
        EGdbusBook *proxy,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_get_static_capabilities_finish (
        EGdbusBook *proxy,
        gchar **out_capabilities,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_get_static_capabilities_sync (
        EGdbusBook *proxy,
        gchar **out_capabilities,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_get_required_fields (
        EGdbusBook *proxy,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_get_required_fields_finish (
        EGdbusBook *proxy,
        gchar ***out_fields,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_get_required_fields_sync (
        EGdbusBook *proxy,
        gchar ***out_fields,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_get_supported_fields (
        EGdbusBook *proxy,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_get_supported_fields_finish (
        EGdbusBook *proxy,
        gchar ***out_fields,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_get_supported_fields_sync (
        EGdbusBook *proxy,
        gchar ***out_fields,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_get_supported_auth_methods (
        EGdbusBook *proxy,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_get_supported_auth_methods_finish (
        EGdbusBook *proxy,
        gchar ***out_auth_methods,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_get_supported_auth_methods_sync (
        EGdbusBook *proxy,
        gchar ***out_auth_methods,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_get_book_view (
        EGdbusBook *proxy,
        const gchar *in_query,
        guint in_max_results,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_get_book_view_finish (
        EGdbusBook *proxy,
        gchar **out_view,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_get_book_view_sync (
        EGdbusBook *proxy,
        const gchar *in_query,
        guint in_max_results,
        gchar **out_view,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_get_changes (
        EGdbusBook *proxy,
        const gchar *in_change_id,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_get_changes_finish (
        EGdbusBook *proxy,
        GVariant **out_changes,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_get_changes_sync (
        EGdbusBook *proxy,
        const gchar *in_change_id,
        GVariant **out_changes,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_cancel_operation (
        EGdbusBook *proxy,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_cancel_operation_finish (
        EGdbusBook *proxy,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_cancel_operation_sync (
        EGdbusBook *proxy,
        GCancellable *cancellable,
        GError **error);

void e_gdbus_book_call_close (
        EGdbusBook *proxy,
        GCancellable *cancellable,
        GAsyncReadyCallback callback,
        gpointer user_data);

gboolean e_gdbus_book_call_close_finish (
        EGdbusBook *proxy,
        GAsyncResult *res,
        GError **error);

gboolean e_gdbus_book_call_close_sync (
        EGdbusBook *proxy,
        GCancellable *cancellable,
        GError **error);

/* D-Bus Methods Completion Helpers */
void e_gdbus_book_complete_open (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);

void e_gdbus_book_complete_remove (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);

void e_gdbus_book_complete_get_contact (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *out_vcard);

void e_gdbus_book_complete_get_contact_list (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar * const *out_vcards);

void e_gdbus_book_complete_authenticate_user (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);

void e_gdbus_book_complete_add_contact (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *out_uid);

void e_gdbus_book_complete_remove_contacts (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);

void e_gdbus_book_complete_modify_contact (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);

void e_gdbus_book_complete_get_static_capabilities (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *out_capabilities);

void e_gdbus_book_complete_get_required_fields (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar * const *out_fields);

void e_gdbus_book_complete_get_supported_fields (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar * const *out_fields);

void e_gdbus_book_complete_get_supported_auth_methods (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar * const *out_auth_methods);

void e_gdbus_book_complete_get_book_view (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        const gchar *out_view);

void e_gdbus_book_complete_get_changes (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation,
        GVariant *out_changes);

void e_gdbus_book_complete_cancel_operation (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);

void e_gdbus_book_complete_close (
        EGdbusBook *object,
        GDBusMethodInvocation *invocation);

/* D-Bus Signal Emission Helpers */
void e_gdbus_book_emit_writable (
        EGdbusBook *object,
        gboolean arg_value);

void e_gdbus_book_emit_connection (
        EGdbusBook *object,
        gboolean arg_connected);

void e_gdbus_book_emit_auth_required (
        EGdbusBook *object);

G_END_DECLS

#endif /* __E_GDBUS_E_GDBUS_BOOK_H__ */
