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[];
}
interface DeviceStatusRequest {
    airconId: string;
    airconStat: string;
}
interface DeviceStatusResponse {
    command: string;
    apiVer: string;
    operatorId: string;
    deviceId: string;
    timestamp: number;
    result: number;
    contents: {
        airconId: string;
        airconStat: string;
        logStat: number;
        updatedBy: string;
        expires: number;
        ledStat: number;
        autoHeating: number;
        highTemp: string;
        lowTemp: string;
        firmType: string;
        wireless: {
            firmVer: string;
        };
        mcu: {
            firmVer: string;
        };
        timezone: string;
        remoteList: string[];
        numOfAccount: number;
    };
}
export declare class DeviceClient {
    private readonly ipAddress;
    private readonly port;
    private readonly operatorId;
    private readonly deviceId;
    private readonly log;
    status: DeviceStatus;
    constructor(ipAddress: string, port: number, operatorId: string, deviceId: string, log: Logging);
    getDeviceStatus(): Promise<DeviceStatus>;
    setAirflow(airFlow: number): DeviceStatus;
    setOperationMode(operationMode: number): DeviceStatus;
    setOperation(operation: boolean): DeviceStatus;
    setPresetTemp(presetTemp: number): DeviceStatus;
    setDeviceStatus(status: DeviceStatus): Promise<DeviceStatus>;
    call(command: string, contents?: DeviceStatusRequest | null): Promise<DeviceStatusResponse>;
}
export {};
