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


#ifndef __FOLKS_FOLKS_EDS_H__
#define __FOLKS_FOLKS_EDS_H__

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

G_BEGIN_DECLS


#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;

#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;

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

struct _EdsfPersonaClass {
	FolksPersonaClass parent_class;
};

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

struct _EdsfPersonaStoreClass {
	FolksPersonaStoreClass parent_class;
};


GType edsf_persona_get_type (void) G_GNUC_CONST;
#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);
GType edsf_persona_store_get_type (void) G_GNUC_CONST;
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);
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);
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);

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
