import { Logger } from 'homebridge';
import mqtt, { ISubscriptionGrant, MqttClient, OnMessageCallback } from 'mqtt';
export declare class SonnenMQTT {
    private client;
    private rootTopic;
    constructor(client: MqttClient | null, rootTopic: string);
    connect(clientID: string, username: string, password: string, host: string, log?: Logger | null): void;
    connectAsync(clientID: string, username: string, password: string, host: string, log?: Logger | null): Promise<void>;
    reconnect(): boolean;
    getConnected(): boolean;
    getClient(): MqttClient | null;
    addSubscription(topic: string | string[]): Promise<ISubscriptionGrant[] | null>;
    onMessage(callback: OnMessageCallback): false | undefined;
    publish<V>(topic: string, value: V, log: Logger | null): void;
    disconnect(): Promise<false | {
        (): Promise<void>;
        (force?: boolean): Promise<void>;
        (opts?: Partial<mqtt.IDisconnectPacket>): Promise<void>;
        (force?: boolean, opts?: Partial<mqtt.IDisconnectPacket>): Promise<void>;
    }>;
}
//# sourceMappingURL=garageclient.d.ts.map