export type EventType = number | string | symbol;
export type EventHandler = (...payload: any[]) => void;
export type EventHandlerSet = Set<EventHandler>;
export type EventHandlerMap = Map<EventType, EventHandlerSet>;
export interface EventEmitter {
    /**
     * 为指定的事件添加回调方法
     *
     * @param type 事件类型
     * @param handler 回调方法
     */
    on: (type: EventType, handler: EventHandler) => void;
    /**
     * 为指定的事件移除回调方法
     *
     * @param type 事件类型
     * @param handler 回调方法
     */
    off: (type: EventType, handler: EventHandler) => void;
    /**
     * 为指定的事件清除所有回调方法
     *
     * @param type 事件类型
     */
    clear: (type: EventType) => void;
    /**
     * 清除所有事件的所有回调方法
     */
    clearAll: () => void;
    /**
     * 派发特定的事件
     *
     * @param type 事件类型
     * @param payload 传入事件回调方法的参数
     */
    emit: (type: EventType, ...payload: any[]) => void;
}
/**
 * 创建一个自定义的事件发射器
 *
 * @returns 事件发射器
 */
export declare function createEventEmitter(): EventEmitter;
