/* folks-eds.h generated by valac 0.52.0, the Vala compiler, do not modify */

#ifndef __BACKENDS_EDS_LIB_FOLKS_FOLKS_EDS_H__
#define __BACKENDS_EDS_LIB_FOLKS_FOLKS_EDS_H__

#include "folks/folks.h"
#include <glib-object.h>
#include <gio/gio.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <libedataserver/libedataserver.h>
#include <gee.h>
#include <libebook-contacts/libebook-contacts.h>

G_BEGIN_DECLS

#define EDSF_TYPE_PERSONA_STORE (edsf_persona_store_get_type ())
#define EDSF_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EDSF_TYPE_PERSONA_STORE, EdsfPersonaStore))
#define EDSF_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EDSF_TYPE_PERSONA_STORE, EdsfPersonaStoreClass))
#define EDSF_IS_PERSONA_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EDSF_TYPE_PERSONA_STORE))
#define EDSF_IS_PERSONA_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EDSF_TYPE_PERSONA_STORE))
#define EDSF_PERSONA_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EDSF_TYPE_PERSONA_STORE, EdsfPersonaStoreClass))

typedef struct _EdsfPersonaStore EdsfPersonaStore;
typedef struct _EdsfPersonaStoreClass EdsfPersonaStoreClass;
typedef struct _EdsfPersonaStorePrivate EdsfPersonaStorePrivate;

#define EDSF_TYPE_PERSONA (edsf_persona_get_type ())
#define EDSF_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EDSF_TYPE_PERSONA, EdsfPersona))
#define EDSF_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EDSF_TYPE_PERSONA, EdsfPersonaClass))
#define EDSF_IS_PERSONA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EDSF_TYPE_PERSONA))
#define EDSF_IS_PERSONA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EDSF_TYPE_PERSONA))
#define EDSF_PERSONA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EDSF_TYPE_PERSONA, EdsfPersonaClass))

typedef struct _EdsfPersona EdsfPersona;
typedef struct _EdsfPersonaClass EdsfPersonaClass;
typedef struct _EdsfPersonaPrivate EdsfPersonaPrivate;

struct _EdsfPersonaStore {
	FolksPersonaStore parent_instance;
	EdsfPersonaStorePrivate * priv;
};

struct _EdsfPersonaStoreClass {
	FolksPersonaStoreClass parent_class;
};

struct _EdsfPersona {
	FolksPersona parent_instance;
	EdsfPersonaPrivate * priv;
};

struct _EdsfPersonaClass {
	FolksPersonaClass parent_class;
};

GType edsf_persona_store_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EdsfPersonaStore, g_object_unref)
void edsf_persona_store_create_address_book (const gchar* id,
                                             GAsyncReadyCallback _callback_,
                                             gpointer _user_data_);
void edsf_persona_store_create_address_book_finish (GAsyncResult* _res_,
                                                    GError** error);
void edsf_persona_store_remove_address_book (EdsfPersonaStore* store,
                                             GAsyncReadyCallback _callback_,
                                             gpointer _user_data_);
void edsf_persona_store_remove_address_book_finish (GAsyncResult* _res_,
                                                    GError** error);
EdsfPersonaStore* edsf_persona_store_new (ESource* s) G_GNUC_DEPRECATED ;
EdsfPersonaStore* edsf_persona_store_construct (GType object_type,
                                                ESource* s) G_GNUC_DEPRECATED ;
EdsfPersonaStore* edsf_persona_store_new_with_source_registry (ESourceRegistry* r,
                                                               ESource* s);
EdsfPersonaStore* edsf_persona_store_construct_with_source_registry (GType object_type,
                                                                     ESourceRegistry* r,
                                                                     ESource* s);
ESource* edsf_persona_store_get_source (EdsfPersonaStore* self);
GType edsf_persona_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (EdsfPersona, g_object_unref)
#define EDSF_PERSONA_folks_field_attribute_name "X-FOLKS-FIELD"
#define EDSF_PERSONA_gender_attribute_name "X-GENDER"
#define EDSF_PERSONA_gender_male "M"
#define EDSF_PERSONA_gender_female "F"
void edsf_persona_change_system_groups (EdsfPersona* self,
                                        GeeSet* system_groups,
                                        GAsyncReadyCallback _callback_,
                                        gpointer _user_data_);
void edsf_persona_change_system_groups_finish (EdsfPersona* self,
                                               GAsyncResult* _res_,
                                               GError** error);
void edsf_persona_change_in_google_personal_group (EdsfPersona* self,
                                                   gboolean in_personal,
                                                   GAsyncReadyCallback _callback_,
                                                   gpointer _user_data_);
void edsf_persona_change_in_google_personal_group_finish (EdsfPersona* self,
                                                          GAsyncResult* _res_,
                                                          GError** error);
EdsfPersona* edsf_persona_new (EdsfPersonaStore* store,
                               EContact* contact);
EdsfPersona* edsf_persona_construct (GType object_type,
                                     EdsfPersonaStore* store,
                                     EContact* contact);
EContact* edsf_persona_get_contact (EdsfPersona* self);
const gchar* edsf_persona_get_contact_id (EdsfPersona* self);
GeeSet* edsf_persona_get_system_groups (EdsfPersona* self);
void edsf_persona_set_system_groups (EdsfPersona* self,
                                     GeeSet* value);
gboolean edsf_persona_get_in_google_personal_group (EdsfPersona* self);
void edsf_persona_set_in_google_personal_group (EdsfPersona* self,
                                                gboolean value);

extern const gchar* EDSF_PERSONA_phone_fields[12];
extern const gchar* EDSF_PERSONA_address_fields[3];
extern const gchar* EDSF_PERSONA_email_fields[4];
extern const gchar* EDSF_PERSONA_url_properties[4];

G_END_DECLS

#endif
