/// <reference types="node" />
/// <reference types="node" />
/**
 * MQTT连接配置接口
 */
export interface MqttConfig {
    uuid: string;
    /** MQTT协议，如 'mqtt' 或 'mqttws31' */
    protocol: string;
    /** MQTT服务器地址，如 'localhost' 或 '192.168.1.100' */
    host: string;
    /** MQTT服务器端口，标准MQTT端口为1883，MQTT over WebSocket为8083 */
    port: number;
    /** MQTT服务器端点，如 '/mqtt' */
    endpoint: string;
    /** 用户名，用于身份验证，如果服务器不需要认证则为可选 */
    username?: string;
    /** 密码，用于身份验证，如果服务器不需要认证则为可选 */
    password?: string;
    /** 保活时间（秒），客户端定期发送PING消息保持连接活跃，默认60秒 */
    keepalive?: number;
    /** 重连间隔（毫秒），连接断开后自动重连的时间间隔，0表示禁用自动重连，默认0 */
    reconnectPeriod?: number;
    /** 连接超时时间（毫秒），建立连接的最大等待时间，默认30000毫秒（30秒） */
    connectTimeout?: number;
    /** 是否清理会话，true表示每次连接都是新会话，false表示保持之前的订阅状态，默认true */
    clean?: boolean;
    /** 是否拒绝未授权的SSL/TLS连接，false表示接受自签名证书，默认false */
    rejectUnauthorized?: boolean;
    /** 主题 */
    topic?: string;
    /** QoS */
    qos?: number;
}
/**
 * MQTT事件回调接口
 */
export interface MqttCallbacks {
    onConnect?: () => void;
    onDisconnect?: () => void;
    onMessage?: (topic: string, message: Buffer) => void;
    onError?: (error: Error) => void;
    onReconnect?: () => void;
    onClose?: () => void;
}
/**
 * MQTT连接状态枚举
 */
export declare enum MqttConnectionState {
    DISCONNECTED = "disconnected",
    CONNECTING = "connecting",
    CONNECTED = "connected",
    RECONNECTING = "reconnecting",
    ERROR = "error"
}
/**
 * MQTT连接工具类
 */
export declare class MqttClient {
    private client;
    private config;
    private callbacks;
    private connectionState;
    private subscriptions;
    constructor(config: MqttConfig, callbacks?: MqttCallbacks);
    /**
     * 连接到MQTT服务器
     */
    connect(): Promise<void>;
    /**
     * 断开MQTT连接
     */
    disconnect(): void;
    /**
     * 订阅主题
     */
    subscribe(topic: string, qos?: number, callback?: (topic: string, message: Buffer) => void): Promise<void>;
    /**
     * 检查是否已连接
     */
    isConnected(): boolean;
    /**
     * 获取连接状态
     */
    getConnectionState(): MqttConnectionState;
    /**
     * 重新订阅之前的主题
     */
    private resubscribeTopics;
}
/**
 * 创建MQTT客户端实例的工厂函数
 * 使用连接池确保相同配置只创建一次连接
 */
export declare function createMqttClient(config: MqttConfig, callbacks?: MqttCallbacks): Promise<MqttClient>;
/**
 * 创建MQTT客户端实例的同步工厂函数（不推荐，可能创建重复连接）
 * @deprecated 建议使用异步的 createMqttClient
 */
export declare function createMqttClientSync(config: MqttConfig, callbacks?: MqttCallbacks): MqttClient;
