import type { CancelablePromise, ConstructorOptions, EventAndListener, GeneralEventEmitter, ListenToOptions, Listener, OnOptions, OnceOptions, WaitForFilter, WaitForOptions, eventNS } from "eventemitter2"; export interface ListenerFn { (payload: V, ...values: unknown[]): void; } declare class _TypedEventEmitter { constructor(options?: ConstructorOptions); emit(event: N, payload: T[N]): boolean; emitAsync(event: N, payload: T[N]): Promise; addListener(event: N, listener: ListenerFn): this | Listener; on(event: N, listener: ListenerFn, options?: boolean | OnOptions): this | Listener; prependListener(event: N, listener: ListenerFn, options?: boolean | OnOptions): this | Listener; once(event: N, listener: ListenerFn, options?: true | OnOptions): this | Listener; prependOnceListener(event: N, listener: ListenerFn, options?: boolean | OnOptions): this | Listener; many(event: N, timesToListen: number, listener: ListenerFn, options?: boolean | OnOptions): this | Listener; prependMany(event: N, timesToListen: number, listener: ListenerFn, options?: boolean | OnOptions): this | Listener; onAny(listener: EventAndListener): this; prependAny(listener: EventAndListener): this; offAny(listener: ListenerFn): this; removeListener(event: N, listener: ListenerFn): this; off(event: N, listener: ListenerFn): this; removeAllListeners(event?: keyof T | eventNS): this; setMaxListeners(n: number): void; getMaxListeners(): number; eventNames(nsAsArray?: boolean): (keyof T | eventNS)[]; listenerCount(event?: keyof T | eventNS): number; listeners(event?: keyof T | eventNS): ListenerFn[]; listenersAny(): ListenerFn[]; waitFor(event: keyof T | eventNS, timeout?: number): CancelablePromise; waitFor(event: keyof T | eventNS, filter?: WaitForFilter): CancelablePromise; waitFor(event: keyof T | eventNS, options?: WaitForOptions): CancelablePromise; listenTo(target: GeneralEventEmitter, events: keyof T | eventNS, options?: ListenToOptions): this; listenTo(target: GeneralEventEmitter, events: keyof T[], options?: ListenToOptions): this; listenTo(target: GeneralEventEmitter, events: object, options?: ListenToOptions): this; stopListeningTo(target?: GeneralEventEmitter, event?: keyof T | eventNS): boolean; hasListeners(event?: string): boolean; static once = Record>(emitter: _TypedEventEmitter, event: keyof T | eventNS, options?: OnceOptions): CancelablePromise; static defaultMaxListeners: number; } export declare class TypedEventEmitter extends _TypedEventEmitter { constructor(options?: ConstructorOptions); } export {};