import { AccessoryContext, BaseDevice } from '../baseDevice.js';
import { LGThinQHomebridgePlatform } from '../platform.js';
import { CharacteristicValue, Logger, PlatformAccessory, Service } from 'homebridge';
import { Device } from '../lib/Device.js';
import { EnumValue, RangeValue } from '../lib/DeviceModel.js';
export declare enum ACModelType {
    AWHP = "AWHP",
    RAC = "RAC"
}
export declare enum FanSpeed {
    LOW = 2,
    LOW_MEDIUM = 3,
    MEDIUM = 4,
    MEDIUM_HIGH = 5,
    HIGH = 6
}
export declare enum ACModeOption {
    COOL = 0,
    FAN = 1,
    DRY = 2,
    ENERGY_SAVE = 3
}
export type Config = {
    ac_swing_mode: string;
    ac_air_quality: boolean;
    ac_mode: string;
    ac_temperature_sensor: boolean;
    ac_humidity_sensor: boolean;
    ac_led_control: boolean;
    ac_fan_control: boolean;
    ac_jet_control: boolean;
    ac_temperature_unit: string;
    ac_buttons: {
        name: string;
        op_mode: string | number;
    }[];
    ac_air_clean: boolean;
    ac_energy_save: boolean;
};
export default class AirConditioner extends BaseDevice {
    readonly platform: LGThinQHomebridgePlatform;
    readonly accessory: PlatformAccessory<AccessoryContext>;
    protected service: Service;
    protected serviceAirQuality: Service | undefined;
    protected serviceSensor: Service | undefined;
    protected serviceHumiditySensor: Service | undefined;
    protected serviceLight: Service | undefined;
    protected serviceFanV2: Service | undefined;
    protected serviceJetMode: Service | undefined;
    protected serviceQuietMode: Service | undefined;
    protected serviceEnergySaveMode: Service | undefined;
    protected serviceAirClean: Service | undefined;
    protected serviceLabelButtons: Service | undefined;
    protected jetModeModels: string[];
    protected quietModeModels: string[];
    protected airCleanModels: string[];
    protected currentTargetState: number;
    protected pendingPowerState: number | undefined;
    protected pendingPowerStateUntil: number;
    constructor(platform: LGThinQHomebridgePlatform, accessory: PlatformAccessory<AccessoryContext>, logger: Logger);
    get config(): Config;
    get Status(): ACStatus;
    protected supportsJetMode(device: Device): boolean;
    protected supportsQuietMode(device: Device): boolean;
    protected supportsAirClean(device: Device): boolean;
    protected isEnergySaveSupported(device: Device): boolean;
    protected createFanService(): void;
    protected createAirQualityService(): void;
    protected createHeaterCoolerService(): void;
    setEnergySaveActive(value: CharacteristicValue): Promise<void>;
    setAirCleanActive(value: CharacteristicValue): Promise<void>;
    setQuietModeActive(value: CharacteristicValue): Promise<void>;
    setJetModeActive(value: CharacteristicValue): Promise<void>;
    setFanState(value: CharacteristicValue): Promise<void>;
    updateAccessoryCharacteristic(device: Device): void;
    update(snapshot: any): void;
    updateAccessoryActiveCharacteristic(): void;
    updateAccessoryCurrentTemperatureCharacteristic(): void;
    updateAccessoryStateCharacteristics(): void;
    updateAccessoryTemperatureCharacteristics(): void;
    updateAccessoryFanStateCharacteristics(): void;
    updateAccessoryTotalConsumptionCharacteristic(): void;
    updateAccessoryAirQualityCharacteristic(): void;
    updateAccessoryTemperatureSensorCharacteristic(): void;
    updateAccessoryHumiditySensorCharacteristic(): void;
    updateAccessoryFanV2Characteristic(): void;
    updateAccessoryLedControlCharacteristic(): void;
    updateAccessoryJetModeCharacteristic(): void;
    updateAccessoryQuietModeCharacteristic(): void;
    updateAccessoryEnergySaveModeCharacteristic(): void;
    updateAccessoryAirCleanCharacteristic(): void;
    setLight(value: CharacteristicValue): Promise<void>;
    setTargetState(value: CharacteristicValue): Promise<void>;
    setActive(value: CharacteristicValue): Promise<void>;
    setTargetTemperature(value: CharacteristicValue): Promise<void>;
    setFanSpeed(value: CharacteristicValue): Promise<void>;
    setSwingMode(value: CharacteristicValue): Promise<void>;
    setOpMode(deviceId: string, opMode: number): Promise<boolean | undefined>;
    setACMode(value: CharacteristicValue): Promise<void>;
    setupButton(device: Device): void;
    protected setupButtonOpmode(device: Device, name: string, opMode: number): void;
    handleButtonOpmode(value: CharacteristicValue, opMode: number): Promise<void>;
}
export declare class ACStatus {
    protected data: any;
    protected device: Device;
    protected config: Config;
    private logger;
    constructor(data: any, device: Device, config: Config, logger: Logger);
    get isFahrenheitUnit(): boolean;
    convertTemperatureCelsiusFromHomekitToLG(temperatureInCelsius: CharacteristicValue): number;
    convertTemperatureCelsiusFromLGToHomekit(temperature: number): number;
    get opMode(): number;
    get isPowerOn(): boolean;
    get currentRelativeHumidity(): number;
    get currentTemperature(): number;
    get targetTemperature(): number;
    get airQuality(): {
        isOn: any;
        overall: number;
        PM2: number;
        PM10: number;
    } | null;
    get windStrength(): 1 | 2 | 3;
    get rotationSpeed(): number;
    get isSwingOn(): boolean;
    get isLightOn(): boolean;
    get isEnergySaveOn(): boolean;
    get currentConsumption(): number;
    get type(): string;
    getTemperatureRange([minRange, maxRange]: [EnumValue, EnumValue]): RangeValue;
    getTemperatureRangeForHeating(): [EnumValue, EnumValue];
    getTemperatureRangeForCooling(): [EnumValue, EnumValue];
}
