import { Logging } from 'homebridge';
export declare class DeviceStatus {
    static outdoorTempList: number[];
    static indoorTempList: number[];
    static OPERATION_MODES: {
        0: 'auto';
        1: 'cool';
        2: 'heat';
        3: 'fan';
        4: 'dry';
    };
    static AIRFLOW: {
        0: 'auto';
        1: 'lowest';
        2: 'low';
        3: 'high';
        4: 'highest';
    };
    static HORIZONTAL_POSITIONS: {
        0: 'auto';
        1: 'left-left';
        2: 'left-center';
        3: 'center-center';
        4: 'center-right';
        5: 'right-right';
        6: 'left-right';
        7: 'right-left';
    };
    static VERTICAL_POSITIONS: {
        0: 'auto';
        1: 'highest';
        2: 'middle';
        3: 'normal';
        4: 'lowest';
    };
    airFlow: number;
    coolHotJudge: boolean;
    electric: number;
    entrust: boolean;
    errorCode: string;
    indoorTemp: number | null;
    isAutoHeating: boolean;
    isSelfCleanOperation: boolean;
    isSelfCleanReset: boolean;
    isVacantProperty: number;
    modelNo: number;
    operation: boolean;
    operationMode: number | null;
    outdoorTemp: number | null;
    presetTemp: number | null;
    windDirectionLR: number;
    windDirectionUD: number;
    constructor();
    static fromBase64(base64: string): DeviceStatus;
    private static crc16ccitt;
    toBase64(): string;
    commandToByte(): number[];
    static receiveToBytes(status: DeviceStatus): number[];
}
type RequestContents = Record<string, unknown>;
interface DeviceResponse {
    command: string;
    apiVer: string;
    operatorId: string;
    deviceId: string;
    timestamp: number;
    result: number;
    contents: any;
}
interface DeviceInfoContents {
    airconId: string;
    macAddress: string;
    apMode: number;
}
export declare class DeviceClient {
    private static readonly MIN_REQUEST_GAP_MS;
    private readonly ipAddress;
    private readonly port;
    private readonly operatorId;
    private readonly deviceId;
    private airconId;
    private readonly log;
    private readonly ignoreConnectionErrors;
    status: DeviceStatus;
    private commandQueue;
    isCommandInProgress: boolean;
    private nextRequestAfter;
    private useHttps;
    private readonly httpsAgent;
    constructor(ipAddress: string, port: number, operatorId: string, deviceId: string, airconId: string, log: Logging, ignoreConnectionErrors?: boolean);
    isConnectionError(error: Error): boolean;
    private enqueue;
    getDeviceStatus(): Promise<DeviceStatus>;
    getDeviceInfo(): Promise<DeviceInfoContents>;
    getAirconId(): string;
    updateAccountInfo(timezone: string): Promise<number>;
    deleteAccountInfo(): Promise<number>;
    setAirflow(airFlow: number): Promise<DeviceStatus>;
    setOperationMode(operationMode: number): Promise<DeviceStatus>;
    setOperation(operation: boolean): Promise<DeviceStatus>;
    setPresetTemp(presetTemp: number): Promise<DeviceStatus>;
    setAwayMode(awayMode: boolean): Promise<DeviceStatus>;
    setDeviceStatus(status: DeviceStatus): Promise<DeviceStatus>;
    private sleep;
    private waitForNextRequestSlot;
    private sendRequest;
    private getBaseUrl;
    private getAxiosConfig;
    private detectProtocol;
    call(command: string, contents?: RequestContents | null, retries?: number): Promise<DeviceResponse>;
}
export {};
