import { EventType } from './types';
/**
 * 定义事件类
 */
export declare class AppEvent<T extends Record<string, any>> {
    /**
     * 开启则打印log
     */
    private debug;
    /**
     * 生成随机tag的位数
     */
    private tagLen;
    constructor(init?: Partial<{
        debug: boolean;
        tagLen: number;
    }>);
    /**
     * 使用Map()结构，保存订阅者的信息
     */
    private eventObj;
    /**
     * 暴露获取所有的event事件, 数据结构: Map()
     */
    get events(): EventType.EventObj<T>;
    /**
     * 添加事件
     * @param eventName 事件名称
     * @param event 事件
     * @param tag [可选]自定义TagName
     */
    addListen<EVENT extends keyof T>(eventName: EVENT, event: EventType.EventFun<T[EVENT]>, tag?: string): string;
    /**
     * 通知事件，如果不指定tag，则通知所有对应事件的订阅，如果指定tag，则只通知对应tag的订阅者
     * @param eventName 事件名称
     * @param options {value: 参数, tag: 每一个订阅者唯一tag}
     */
    notification<EVENT extends keyof T>(eventName: EVENT, options?: Partial<{
        value: T[EVENT];
        tag: string;
    }>): void;
    /**
     * 移除事件, 指定tag则移除对应的tag，如果不指定则移除全部
     * @param eventName 事件名称
     * @param tag 唯一事件标签
     */
    removeListen(eventName: keyof T, tag?: string): void;
    /**
     * 打印日志
     * @param type
     * @param eventName
     */
    private printLog;
}
