import type { Logger } from '../../util/logger';
/**
 * Bus 埋点内容定义
 */
export declare enum BusLogEventEnum {
    /**
     * 发送消息
     * action：string
     */
    sdk_event_busPublishMessage = "sdk_event_busPublishMessage",
    /**
     * 发送消息时，返回事件结果(Web)
     * action：string
     */
    sdk_event_busPublishCallback = "sdk_event_busPublishCallback",
    /**
     * 查询是否订阅
     * action：string
     * sub (processResult): bool
     */
    sdk_event_busIsSubscribe = "sdk_event_busIsSubscribe",
    /**
     * 订阅协议
     * actions (actionNames): string[] , 用逗号拼接
     */
    sdk_event_busSubscribe = "sdk_event_busSubscribe",
    /**
     * 退订协议
     * actions (actionNames): string[] , 用逗号拼接
     */
    sdk_event_busUnsubscribe = "sdk_event_busUnsubscribe",
    /**
     * 清除缓存（Web/Android）
     */
    sdk_event_busClear = "sdk_event_busClear",
    /**
     * 添加拦截器（Web/Android）
     */
    sdk_event_busAddInterceptor = "sdk_event_busAddInterceptor",
    /**
     * 发送消息时，对应aciton未订阅
     */
    sdk_error_busPublishUnsubscribeError = "sdk_error_busPublishUnsubscribeError",
    /**
     * 发送消息时异常
     */
    sdk_error_busPublishError = "sdk_error_busPublishError",
    /**
     * 发送消息无结果(Web)
     */
    sdk_error_busPublishNoResult = "sdk_error_busPublishNoResult"
}
/**
 * 扩展协议可序列化的消息定义
 */
export declare class BusMessage {
    private action;
    private data;
    private jsonData;
    constructor(action: string, data?: string);
    getAction(): string;
    getData(): string;
    isJSONData(): boolean;
    getJSONObject(): any;
    private parseJSONData;
    result(result?: any): BusMessage;
}
export type OnBusCallback = (message: BusMessage) => void;
/**
 *  扩展总线可选的Context参数，在Web端用于实时回调
 */
export declare class BusContext {
    private callback;
    constructor(callback: OnBusCallback);
    onCallBack(message: BusMessage): void;
}
/**
 * 扩展能力的能力定义，基于此协议实现扩展能力
 */
export declare abstract class BusSubscriber {
    abstract actionNames(): string[];
    abstract onMessage(context: BusContext, message: BusMessage): void;
}
/**
 * 拦截器，可增加扩展性
 */
export interface BusInterceptor {
    /**
     * 未订阅场景拦截
     * @param actionName
     */
    onUnsubscribedAction?(actionName: string): boolean;
    /**
     * 分发消息场景处理异常
     * @param message
     */
    onPublishException?(message: BusMessage, e: any): void;
}
/**
 * 事件总线入口，支持的关系为：
 * 发送者 和 接收者的关系：   一对一，大多数场景，支持callback
 * 发送者 和 接收者的关系：   多对一， 设计上多一对，但是同一时间点，只会一个发送者，支持callback
 * 发送者 和 接收者的关系：   一对多，可能有，埋点多重上报？不需要callback，业务场景应该是一个广播场景
 */
export declare class BusManager {
    private static TAG;
    private static _logSplit;
    private static interceptors;
    private static subscribersMap;
    private static isDebug;
    private static logger;
    static debugTrace(enable: boolean, logger: Logger): void;
    private static traceLog;
    private static traceError;
    static clear(): void;
    static addInterceptor(interceptor: BusInterceptor): void;
    static publishForResult(message: BusMessage, config?: {
        timeoutMs?: number;
        fallback?: any;
    }): Promise<BusMessage>;
    static publish(message: BusMessage, callback?: OnBusCallback): void;
    static subscribe(subscriber: BusSubscriber): void;
    static unsubscribe(subscriber: BusSubscriber): void;
    static isSubscribed(actionName: string): boolean;
}
