import type { API, Characteristic, DynamicPlatformPlugin, Logging, PlatformAccessory, PlatformConfig, Service } from 'homebridge';
import type { KoboldRobot } from 'node-kobold-control';
import { type SpotCharacteristicConstructors } from './customCharacteristics.js';
import { KoboldVacuumAccessory } from './platformAccessory.js';
export interface KoboldPlatformConfig extends PlatformConfig {
    token?: string;
    language?: string;
    refresh?: string | number;
    hidden?: string[] | string;
    disabled?: string[] | string;
}
export interface KoboldBoundary {
    id: string;
    name: string;
    type?: string;
}
export interface RobotRecord {
    device: KoboldRobot;
    meta: Record<string, unknown>;
    availableServices: Record<string, unknown>;
    mainAccessory?: KoboldVacuumAccessory;
    timer?: NodeJS.Timeout;
    lastUpdate?: Date;
}
type RefreshSetting = number | 'auto';
export declare class KoboldHomebridgePlatform implements DynamicPlatformPlugin {
    readonly log: Logging;
    readonly config: PlatformConfig;
    readonly api: API;
    readonly Service: typeof Service;
    readonly Characteristic: typeof Characteristic;
    readonly accessories: Map<string, PlatformAccessory>;
    readonly discoveredCacheUUIDs: string[];
    readonly robots: RobotRecord[];
    nextRoom: string | null;
    readonly language: string;
    readonly hiddenServices: string[] | string;
    readonly refresh: RefreshSetting;
    readonly spotCharacteristics: SpotCharacteristicConstructors;
    private readonly token;
    constructor(log: Logging, config: PlatformConfig, api: API);
    configureAccessory(accessory: PlatformAccessory): void;
    isServiceHidden(key: string): boolean;
    private parseRefresh;
    private discoverRobots;
    private loadRobots;
    private setupMainAccessory;
    private prepareAccessory;
    private cleanupAccessories;
    getRobot(serial: string): RobotRecord | undefined;
    updateRobot(serial: string): Promise<void>;
    updateRobotTimer(serial: string): void;
}
export {};
