/// import { EventEmitter } from "events"; type Listener = { bivarianceHack(this: unknown, ...args: unknown[]): unknown; }["bivarianceHack"]; export interface EventListenerRegistration { event: string | symbol; listener: Listener; } export interface EventObserver { register(registration: EventListenerRegistration): unknown; observeSync(registration: unknown, action: () => T): T; observeAsync(registration: unknown, action: () => T | Promise): Promise; observeSyncEmission(event: string | symbol, action: () => T): T; observeAsyncEmission(event: string | symbol, action: () => Promise): Promise; error(stage: string, error: unknown): void; } export declare class AsyncEmitter extends EventEmitter { private _eventObserver?; private readonly _wrappedListeners; private readonly _onceWrappers; private readonly _asyncDispatch; constructor(observer?: EventObserver); setEventObserver(observer?: EventObserver): this; addListener(event: string | symbol, listener: Listener): this; on(event: string | symbol, listener: Listener): this; once(event: string | symbol, listener: Listener): this; prependListener(event: string | symbol, listener: Listener): this; prependOnceListener(event: string | symbol, listener: Listener): this; removeListener(event: string | symbol, listener: Listener): this; off(event: string | symbol, listener: Listener): this; listeners(event: string | symbol): Listener[]; rawListeners(event: string | symbol): Listener[]; emit(event: string | symbol, ...args: unknown[]): boolean; emitAndWait(event: string | symbol, ...args: unknown[]): Promise; private _wrapListener; private _resolveWrapped; private _unwrap; private _observeSyncSafely; private _observeAsyncSafely; private _reportObserverError; } export {};