type EventListener<T> = (e: T) => void | Promise<void>;
declare class ClassEvent<EventMap> {
    private _maxEventBeforeWarn;
    private _maxEventListeners;
    private listenerList;
    private warnIssuedFor;
    on<Key extends keyof EventMap>(eventName: Key, listener: EventListener<EventMap[Key]>): ClassEvent<EventMap>;
    off<Key extends keyof EventMap>(eventName: Key, listener: EventListener<EventMap[Key]>): ClassEvent<EventMap>;
    protected emit<Key extends keyof EventMap>(eventName: Key, e: EventMap[Key]): ClassEvent<EventMap>;
    private checkEventList;
    get maxEventBeforeWarn(): number;
    set maxEventBeforeWarn(v: number);
    get maxEventListeners(): number;
    set maxEventListeners(v: number);
}

export { ClassEvent };
