UNPKG

@firesystem/core

Version:

Virtual File System core interfaces and types

27 lines (24 loc) 983 B
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; }