/**
 * MqttManager.ts — MQTT 客户端管理器
 *
 * 运行时按需从 CDN 加载 mqtt.js，封装连接/订阅/发布等操作，
 * 并通过内置事件系统通知状态变化和消息到达。
 *
 * ## 使用示例
 * ```ts
 * const mqtt = new MqttManager();
 * mqtt.on('message', ({ topic, message }) => console.log(topic, message));
 * await mqtt.connect({ host: 'broker.example.com', port: 8083, topics: ['my/topic'] });
 * mqtt.publish('my/topic', 'hello');
 * ```
 *
 * 注意：`mqtt.js` 在运行时从 CDN 加载（`window.mqtt`），
 * 不包含在构建产物中。
 */
/** MQTT 连接配置 */
export interface MqttConfig {
    /** 协议（默认 'wss'） */
    protocol?: string;
    host: string;
    port: number | string;
    username?: string;
    password?: string;
    /** 客户端 ID（默认随机生成） */
    clientId?: string;
    /** KeepAlive 间隔秒数（默认 60） */
    keepalive?: number;
    /** 连接成功后自动订阅的 topic 列表 */
    topics?: string[];
    /** 兼容旧格式：单个 topic（自动转换为 topics 数组） */
    topic?: string;
}
/** 连接状态 */
export type MqttStatus = 'disconnected' | 'connecting' | 'connected' | 'error';
/** message 事件载荷 */
export interface MqttMessageEvent {
    topic: string;
    message: string;
}
/** MqttManager 支持的事件类型 */
export type MqttEventName = 'statusChange' | 'message' | 'error';
declare class MqttManager {
    private client;
    private listeners;
    private config;
    private retryCount;
    private maxRetries;
    status: MqttStatus;
    /**
     * 注册事件监听器。
     * @param event    - 事件名（'statusChange' | 'message' | 'error'）
     * @param callback - 回调函数
     */
    on(event: MqttEventName, callback: (data: unknown) => void): void;
    /**
     * 取消注册事件监听器。
     * @param event    - 事件名
     * @param callback - 要取消的回调
     */
    off(event: MqttEventName, callback: (data: unknown) => void): void;
    /** @private 触发事件。 */
    private emit;
    /**
     * 懒加载 mqtt.js（从 CDN）。
     * 若已加载（window.mqtt 存在）则立即 resolve。
     */
    LoadMQTT(): Promise<void>;
    /**
     * 建立 MQTT 连接。
     *
     * 优先级：传入 config → 上次缓存的 config → localStorage 中保存的 config。
     * 连接成功后自动订阅 `config.topics`（或 `config.topic`）中的所有 topic。
     *
     * @param config - 连接配置（可选，省略时使用缓存配置）
     */
    connect(config?: MqttConfig): Promise<void>;
    /** @private 连接成功回调。 */
    private OnConnect;
    /** @private 连接关闭回调。 */
    private OnClose;
    /**
     * @private 收到消息回调（持久化到 localStorage 并触发 message 事件）。
     */
    private OnMessage;
    /**
     * 断开 MQTT 连接并清理客户端实例。
     */
    disconnect(): void;
    /**
     * 订阅指定 topic。
     * 若当前未连接则静默跳过（不抛错）。
     *
     * @param topic - MQTT topic 路径
     */
    subscribe(topic: string): void;
    /**
     * 等待指定 topic 的下一条消息（Promise 封装）。
     * 若 localStorage 中已有缓存消息则立即 resolve。
     *
     * @param topic   - MQTT topic 路径
     * @param timeout - 超时毫秒数（默认 5000）
     * @returns 消息字符串
     */
    get(topic: string, timeout?: number): Promise<string>;
    /**
     * 向指定 topic 发布消息。
     * 若当前未连接则返回 false。
     *
     * @param topic   - MQTT topic 路径
     * @param message - 消息字符串
     * @returns 是否成功发布
     */
    publish(topic: string, message: string): boolean;
    /**
     * 更新连接配置（不立即重连，下次 connect() 时生效）。
     * @param config - 新的连接配置
     */
    setConfig(config: MqttConfig): void;
}
export default MqttManager;
//# sourceMappingURL=MqttManager.d.ts.map