type EventListener = (...args: any[]) => void;
type EventArgMap = {
    [name: string]: any[];
};
export declare class EventEmitter<TMap extends EventArgMap> {
    private readonly events;
    constructor();
    listeners(name: keyof TMap): EventListener[];
    on<K extends keyof TMap>(name: K, listener: (...args: TMap[K]) => void): void;
    off<K extends keyof TMap>(name: K, listener: (...args: TMap[K]) => void): void;
    emit<K extends keyof TMap>(name: K, ...args: TMap[K]): void;
}
export {};
