#ifdef _ALPHA_FUSE_
#ifndef _M_FUSE_
#define _M_FUSE_

#define CALLSERVICE_NOTFOUND      ((int)0x80000000)
#define MAXMODULELABELLENGTH 64
typedef int (*MIRANDAHOOK)(WPARAM, LPARAM);
typedef INT_PTR (*MIRANDASERVICE)(WPARAM, LPARAM);

#define FUSE_INIT	0			// core started, Param = **FUSE_LINK
#define FUSE_DEINIT 1			// core stopped
#define FUSE_DEFMOD	3			// LoadDefaultModules() return code, Param = *int
#define FUSE_DEATH  4			// DestroyingModularEngine() just got called

typedef struct {
	int cbSize;
	HANDLE (*CreateHookableEvent)(const char *);
	int (*DestroyHookableEvent)(HANDLE);
	int (*NotifyEventHooks)(HANDLE, WPARAM, LPARAM);
	HANDLE (*HookEvent)(const char *, MIRANDAHOOK);
	HANDLE (*HookEventMessage)(const char *, HWND, UINT);
	int (*UnhookEvent)(HANDLE);
	HANDLE (*CreateServiceFunction)(const char *, MIRANDASERVICE);
	HANDLE (*CreateTransientServiceFunction)(const char *, MIRANDASERVICE);
	int (*DestroyServiceFunction)(HANDLE);
	int (*CallService)(const char *, WPARAM, LPARAM);
	int (*ServiceExists)(const char *);		  //v0.1.0.1+
	int (*CallServiceSync)(const char*, WPARAM, LPARAM); //v0.1.2.2+
} FUSE_LINK;

#endif
#endif