import { PrimitiveTypes } from 'homebridge';
import { DeviceAuth, UserAuth } from './auth.js';
import { Log } from '../tools/log.js';
export interface MQTTListener {
    mqttMessageReceived(message: Record<string, unknown>): void;
}
export type MQTTDependency = {
    log: Log;
    parentName: string;
    email: string;
    auth: DeviceAuth | UserAuth;
    serialNumber: string;
    macAddress: string;
    debug: boolean;
};
export declare class MQTT {
    private readonly dependency;
    private readonly options;
    private static readonly INSTANCES;
    static connect(dependency: MQTTDependency, listener: MQTTListener): MQTT | undefined;
    private readonly log;
    private client;
    private idleTimer?;
    private shouldReconnect;
    private isReconnecting;
    private reconnectCount;
    private readonly listeners;
    private readonly topicDesired;
    private readonly topicReported;
    private constructor();
    private connect;
    teardown(): void;
    private messageReceived;
    publish(payload: Record<string, PrimitiveTypes>): void;
    private reconnect;
    private resetIdleTimer;
    private static readonly KNOWN_KEYS;
    private static readonly STORAGE_KEY;
    private saveData;
}
