///
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 {};