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> { on(event: K, handler: (payload: T[K]) => void): Disposable; once( event: K, handler: (payload: T[K]) => void, ): Disposable; emit(event: K, payload: T[K]): boolean; off(event: K, handler?: (payload: T[K]) => void): void; removeAllListeners(event?: K): void; }