export type EventMap = Record; type EventKey = Extract; type Listener = (...args: Args) => void; export declare class EventEmitter { private _listeners; private _anyListeners; /** * Register an event listener for a specific event. */ on>(event: K, listener: Listener<[...PrefixArgs, ...Events[K]]>): void; on(event: string, listener: Listener): void; /** * Register an event listener for a specific event that will only be called once. */ once>(event: K, listener: Listener<[...PrefixArgs, ...Events[K]]>): void; once(event: string, listener: Listener): void; /** * Register an event listener at the beginning of the listeners array. */ prependListener>(event: K, listener: Listener<[...PrefixArgs, ...Events[K]]>): void; prependListener(event: string, listener: Listener): void; /** * Register an event listener at the beginning that will only be called once. */ prependOnceListener>(event: K, listener: Listener<[...PrefixArgs, ...Events[K]]>): void; prependOnceListener(event: string, listener: Listener): void; /** * Unregister an event listener for a specific event. * @param event - The name of the event to stop listening to. * @param listener - The callback function to remove. */ off>(event: K, listener: Listener<[...PrefixArgs, ...Events[K]]>): void; off(event: string, listener: Listener): void; /** * Register a listener for any event. * @param listener - The callback function to invoke for any event. */ onAny>(listener: Listener<[...PrefixArgs, event: K, ...args: Events[K]]>): void; onAny(listener: Listener<[...PrefixArgs, event: string, ...args: any[]]>): void; protected dispatch(event: string, eventArgs: any[], prefixArgs?: any[]): void; /** * Emit an event, invoking all registered listeners for the event and any general listeners. */ emit>(event: K, ...args: Events[K]): void; emit(event: string, ...args: any[]): void; /** * Unregister a listener for any event. */ offAny>(listener: Listener<[...PrefixArgs, event: K, ...args: Events[K]]>): void; offAny(listener: Listener<[...PrefixArgs, event: string, ...args: any[]]>): void; /** * Remove all listeners for a specific event or all events. */ removeAllListeners>(event?: K | string): void; /** * Get the number of listeners for a specific event. */ listenerCount>(event: K | string): number; /** * Get all event names that have listeners. */ eventNames(): string[]; /** * Get all listeners for a specific event. */ listeners>(event: K): Listener<[...PrefixArgs, ...Events[K]]>[]; listeners(event: string): Listener[]; /** * Get all raw listeners for a specific event (including once wrappers). */ rawListeners>(event: K): Listener<[...PrefixArgs, ...Events[K]]>[]; rawListeners(event: string): Listener[]; } export {};