/// <reference types="node" />
import EventEmitter from "events";
export interface EventMap {
    [name: string | symbol]: (...args: any[]) => void;
}
/**
 * Wraps the EventEmitter class to add types that map event names
 * to types of arguments in the event handler callback.
 */
export declare class TypedEmitter<Events extends EventMap> extends EventEmitter {
    addListener<EventName extends keyof Events>(event: EventName, listener: Events[EventName]): this;
    prependListener<EventName extends keyof Events>(event: EventName, listener: Events[EventName]): this;
    prependOnceListener<EventName extends keyof Events>(event: EventName, listener: Events[EventName]): this;
    on<EventName extends keyof Events>(event: EventName, listener: Events[EventName]): this;
    once<EventName extends keyof Events>(event: EventName, listener: Events[EventName]): this;
    emit<EventName extends keyof Events>(event: EventName, ...args: Parameters<Events[EventName]>): boolean;
    off<EventName extends keyof Events>(event: EventName, listener: Events[EventName]): this;
    removeListener<EventName extends keyof Events>(event: EventName, listener: Events[EventName]): this;
}
