import type { BlazeEventEmitterOption, EmitterListener } from './types';
export declare class BlazeEventEmitter {
    private $maxListeners;
    private $emitter;
    constructor(options?: BlazeEventEmitterOption);
    listenerCount(eventName: string): number;
    get maxListeners(): number;
    set maxListeners(value: number);
    emit(eventName: string, ...values: unknown[]): boolean;
    emitAsync<T, U = T extends Array<infer T> ? T : T>(eventName: string, ...values: unknown[]): Promise<U[]>;
    on(eventName: string, listener: EmitterListener): void;
    off(eventName: string, listener: EmitterListener): void;
    offAll(): void;
    offAll(eventName: string): void;
    eventNames(): string[];
    listeners(eventName: string): EmitterListener[];
    rawListeners(eventName: string): Set<EmitterListener>;
    addListener: (eventName: string, listener: EmitterListener) => void;
    removeListener: (eventName: string, listener: EmitterListener) => void;
    removeAllListeners: {
        (): void;
        (eventName: string): void;
    };
}
