/** A handler invoked when an event fires. May return a promise; rejections are caught and logged. */ export type EventHandler = (...args: any[]) => any; /** * A typed event emitter. Handlers may be sync or async; async rejections and * thrown errors are caught and logged rather than propagated. Parameterize with * an event-to-args map for type-safe {@link EventEmitter.on}/{@link EventEmitter.emit}. */ export declare class EventEmitter = Record> { private _handlers; private _pendingTasks; private _closed; /** Register `handler` for `event`. Returns the handler so it can be removed later. */ on(event: K, handler: (...args: TEvents[K]) => any): (...args: TEvents[K]) => any; on(event: string, handler: EventHandler): EventHandler; /** Remove a previously registered `handler` for `event`. */ off(event: K, handler: (...args: TEvents[K]) => any): void; off(event: string, handler: EventHandler): void; /** Register `handler` to fire at most once for the next `event`. Returns the wrapper handler. */ once(event: K, handler: (...args: TEvents[K]) => any): (...args: TEvents[K]) => any; once(event: string, handler: EventHandler): EventHandler; /** * Fire `event`, synchronously invoking every registered handler with `args`. * Handlers added or removed during the call do not affect this emit. Never * throws, and does nothing once the emitter is closed. */ emit(event: K, ...args: TEvents[K]): void; emit(event: string, ...args: any[]): void; private _invoke; /** Number of handlers registered for `event`. */ listenerCount(event: K): number; listenerCount(event: string): number; /** Remove all handlers for `event`, or for every event when `event` is omitted. */ removeAllListeners(event?: K): void; removeAllListeners(event?: string): void; /** * Close the emitter: drop all handlers and stop emitting. Waits up to 2 seconds * for in-flight async handlers to settle before returning. */ closeEmitter(): Promise; /** Whether {@link closeEmitter} has been called. */ get closed(): boolean; private _logError; }