UNPKG

vnite-plugin-sdk

Version:
185 lines 5.08 kB
export interface IEventBus { emit<T extends EventType>(eventType: T, data: EventData<T>, options: { source: string; correlationId?: string; }): boolean; on<T extends EventType>(eventType: T, handler: (data: EnhancedEventData<T>) => void | Promise<void>): () => void; once<T extends EventType>(eventType: T, handler: (data: EnhancedEventData<T>) => void | Promise<void>): () => void; off<T extends EventType>(eventType: T, handler: (data: EnhancedEventData<T>) => void | Promise<void>): void; waitFor<T extends EventType>(eventType: T, timeout?: number, condition?: (data: EnhancedEventData<T>) => boolean): Promise<EnhancedEventData<T>>; emitBatch<T extends EventType>(events: Array<{ eventType: T; data: EventData<T>; options?: { source: string; correlationId?: string; }; }>): void; queryHistory(options?: EventHistoryQuery): EventHistoryEntry[]; getTotalEvents(): number; getEventsByType(): Record<string, number>; getRecentEvents(limit?: number): EventHistoryEntry[]; clearHistory(): void; exportHistory(): EventHistoryEntry[]; getHistoryStats(): { totalEvents: number; uniqueEventTypes: number; oldestEvent?: EventHistoryEntry; newestEvent?: EventHistoryEntry; averageEventsPerMinute: number; }; } export interface EventHistoryEntry { eventType: EventType; data: EnhancedEventData<EventType>; timestamp: number; id: string; } export interface EventHistoryQuery { eventType?: EventType; limit?: number; offset?: number; fromTimestamp?: number; toTimestamp?: number; source?: string; correlationId?: string; } export interface EventMetadata { id: string; timestamp: number; source: string; correlationId?: string; } export interface AppEvents { 'app:ready': undefined; 'game:added': { gameId: string; name: string; dataSource?: string; metadata?: Record<string, any>; }; 'game:launched': { gameId: string; launchMode?: string; launchConfig?: Record<string, any>; }; 'game:stopped': { gameId: string; duration: number; playtime?: number; }; 'game:deleted': { gameId: string; name: string; }; 'game:save-created': { gameId: string; saveId: string; }; 'game:save-restored': { gameId: string; saveId: string; }; 'game:save-deleted': { gameId: string; saveId: string; }; 'game:memory-created': { gameId: string; memoryId: string; }; 'game:memory-deleted': { gameId: string; memoryId: string; }; 'game:memory-cover-updated': { gameId: string; memoryId: string; }; 'theme:preset-changed': { preset: string; }; 'plugin:enabled': { pluginId: string; }; 'plugin:disabled': { pluginId: string; }; 'plugin:installed': { pluginId: string; activate: boolean; }; 'plugin:uninstalled': { pluginId: string; removeData: boolean; }; 'scanner:started': { scannerId: string; scannerPath: string; totalScanners?: number; }; 'scanner:completed': { scannerId: string; gamesAdded: number; duration: number; failedFolders: number; totalProcessed: number; }; 'scanner:folder-fixed': { scannerId: string; folderPath: string; gameId: string; }; 'scanner:folder-ignored': { scannerId: string; folderPath: string; }; 'language:changed': { newLanguage: string; }; 'plugin:loaded': { pluginId: string; pluginName: string; version: string; loadTime: number; }; 'plugin:unloaded': { pluginId: string; pluginName: string; reason: 'user' | 'error' | 'update'; }; 'plugin:error': { pluginId: string; error: string; context: string; canRecover: boolean; }; 'db:backup-completed': { targetPath: string; }; 'db:restore-completed': { sourcePath: string; }; 'tray:config-updated': undefined; } export type EventHandler<T extends EventType> = (data: EnhancedEventData<T>) => void | Promise<void>; export type EventUnsubscribe = () => void; export interface EventHistoryEntry { eventType: EventType; data: EnhancedEventData<EventType>; timestamp: number; id: string; } export interface EventHistoryQuery { eventType?: EventType; limit?: number; offset?: number; fromTimestamp?: number; toTimestamp?: number; source?: string; correlationId?: string; } export type EventType = keyof AppEvents; export type EventData<T extends EventType> = AppEvents[T]; export type EnhancedEventData<T extends EventType> = AppEvents[T] & EventMetadata; //# sourceMappingURL=event.d.ts.map