import { EventListener, TypedEventTarget } from '../types';
export declare class EventEmitter<T extends Record<string, unknown> = Record<string, unknown>> implements TypedEventTarget<T> {
    private readonly listeners;
    private readonly onceListeners;
    addEventListener<K extends keyof T>(type: K, listener: EventListener<T[K]>, options?: boolean | AddEventListenerOptions): void;
    removeEventListener<K extends keyof T>(type: K, listener: EventListener<T[K]>): void;
    dispatchEvent<K extends keyof T>(type: K, event: T[K]): boolean;
    on<K extends keyof T>(type: K, listener: EventListener<T[K]>): void;
    off<K extends keyof T>(type: K, listener: EventListener<T[K]>): void;
    once<K extends keyof T>(type: K, listener: EventListener<T[K]>): void;
    emit<K extends keyof T>(type: K, event: T[K]): boolean;
    listenerCount<K extends keyof T>(type: K): number;
    hasListeners<K extends keyof T>(type: K): boolean;
    removeAllListeners<K extends keyof T>(type?: K): void;
    eventNames(): Array<keyof T>;
}
//# sourceMappingURL=EventEmitter.d.ts.map