type Listener = (...args: any[]) => void;
type ListenerArgs<T> = T extends Listener ? Parameters<T> : never;
export declare class EventEmitter<E> {
    private events;
    on<T extends keyof E>(type: T, listener: E[T]): void;
    off<T extends keyof E>(type: T, listener: E[T]): void;
    emit<T extends keyof E>(type: T, ...args: ListenerArgs<E[T]>): void;
}
export {};
