import type { API, Logging } from 'homebridge';
import type { DeviceConfig, RoombaPlatformConfig } from './settings.js';
import type { Robot } from './roomba.js';
/**
 * Represents a Roomba device as a Homebridge Matter RoboticVacuumCleaner accessory.
 *
 * This class manages the connection to the physical Roomba device, translates
 * Roomba states to Matter clusters, and handles Matter commands (start, stop, pause,
 * resume, dock).
 */
export declare class RoboticVacuumCleaner {
    private readonly _api;
    private readonly _log;
    private readonly _device;
    private readonly _blid;
    private readonly _robotpwd;
    private readonly _ipaddress;
    private readonly _cleanBehaviour;
    private readonly _mission;
    private readonly _stopBehaviour;
    private readonly _idlePollIntervalMillis;
    private _cachedStatus;
    private _lastRefreshState;
    private _roombaLastActiveTimestamp?;
    private _pollTimeout?;
    private _currentRoombaPromise?;
    private _currentCipherIndex;
    private _started;
    /**
     * The Matter accessory UUID (derived from device blid)
     */
    readonly UUID: string;
    /**
     * The Matter accessory display name
     */
    readonly displayName: string;
    constructor(api: API, log: Logging, device: Robot & DeviceConfig, config: RoombaPlatformConfig, version: string);
    /**
     * Returns a plain Matter accessory object suitable for registration with Homebridge.
     */
    toAccessory(): any;
    /**
     * Start polling Roomba's status and pushing updates to Matter.
     */
    startPolling(): void;
    /**
     * Stop polling Roomba's status.
     */
    stopPolling(): void;
    private _handleChangeRunMode;
    private _handlePause;
    private _handleResume;
    private _handleGoHome;
    private _startCleaning;
    private _stopAndDock;
    private _dockWhenStopped;
    private _connectedRoomba;
    private _connect;
    private _parseState;
    private _mergeCachedStatus;
    private _pushMatterState;
    private _schedulePoll;
    private _refreshState;
    private _pollInterval;
    private _getSerialNum;
    private _shouldTryDifferentCipher;
}
//# sourceMappingURL=matterAccessory.d.ts.map