import { Logger } from "./consoleLogger";
import TuyAPI from 'tuyapi';
export declare enum StatusDps {
    DEFAULT = "1",
    RUNNING = "2",
    DIRECTION = "3",
    WORK_MODE = "5",
    WORK_STATUS = "15",
    GO_HOME = "101",
    CLEAN_SPEED = "102",
    FIND_ROBOT = "103",
    BATTERY_LEVEL = "104",
    ERROR_CODE = "106"
}
export declare const statusDpsFriendlyNames: Map<string, string>;
export interface StatusResponse {
    devId: string;
    dps: {
        [StatusDps.DEFAULT]?: boolean;
        [StatusDps.RUNNING]?: boolean;
        [StatusDps.DIRECTION]?: string;
        [StatusDps.WORK_MODE]?: string;
        [StatusDps.WORK_STATUS]?: string;
        [StatusDps.GO_HOME]?: boolean;
        [StatusDps.CLEAN_SPEED]?: string;
        [StatusDps.FIND_ROBOT]?: boolean;
        [StatusDps.BATTERY_LEVEL]?: number;
        [StatusDps.ERROR_CODE]?: string;
    };
}
export interface RobovacStatus {
    devId: string;
    dps: {
        [StatusDps.DEFAULT]: boolean;
        [StatusDps.RUNNING]: boolean;
        [StatusDps.DIRECTION]: string;
        [StatusDps.WORK_MODE]: string;
        [StatusDps.WORK_STATUS]: string;
        [StatusDps.GO_HOME]: boolean;
        [StatusDps.CLEAN_SPEED]: string;
        [StatusDps.FIND_ROBOT]: boolean;
        [StatusDps.BATTERY_LEVEL]: number;
        [StatusDps.ERROR_CODE]: string;
    };
}
export declare function formatStatusResponse(statusResponse: StatusResponse): string;
export declare enum Direction {
    FORWARD = "forward",
    BACKWARD = "backward",
    LEFT = "left",
    RIGHT = "right"
}
export declare enum WorkMode {
    AUTO = "auto",
    SMALL_ROOM = "SmallRoom",
    SPOT = "Spot",
    EDGE = "Edge",
    NO_SWEEP = "Nosweep"
}
export declare enum WorkStatus {
    RUNNING = "Running",
    STAND_BY = "standby",
    SLEEPING = "Sleeping",
    CHARGING = "Charging",
    CHARGING_COMPLETED = "completed",
    RECHARGE_NEEDED = "Recharge"
}
export declare enum CleanSpeed {
    STANDARD = "Standard",
    BOOST_IQ = "Boost_IQ",
    MAX = "Max",
    NO_SUCTION = "No_suction"
}
export declare enum ErrorCode {
    NO_ERROR = "no_error",
    STUCK_5_MIN = "Stuck_5_min",
    CRASH_BAR_STUCK = "Crash_bar_stuck",
    SENSOR_DIRTY = "sensor_dirty",
    NOT_ENOUGH_POWER = "N_enough_pow",
    WHEEL_STUCK = "Wheel_stuck",
    S_BRUSH_STUCK = "S_brush_stuck",
    FAN_STUCK = "Fan_stuck",
    R_BRUSH_STUCK = "R_brush_stuck"
}
export declare const errorCodeFriendlyNames: Map<string, string>;
export declare function getErrorCodeFriendlyName(errorCode: string): string;
export declare class RoboVac {
    api: TuyAPI;
    directConnect: boolean;
    lastStatus: RobovacStatus;
    lastStatusUpdate: Date;
    lastStatusValid: boolean;
    cachingDuration: number;
    ongoingStatusUpdate: Promise<RobovacStatus> | null;
    log: Logger;
    consoleDebugLog: boolean;
    constructor(config: {
        deviceId: string;
        localKey: string;
        deviceIp: string;
    }, dataReceivedCallback: (statusResponse: StatusResponse) => void, cachingDuration: number, log?: Logger);
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    getStatusCached(): RobovacStatus | null;
    getStatus(): Promise<RobovacStatus>;
    getStatusFromDeviceSynchronized(): Promise<RobovacStatus>;
    getStatusFromDevice(): Promise<RobovacStatus>;
    set(dps: StatusDps, newValue: any): Promise<void>;
    getRunning(): Promise<boolean>;
    getDirection(): Promise<Direction>;
    getWorkMode(): Promise<WorkMode>;
    getWorkStatus(): Promise<WorkStatus>;
    getGoHome(): Promise<boolean>;
    getCleanSpeed(): Promise<CleanSpeed>;
    getFindRobot(): Promise<boolean>;
    getBatteryLevel(): Promise<number>;
    getErrorCode(): Promise<string>;
    getRunningCached(): boolean | null;
    getDirectionCached(): Direction | null;
    getWorkModeCached(): WorkMode | null;
    getWorkStatusCached(): WorkStatus | null;
    getGoHomeCached(): boolean | null;
    getCleanSpeedCached(): CleanSpeed | null;
    getFindRobotCached(): boolean | null;
    getBatteryLevelCached(): number | null;
    getErrorCodeCached(): string | null;
    setPlayPause(newValue: boolean): Promise<void>;
    setDirection(newValue: Direction): Promise<void>;
    setWorkMode(newValue: string): Promise<void>;
    setGoHome(newValue: boolean): Promise<void>;
    setCleanSpeed(newValue: string): Promise<void>;
    setFindRobot(newValue: boolean): Promise<void>;
}
//# sourceMappingURL=robovac-api.d.ts.map