/* zeitgeist-engine.h generated by valac 0.56.19, the Vala compiler, do not modify */

#ifndef __ZEITGEIST_ENGINE_H__
#define __ZEITGEIST_ENGINE_H__

#include "zeitgeist-internal.h"
#include <glib-object.h>
#include "zeitgeist-datamodel.h"
#include <stdlib.h>
#include <string.h>
#include <glib.h>

G_BEGIN_DECLS

#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define ZEITGEIST_TYPE_ENGINE (zeitgeist_engine_get_type ())
#define ZEITGEIST_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ZEITGEIST_TYPE_ENGINE, ZeitgeistEngine))
#define ZEITGEIST_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ZEITGEIST_TYPE_ENGINE, ZeitgeistEngineClass))
#define ZEITGEIST_IS_ENGINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ZEITGEIST_TYPE_ENGINE))
#define ZEITGEIST_IS_ENGINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ZEITGEIST_TYPE_ENGINE))
#define ZEITGEIST_ENGINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ZEITGEIST_TYPE_ENGINE, ZeitgeistEngineClass))

typedef struct _ZeitgeistEngine ZeitgeistEngine;
typedef struct _ZeitgeistEngineClass ZeitgeistEngineClass;
typedef struct _ZeitgeistEnginePrivate ZeitgeistEnginePrivate;

#define ZEITGEIST_TYPE_EXTENSION_STORE (zeitgeist_extension_store_get_type ())
#define ZEITGEIST_EXTENSION_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ZEITGEIST_TYPE_EXTENSION_STORE, ZeitgeistExtensionStore))
#define ZEITGEIST_EXTENSION_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ZEITGEIST_TYPE_EXTENSION_STORE, ZeitgeistExtensionStoreClass))
#define ZEITGEIST_IS_EXTENSION_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ZEITGEIST_TYPE_EXTENSION_STORE))
#define ZEITGEIST_IS_EXTENSION_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ZEITGEIST_TYPE_EXTENSION_STORE))
#define ZEITGEIST_EXTENSION_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ZEITGEIST_TYPE_EXTENSION_STORE, ZeitgeistExtensionStoreClass))

typedef struct _ZeitgeistExtensionStore ZeitgeistExtensionStore;
typedef struct _ZeitgeistExtensionStoreClass ZeitgeistExtensionStoreClass;
typedef GType (*ZeitgeistRegisterExtensionFunc) (GTypeModule* module);

#define ZEITGEIST_TYPE_EXTENSION (zeitgeist_extension_get_type ())
#define ZEITGEIST_EXTENSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ZEITGEIST_TYPE_EXTENSION, ZeitgeistExtension))
#define ZEITGEIST_EXTENSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ZEITGEIST_TYPE_EXTENSION, ZeitgeistExtensionClass))
#define ZEITGEIST_IS_EXTENSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ZEITGEIST_TYPE_EXTENSION))
#define ZEITGEIST_IS_EXTENSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ZEITGEIST_TYPE_EXTENSION))
#define ZEITGEIST_EXTENSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ZEITGEIST_TYPE_EXTENSION, ZeitgeistExtensionClass))

typedef struct _ZeitgeistExtension ZeitgeistExtension;
typedef struct _ZeitgeistExtensionClass ZeitgeistExtensionClass;
typedef struct _ZeitgeistExtensionPrivate ZeitgeistExtensionPrivate;

#define ZEITGEIST_TYPE_EXTENSION_LOADER (zeitgeist_extension_loader_get_type ())
#define ZEITGEIST_EXTENSION_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ZEITGEIST_TYPE_EXTENSION_LOADER, ZeitgeistExtensionLoader))
#define ZEITGEIST_EXTENSION_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ZEITGEIST_TYPE_EXTENSION_LOADER, ZeitgeistExtensionLoaderClass))
#define ZEITGEIST_IS_EXTENSION_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ZEITGEIST_TYPE_EXTENSION_LOADER))
#define ZEITGEIST_IS_EXTENSION_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ZEITGEIST_TYPE_EXTENSION_LOADER))
#define ZEITGEIST_EXTENSION_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ZEITGEIST_TYPE_EXTENSION_LOADER, ZeitgeistExtensionLoaderClass))

typedef struct _ZeitgeistExtensionLoader ZeitgeistExtensionLoader;
typedef struct _ZeitgeistExtensionLoaderClass ZeitgeistExtensionLoaderClass;
typedef struct _ZeitgeistExtensionLoaderPrivate ZeitgeistExtensionLoaderPrivate;

#define ZEITGEIST_TYPE_MODULE_LOADER (zeitgeist_module_loader_get_type ())
#define ZEITGEIST_MODULE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ZEITGEIST_TYPE_MODULE_LOADER, ZeitgeistModuleLoader))
#define ZEITGEIST_MODULE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ZEITGEIST_TYPE_MODULE_LOADER, ZeitgeistModuleLoaderClass))
#define ZEITGEIST_IS_MODULE_LOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ZEITGEIST_TYPE_MODULE_LOADER))
#define ZEITGEIST_IS_MODULE_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ZEITGEIST_TYPE_MODULE_LOADER))
#define ZEITGEIST_MODULE_LOADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ZEITGEIST_TYPE_MODULE_LOADER, ZeitgeistModuleLoaderClass))

typedef struct _ZeitgeistModuleLoader ZeitgeistModuleLoader;
typedef struct _ZeitgeistModuleLoaderClass ZeitgeistModuleLoaderClass;
typedef struct _ZeitgeistModuleLoaderPrivate ZeitgeistModuleLoaderPrivate;

#define ZEITGEIST_TYPE_BUILTIN_EXTENSION (zeitgeist_builtin_extension_get_type ())
#define ZEITGEIST_BUILTIN_EXTENSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ZEITGEIST_TYPE_BUILTIN_EXTENSION, ZeitgeistBuiltinExtension))
#define ZEITGEIST_BUILTIN_EXTENSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ZEITGEIST_TYPE_BUILTIN_EXTENSION, ZeitgeistBuiltinExtensionClass))
#define ZEITGEIST_IS_BUILTIN_EXTENSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ZEITGEIST_TYPE_BUILTIN_EXTENSION))
#define ZEITGEIST_IS_BUILTIN_EXTENSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ZEITGEIST_TYPE_BUILTIN_EXTENSION))
#define ZEITGEIST_BUILTIN_EXTENSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ZEITGEIST_TYPE_BUILTIN_EXTENSION, ZeitgeistBuiltinExtensionClass))

typedef struct _ZeitgeistBuiltinExtension ZeitgeistBuiltinExtension;
typedef struct _ZeitgeistBuiltinExtensionClass ZeitgeistBuiltinExtensionClass;
typedef struct _ZeitgeistBuiltinExtensionPrivate ZeitgeistBuiltinExtensionPrivate;

#define ZEITGEIST_TYPE_EXTENSION_COLLECTION (zeitgeist_extension_collection_get_type ())
#define ZEITGEIST_EXTENSION_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ZEITGEIST_TYPE_EXTENSION_COLLECTION, ZeitgeistExtensionCollection))
#define ZEITGEIST_EXTENSION_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ZEITGEIST_TYPE_EXTENSION_COLLECTION, ZeitgeistExtensionCollectionClass))
#define ZEITGEIST_IS_EXTENSION_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ZEITGEIST_TYPE_EXTENSION_COLLECTION))
#define ZEITGEIST_IS_EXTENSION_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ZEITGEIST_TYPE_EXTENSION_COLLECTION))
#define ZEITGEIST_EXTENSION_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ZEITGEIST_TYPE_EXTENSION_COLLECTION, ZeitgeistExtensionCollectionClass))

typedef struct _ZeitgeistExtensionCollection ZeitgeistExtensionCollection;
typedef struct _ZeitgeistExtensionCollectionClass ZeitgeistExtensionCollectionClass;
typedef struct _ZeitgeistExtensionCollectionPrivate ZeitgeistExtensionCollectionPrivate;
typedef struct _ZeitgeistExtensionStorePrivate ZeitgeistExtensionStorePrivate;

#define ZEITGEIST_TYPE_MONITOR_MANAGER (zeitgeist_monitor_manager_get_type ())
#define ZEITGEIST_MONITOR_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), ZEITGEIST_TYPE_MONITOR_MANAGER, ZeitgeistMonitorManager))
#define ZEITGEIST_MONITOR_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), ZEITGEIST_TYPE_MONITOR_MANAGER, ZeitgeistMonitorManagerClass))
#define ZEITGEIST_IS_MONITOR_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ZEITGEIST_TYPE_MONITOR_MANAGER))
#define ZEITGEIST_IS_MONITOR_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), ZEITGEIST_TYPE_MONITOR_MANAGER))
#define ZEITGEIST_MONITOR_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), ZEITGEIST_TYPE_MONITOR_MANAGER, ZeitgeistMonitorManagerClass))

typedef struct _ZeitgeistMonitorManager ZeitgeistMonitorManager;
typedef struct _ZeitgeistMonitorManagerClass ZeitgeistMonitorManagerClass;
typedef struct _ZeitgeistMonitorManagerPrivate ZeitgeistMonitorManagerPrivate;

struct _ZeitgeistEngine {
	ZeitgeistDbReader parent_instance;
	ZeitgeistEnginePrivate * priv;
	ZeitgeistExtensionStore* extension_store;
};

struct _ZeitgeistEngineClass {
	ZeitgeistDbReaderClass parent_class;
};

struct _ZeitgeistExtension {
	GObject parent_instance;
	ZeitgeistExtensionPrivate * priv;
};

struct _ZeitgeistExtensionClass {
	GObjectClass parent_class;
	void (*unload) (ZeitgeistExtension* self);
	void (*pre_insert_events) (ZeitgeistExtension* self, GPtrArray* events, const char* sender);
	void (*post_insert_events) (ZeitgeistExtension* self, GPtrArray* events, const char* sender);
	guint32* (*pre_delete_events) (ZeitgeistExtension* self, guint32* ids, gint ids_length1, const char* sender, gint* result_length1);
	void (*post_delete_events) (ZeitgeistExtension* self, guint32* ids, gint ids_length1, const char* sender);
};

struct _ZeitgeistExtensionLoader {
	GTypeModule parent_instance;
	ZeitgeistExtensionLoaderPrivate * priv;
};

struct _ZeitgeistExtensionLoaderClass {
	GTypeModuleClass parent_class;
	ZeitgeistExtension* (*create_instance) (ZeitgeistExtensionLoader* self, ZeitgeistEngine* engine);
};

struct _ZeitgeistModuleLoader {
	ZeitgeistExtensionLoader parent_instance;
	ZeitgeistModuleLoaderPrivate * priv;
};

struct _ZeitgeistModuleLoaderClass {
	ZeitgeistExtensionLoaderClass parent_class;
};

struct _ZeitgeistBuiltinExtension {
	ZeitgeistExtensionLoader parent_instance;
	ZeitgeistBuiltinExtensionPrivate * priv;
};

struct _ZeitgeistBuiltinExtensionClass {
	ZeitgeistExtensionLoaderClass parent_class;
};

struct _ZeitgeistExtensionCollection {
	GObject parent_instance;
	ZeitgeistExtensionCollectionPrivate * priv;
};

struct _ZeitgeistExtensionCollectionClass {
	GObjectClass parent_class;
};

struct _ZeitgeistExtensionStore {
	GObject parent_instance;
	ZeitgeistExtensionStorePrivate * priv;
};

struct _ZeitgeistExtensionStoreClass {
	GObjectClass parent_class;
};

struct _ZeitgeistMonitorManager {
	GObject parent_instance;
	ZeitgeistMonitorManagerPrivate * priv;
};

struct _ZeitgeistMonitorManagerClass {
	GObjectClass parent_class;
};

VALA_EXTERN GType zeitgeist_engine_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ZeitgeistEngine, g_object_unref)
VALA_EXTERN GType zeitgeist_extension_store_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ZeitgeistExtensionStore, g_object_unref)
VALA_EXTERN ZeitgeistEngine* zeitgeist_engine_new (GError** error);
VALA_EXTERN ZeitgeistEngine* zeitgeist_engine_construct (GType object_type,
                                             GError** error);
VALA_EXTERN ZeitgeistEngine* zeitgeist_engine_new_with_builtins (ZeitgeistRegisterExtensionFunc* builtins,
                                                     gint builtins_length1,
                                                     GError** error);
VALA_EXTERN ZeitgeistEngine* zeitgeist_engine_construct_with_builtins (GType object_type,
                                                           ZeitgeistRegisterExtensionFunc* builtins,
                                                           gint builtins_length1,
                                                           GError** error);
VALA_EXTERN gchar** zeitgeist_engine_get_extension_names (ZeitgeistEngine* self,
                                              gint* result_length1);
VALA_EXTERN guint32* zeitgeist_engine_insert_events (ZeitgeistEngine* self,
                                         GPtrArray* events,
                                         const char* sender,
                                         gint* result_length1,
                                         GError** error);
VALA_EXTERN ZeitgeistTimeRange* zeitgeist_engine_delete_events (ZeitgeistEngine* self,
                                                    guint32* event_ids,
                                                    gint event_ids_length1,
                                                    const char* sender,
                                                    GError** error);
VALA_EXTERN GType zeitgeist_extension_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ZeitgeistExtension, g_object_unref)
VALA_EXTERN void zeitgeist_extension_unload (ZeitgeistExtension* self);
VALA_EXTERN void zeitgeist_extension_pre_insert_events (ZeitgeistExtension* self,
                                            GPtrArray* events,
                                            const char* sender);
VALA_EXTERN void zeitgeist_extension_post_insert_events (ZeitgeistExtension* self,
                                             GPtrArray* events,
                                             const char* sender);
VALA_EXTERN guint32* zeitgeist_extension_pre_delete_events (ZeitgeistExtension* self,
                                                guint32* ids,
                                                gint ids_length1,
                                                const char* sender,
                                                gint* result_length1);
VALA_EXTERN void zeitgeist_extension_post_delete_events (ZeitgeistExtension* self,
                                             guint32* ids,
                                             gint ids_length1,
                                             const char* sender);
VALA_EXTERN void zeitgeist_extension_store_config (ZeitgeistExtension* self,
                                       const gchar* key,
                                       GVariant* data);
VALA_EXTERN GVariant* zeitgeist_extension_retrieve_config (ZeitgeistExtension* self,
                                               const gchar* key,
                                               const gchar* format);
VALA_EXTERN ZeitgeistExtension* zeitgeist_extension_construct (GType object_type);
VALA_EXTERN ZeitgeistEngine* zeitgeist_extension_get_engine (ZeitgeistExtension* self);
VALA_EXTERN void zeitgeist_extension_set_engine (ZeitgeistExtension* self,
                                     ZeitgeistEngine* value);
VALA_EXTERN GType zeitgeist_extension_loader_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ZeitgeistExtensionLoader, g_object_unref)
VALA_EXTERN ZeitgeistExtension* zeitgeist_extension_loader_create_instance (ZeitgeistExtensionLoader* self,
                                                                ZeitgeistEngine* engine);
VALA_EXTERN ZeitgeistExtensionLoader* zeitgeist_extension_loader_construct (GType object_type);
VALA_EXTERN GType zeitgeist_extension_loader_get_extension_type (ZeitgeistExtensionLoader* self);
VALA_EXTERN void zeitgeist_extension_loader_set_extension_type (ZeitgeistExtensionLoader* self,
                                                    GType value);
VALA_EXTERN GType zeitgeist_module_loader_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ZeitgeistModuleLoader, g_object_unref)
VALA_EXTERN ZeitgeistModuleLoader* zeitgeist_module_loader_new (const gchar* module_path);
VALA_EXTERN ZeitgeistModuleLoader* zeitgeist_module_loader_construct (GType object_type,
                                                          const gchar* module_path);
VALA_EXTERN const gchar* zeitgeist_module_loader_get_module_path (ZeitgeistModuleLoader* self);
VALA_EXTERN GType zeitgeist_builtin_extension_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ZeitgeistBuiltinExtension, g_object_unref)
VALA_EXTERN ZeitgeistBuiltinExtension* zeitgeist_builtin_extension_new (ZeitgeistRegisterExtensionFunc func);
VALA_EXTERN ZeitgeistBuiltinExtension* zeitgeist_builtin_extension_construct (GType object_type,
                                                                  ZeitgeistRegisterExtensionFunc func);
VALA_EXTERN GType zeitgeist_extension_collection_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ZeitgeistExtensionCollection, g_object_unref)
VALA_EXTERN ZeitgeistExtensionCollection* zeitgeist_extension_collection_new (ZeitgeistEngine* engine,
                                                                  ZeitgeistRegisterExtensionFunc* builtins,
                                                                  gint builtins_length1);
VALA_EXTERN ZeitgeistExtensionCollection* zeitgeist_extension_collection_construct (GType object_type,
                                                                        ZeitgeistEngine* engine,
                                                                        ZeitgeistRegisterExtensionFunc* builtins,
                                                                        gint builtins_length1);
VALA_EXTERN gchar** zeitgeist_extension_collection_get_extension_names (ZeitgeistExtensionCollection* self,
                                                            gint* result_length1);
VALA_EXTERN void zeitgeist_extension_collection_call_pre_insert_events (ZeitgeistExtensionCollection* self,
                                                            GPtrArray* events,
                                                            const char* sender);
VALA_EXTERN void zeitgeist_extension_collection_call_post_insert_events (ZeitgeistExtensionCollection* self,
                                                             GPtrArray* events,
                                                             const char* sender);
VALA_EXTERN guint32* zeitgeist_extension_collection_call_pre_delete_events (ZeitgeistExtensionCollection* self,
                                                                guint32* event_ids,
                                                                gint event_ids_length1,
                                                                const char* sender,
                                                                gint* result_length1);
VALA_EXTERN void zeitgeist_extension_collection_call_post_delete_events (ZeitgeistExtensionCollection* self,
                                                             guint32* event_ids,
                                                             gint event_ids_length1,
                                                             const char* sender);
VALA_EXTERN ZeitgeistEngine* zeitgeist_extension_collection_get_engine (ZeitgeistExtensionCollection* self);
VALA_EXTERN ZeitgeistExtensionStore* zeitgeist_extension_store_new (ZeitgeistEngine* engine);
VALA_EXTERN ZeitgeistExtensionStore* zeitgeist_extension_store_construct (GType object_type,
                                                              ZeitgeistEngine* engine);
VALA_EXTERN void zeitgeist_extension_store_store (ZeitgeistExtensionStore* self,
                                      const gchar* extension,
                                      const gchar* key,
                                      GVariant* data);
VALA_EXTERN GVariant* zeitgeist_extension_store_retrieve (ZeitgeistExtensionStore* self,
                                              const gchar* extension,
                                              const gchar* key,
                                              const GVariantType* format);
VALA_EXTERN void zeitgeist_logging_setup_logging (const gchar* log_level,
                                      const gchar* log_file);
VALA_EXTERN GType zeitgeist_monitor_manager_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ZeitgeistMonitorManager, g_object_unref)
VALA_EXTERN ZeitgeistMonitorManager* zeitgeist_monitor_manager_get_default (void);
VALA_EXTERN void zeitgeist_monitor_manager_install_monitor (ZeitgeistMonitorManager* self,
                                                const char* peer,
                                                const gchar* object_path,
                                                ZeitgeistTimeRange* time_range,
                                                GPtrArray* templates);
VALA_EXTERN void zeitgeist_monitor_manager_remove_monitor (ZeitgeistMonitorManager* self,
                                               const char* peer,
                                               const gchar* object_path);
VALA_EXTERN void zeitgeist_monitor_manager_notify_insert (ZeitgeistMonitorManager* self,
                                              ZeitgeistTimeRange* time_range,
                                              GPtrArray* events);
VALA_EXTERN void zeitgeist_monitor_manager_notify_delete (ZeitgeistMonitorManager* self,
                                              ZeitgeistTimeRange* time_range,
                                              guint32* event_ids,
                                              gint event_ids_length1);

G_END_DECLS

#endif
