export declare class TypedEventEmitter<Events extends Record<string, unknown>> {
    private emitter;
    constructor();
    emit<Key extends keyof Events>(event: Key, ...args: Events[Key] extends void ? [] : [Events[Key]?]): boolean;
    on<Key extends keyof Events>(event: Key, listener: (arg: Events[Key]) => void): this;
    off<Key extends keyof Events>(event: Key, listener?: (arg: Events[Key]) => void): this;
}
