import { API, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig } from 'homebridge';
import mqtt from 'mqtt';
import { PluginConfiguration } from './configModels';
import { ConfigurableLogger } from './configurableLogger';
export declare class Zigbee2mqttPlatform implements DynamicPlatformPlugin {
    readonly api: API;
    private static readonly MIN_Z2M_VERSION;
    private static readonly TOPIC_BRIDGE;
    private static readonly TOPIC_SUFFIX_AVAILABILITY;
    readonly config?: PluginConfiguration;
    readonly log: ConfigurableLogger;
    private readonly mqttClient?;
    private baseDeviceConfig;
    private readonly accessories;
    private didReceiveDevices;
    private lastReceivedZigbee2MqttVersion;
    private lastZigbee2MqttOnline;
    private lastReceivedDevices;
    private lastReceivedGroups;
    private groupUpdatePending;
    private deviceUpdatePending;
    private zigbee2MqttHasBeenOffline;
    private connectionPreviouslyClosed;
    private availabilityIsEnabledGlobally;
    private availabilityEnabledDevices;
    private availabilityDisabledDevices;
    constructor(logger: Logger, config: PlatformConfig, api: API);
    private initializeMqttClient;
    isExperimentalFeatureEnabled(feature: string): boolean;
    private static createMqttOptions;
    private updateServerAvailabilityForAllDevices;
    private onMqttConnected;
    private onMqttClose;
    private onMessage;
    private checkZigbee2MqttVersionAndConfig;
    private processAvailabilityConfig;
    private isAvailabilityEnabledForAddress;
    private handleDeviceAvailability;
    private handleDeviceUpdate;
    private removeStaleDevices;
    private handleReceivedDevices;
    configureAccessory(accessory: PlatformAccessory): void;
    private static getIdentifiersFromDevice;
    private getAdditionalConfigForDevice;
    private mergeDeviceConfig;
    private isDeviceExcluded;
    private addAccessory;
    private createOrUpdateAccessory;
    isConnected(): boolean;
    publishMessage(topic: string, payload: string, options: mqtt.IClientPublishOptions): Promise<void>;
    private createGroupAccessories;
    private createDeviceListEntryFromGroup;
    private determineExposesForGroup;
}
//# sourceMappingURL=platform.d.ts.map