import { Dict } from './types/Dict';
import { EE } from './types/interface/EE';
import { Listener } from './types/Listener';
import { Unlisten } from './types/Unlisten';
export type EventEmitter_EE<_EE extends Dict<any[]>> = {
    listen: [{
        event: 'listen' | keyof _EE;
    }];
    unlisten: [{
        event: 'unlisten' | keyof _EE;
    }];
    emit: [{
        event: 'emit' | keyof _EE;
    }];
};
export declare class EventEmitter_<_EE extends EventEmitter_EE<_EE> & Dict<any[]> = Dict<any> & {
    listen: [{
        event: 'listen';
    }];
    unlisten: [{
        event: 'unlisten';
    }];
    emit: [{
        event: 'emit';
    }];
}> implements EE<_EE> {
    private __listeners;
    private _removeListener;
    prependListener<K extends keyof _EE>(event: K, listener: Listener<_EE[K]>): Unlisten;
    removeListener<K extends keyof _EE>(event: K, listener: Listener<_EE[K]>): void;
    addListener<K extends keyof _EE>(event: K, listener: Listener<_EE[K]>): Unlisten;
    eventNames(): string[];
    listenerCount<K extends keyof _EE>(name: K): number;
    emit<K extends keyof _EE>(event: K, ...args: _EE[K]): void;
}
