import type { AxiosInstance } from 'axios';
import type { API, DynamicPlatformPlugin, HAP, Logging, PlatformAccessory } from 'homebridge';
import type { accessoryAttribute, devicesConfig, location, locations, options, resideoDevice, ResideoPlatformConfig, sensorAccessory, T9groups } from './settings.js';
export declare class ResideoPlatform implements DynamicPlatformPlugin {
    accessories: PlatformAccessory[];
    readonly api: API;
    readonly log: Logging;
    protected readonly hap: HAP;
    config: ResideoPlatformConfig;
    sensorData: never[];
    refreshInterval: any;
    locations?: locations;
    sensorAccessory: sensorAccessory;
    firmware: accessoryAttribute['softwareRevision'];
    platformConfig: ResideoPlatformConfig;
    platformLogging: options['logging'];
    platformRefreshRate: options['refreshRate'];
    platformPushRate: options['pushRate'];
    platformUpdateRate: options['updateRate'];
    platformMaxRetries: options['maxRetries'];
    platformDelayBetweenRetries: options['delayBetweenRetries'];
    debugMode: boolean;
    version: string;
    action: string;
    axios: AxiosInstance;
    constructor(log: Logging, config: ResideoPlatformConfig, api: API);
    configureAccessory(accessory: PlatformAccessory): void;
    verifyConfig(): void;
    refreshAccessToken(): Promise<void>;
    getAccessToken(): Promise<void>;
    updateRefreshToken(newRefreshToken: string): Promise<void>;
    discoverlocations(): Promise<location[]>;
    getCurrentSensorData(location: location, device: resideoDevice & devicesConfig, group: T9groups): Promise<any>;
    private normalizeSensorDate;
    getSoftwareRevision(location: location, device: resideoDevice & devicesConfig): Promise<any>;
    private discoverDevices;
    private mergeByDeviceID;
    private deviceClass;
    private discoverRoomSensors;
    private roomsensordisplaymethod;
    private createThermostat;
    private createLeak;
    private createValve;
    private createRoomSensors;
    private createRoomSensorThermostat;
    registerDevice(device: resideoDevice & devicesConfig): Promise<boolean>;
    private leaksensorFirmwareNewAccessory;
    private leaksensorFirmwareExistingAccessory;
    private valveFirmwareNewAccessory;
    private valveFirmwareExistingAccessory;
    private roomsensorFirmwareNewAccessory;
    private roomsensorFirmwareExistingAccessory;
    thermostatFirmwareNewAccessory(device: resideoDevice & devicesConfig, accessory: PlatformAccessory, location: any): Promise<void>;
    thermostatFirmwareExistingAccessory(device: resideoDevice & devicesConfig, existingAccessory: PlatformAccessory, location: any): Promise<void>;
    externalOrPlatform(device: resideoDevice & devicesConfig, accessory: PlatformAccessory): Promise<void>;
    externalAccessory(accessory: PlatformAccessory): Promise<void>;
    unregisterPlatformAccessories(existingAccessory: PlatformAccessory): void;
    apiError(e: any): void;
    statusCode(statusCode: number, action: string): Promise<void>;
    getPlatformLogSettings(): Promise<void>;
    getPlatformRateSettings(): Promise<void>;
    getPlatformConfigSettings(): Promise<void>;
    /**
     * Asynchronously retrieves the version of the plugin from the package.json file.
     *
     * This method reads the package.json file located in the parent directory,
     * parses its content to extract the version, and logs the version using the debug logger.
     * The extracted version is then assigned to the `version` property of the class.
     *
     * @returns {Promise<void>} A promise that resolves when the version has been retrieved and logged.
     */
    getVersion(): Promise<void>;
    /**
     * Validate and clean a string value for a Name Characteristic.
     * @param displayName - The display name of the accessory.
     * @param name - The name of the characteristic.
     * @param value - The value to be validated and cleaned.
     * @returns The cleaned string value.
     */
    validateAndCleanDisplayName(displayName: string, name: string, value: string): Promise<string>;
    /**
     * If device level logging is turned on, log to log.warn
     * Otherwise send debug logs to log.debug
     */
    infoLog(...log: any[]): Promise<void>;
    successLog(...log: any[]): Promise<void>;
    debugSuccessLog(...log: any[]): Promise<void>;
    warnLog(...log: any[]): Promise<void>;
    debugWarnLog(...log: any[]): Promise<void>;
    errorLog(...log: any[]): Promise<void>;
    debugErrorLog(...log: any[]): Promise<void>;
    debugLog(...log: any[]): Promise<void>;
    loggingIsDebug(): Promise<boolean>;
    enablingPlatformLogging(): Promise<boolean>;
}
//# sourceMappingURL=platform.d.ts.map