type InternalGetAsyncEventEmitterEventParameters, EventName extends PropertyKey, Events extends Record = EE extends AsyncEventEmitter ? Events : Record> = EventName extends keyof AsyncEventEmitterPredefinedEvents ? EventName extends keyof Events ? AsyncEventEmitterPredefinedEvents[EventName] | (Events & Record)[EventName] : AsyncEventEmitterPredefinedEvents[EventName] : EventName extends keyof Events ? (Events & Record)[EventName] : any[]; type GetAsyncEventEmitterEventParameters, EventName extends PropertyKey | keyof AsyncEventEmitterPredefinedEvents> = InternalGetAsyncEventEmitterEventParameters; type InternalAsyncEventEmitterInternalListenerForEvent, EventName extends PropertyKey, Events extends Record = EE extends AsyncEventEmitter ? Events : Record> = EventName extends keyof AsyncEventEmitterPredefinedEvents ? EventName extends keyof Events ? Listener)[EventName]> : Listener : EventName extends keyof Events ? Listener<(Events & Record)[EventName]> : Listener; type AsyncEventEmitterInternalListenerForEvent, EventName extends PropertyKey | keyof AsyncEventEmitterPredefinedEvents> = InternalAsyncEventEmitterInternalListenerForEvent; type AsyncEventEmitterListenerForEvent, EventName extends PropertyKey | keyof AsyncEventEmitterPredefinedEvents> = Exclude['listener'], undefined>; declare const brandSymbol: unique symbol; declare class AsyncEventEmitter { /** * This field doesn't actually exist, it's just a way to make TS properly infer the events from classes that extend AsyncEventEmitter */ protected readonly [brandSymbol]: Events; private _events; private _eventCount; private _maxListeners; private _internalPromiseMap; private _wrapperId; addListener(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; addListener(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; on(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; on(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; once(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; once(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; removeListener(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; removeListener(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; off(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; off(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; removeAllListeners(event: K): this; removeAllListeners(event?: K | undefined): this; removeAllListeners(event: string | symbol): this; removeAllListeners(event?: string | symbol | undefined): this; setMaxListeners(n: number): this; getMaxListeners(): number; listeners(eventName: K): AsyncEventEmitterListenerForEvent, K>[]; listeners(eventName: K): AsyncEventEmitterListenerForEvent, K>[]; rawListeners(eventName: K): AsyncEventEmitterInternalListenerForEvent, K>[]; rawListeners(eventName: K): AsyncEventEmitterInternalListenerForEvent, K>[]; emit(eventName: K, ...args: GetAsyncEventEmitterEventParameters, K>): boolean; emit(eventName: K, ...args: GetAsyncEventEmitterEventParameters, K>): boolean; listenerCount(eventName: K): number; listenerCount(eventName: string | symbol): number; prependListener(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; prependListener(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; prependOnceListener(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; prependOnceListener(eventName: K, listener: AsyncEventEmitterListenerForEvent, K>): this; eventNames(): (string | symbol)[] & (keyof AsyncEventEmitterPredefinedEvents)[] & (keyof Events)[]; waitForAllListenersToComplete(): Promise; private _addListener; private _wrapListener; static listenerCount(emitter: AsyncEventEmitter, eventName: EventName | keyof AsyncEventEmitterPredefinedEvents): number; static listenerCount(emitter: AsyncEventEmitter, eventName: string | symbol): number; static once(emitter: AsyncEventEmitter, eventName: EventName, options?: AbortableMethods): Promise, EventName>>; static once(emitter: AsyncEventEmitter, eventName: string | symbol, options?: AbortableMethods): Promise; static on(emitter: AsyncEventEmitter, eventName: EventName, options?: AbortableMethods): AsyncGenerator, EventName>, void>; static on(emitter: AsyncEventEmitter, eventName: string | symbol, options?: AbortableMethods): AsyncGenerator; } interface AsyncEventEmitterPredefinedEvents { newListener: [eventName: string | symbol, listener: (...args: any[]) => void]; removeListener: [eventName: string | symbol, listener: (...args: any[]) => void]; } interface Listener { (...args: Args): void; listener?: (...args: Args) => void; } interface AbortableMethods { signal?: AbortSignal; } interface AbortErrorOptions { cause?: unknown; } declare class AbortError extends Error { readonly code = "ABORT_ERR"; readonly name = "AbortError"; constructor(message?: string, options?: AbortErrorOptions | undefined); } export { AbortError, type AbortErrorOptions, type AbortableMethods, AsyncEventEmitter, type AsyncEventEmitterInternalListenerForEvent, type AsyncEventEmitterListenerForEvent, type AsyncEventEmitterPredefinedEvents, type GetAsyncEventEmitterEventParameters, type Listener };