interface IEventData {
    namespace: string;
    eventName: string;
    data: any;
}
interface IEventDataCacheFlag {
    /** Mark is the cached data */
    isCached: boolean;
    cacheTimeStamp?: number;
}
declare type IEmitEvent = IEventData & IEventDataCacheFlag;
/**
 * 获取对应 namespace 的 Channel，如果不存在则会新建
 * @param namespace
 * @returns Channel
 */
export declare const getChannel: (namespace: string) => Channel;
/**
 * 释放对应 Channel，在其上注册的事件也会一并被释放
 * @param namespace
 */
export declare const destroyChannel: (namespace: string) => void;
/**
 *
 * @returns 所有 Channel 对应的 namespace 列表
 */
export declare const getAllChannelNamespaces: () => string[];
interface IListenerOption {
    /** Mark whether use the cached data */
    useCache: boolean;
}
export declare class Channel {
    private subscribedMethodsPromise;
    private unSubscribedMethodsPromise;
    private lastCacheMap;
    private namespace;
    private listenerMap;
    constructor(namespace: string);
    destroy(): void;
    subscribe(eventName: string, listener: (data: IEmitEvent) => void, options?: IListenerOption): void;
    unsubscribe(eventName: string, listener: (data: IEmitEvent) => void): void;
    publish(eventName: string, data: any, options?: {
        shouldUpdateCache?: boolean;
    }): Promise<any>;
    private publishCurrentInnerEvent;
    private trySubscribeEvent;
    private tryUnSubscribeEvent;
    private addDTChannelEventListener;
}
export {};
