@firesystem/core
Version:
Virtual File System core interfaces and types
27 lines (24 loc) • 983 B
text/typescript
import type { Disposable } from "../types/Common";
/**
* Basic event emitter interface for reactive file systems
*/
export interface IEventEmitter {
on(event: string | symbol, handler: (...args: any[]) => void): Disposable;
once(event: string | symbol, handler: (...args: any[]) => void): Disposable;
emit(event: string | symbol, ...args: any[]): boolean;
off(event: string | symbol, handler?: (...args: any[]) => void): void;
removeAllListeners(event?: string | symbol): void;
}
/**
* Type-safe event emitter interface
*/
export interface ITypedEventEmitter<T extends Record<string, any>> {
on<K extends keyof T>(event: K, handler: (payload: T[K]) => void): Disposable;
once<K extends keyof T>(
event: K,
handler: (payload: T[K]) => void,
): Disposable;
emit<K extends keyof T>(event: K, payload: T[K]): boolean;
off<K extends keyof T>(event: K, handler?: (payload: T[K]) => void): void;
removeAllListeners<K extends keyof T>(event?: K): void;
}