matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
79 lines • 4.21 kB
TypeScript
import { AnsiLogger } from 'matterbridge/logger';
import { ServiceArea } from 'matterbridge/matter/clusters';
import { MapInfo, RoomIndexMap } from '../core/application/models/index.js';
import { type SupportedAreasResult } from '../initialData/getSupportedAreas.js';
import { RoborockIoTApi } from '../roborockCommunication/api/iotClient.js';
import { RawRoomMappingData, RoomDto } from '../roborockCommunication/models/home/index.js';
import { Scene } from '../roborockCommunication/models/index.js';
import { MessageRoutingService } from './index.js';
/** Manages cleaning areas, rooms, maps, and scenes. */
export declare class AreaManagementService {
private readonly logger;
private readonly serviceRouting;
private readonly liveMapUpdates;
private readonly enableMultipleMap;
private supportedAreas;
private supportedMaps;
private supportedRoutines;
private selectedAreas;
private progress;
private lastActivelyCleaningState;
private supportedAreaIndexMaps;
private areasListeners;
private refreshIntervals;
private deviceRooms;
private iotApi;
private mapInfoCache;
private v1RoomResolutionCache;
constructor(logger: AnsiLogger, serviceRouting: MessageRoutingService | undefined, liveMapUpdates?: boolean, enableMultipleMap?: boolean);
private getPrimaryMapId;
isMultipleMapEnabled(): boolean;
setIotApi(iotApi: RoborockIoTApi): void;
setDeviceRooms(duid: string, rooms: RoomDto[]): void;
setSelectedAreas(duid: string, selectedAreas: number[]): void;
getSelectedAreas(duid: string): number[];
setProgress(duid: string, progress: ServiceArea.Progress[]): void;
getProgress(duid: string): ServiceArea.Progress[];
/** Store the "was actively cleaning" state for a device. */
setLastActivelyCleaningState(duid: string, isActivelyCleaning: boolean): void;
/** Retrieve the stored "was actively cleaning" state for a device. */
getLastActivelyCleaningState(duid: string): boolean;
registerAreasListener(duid: string, callback: (areas: ServiceArea.Area[], maps: ServiceArea.Map[]) => void): void;
setSupportedMaps(duid: string, maps: ServiceArea.Map[]): void;
getSupportedMaps(duid: string): ServiceArea.Map[];
setSupportedAreas(duid: string, supportedAreas: ServiceArea.Area[]): void;
setSupportedAreaIndexMap(duid: string, indexMap: RoomIndexMap): void;
setSupportedRoutines(duid: string, routineAsRooms: ServiceArea.Area[]): void;
getSupportedAreas(duid: string): ServiceArea.Area[];
getSupportedAreasIndexMap(duid: string): RoomIndexMap | undefined;
mergeSupportedAreasForMap(duid: string, mapId: number, incomingAreas: ServiceArea.Area[], incomingIndexMap: RoomIndexMap): void;
getSupportedRoutines(duid: string): ServiceArea.Area[] | undefined;
private fetchAndApplyMapInfo;
private applyAreasResult;
/** Publish areas/maps from a computed {@link SupportedAreasResult} (live push path). */
applySupportedAreasResult(duid: string, result: SupportedAreasResult, mergeMapId?: number): void;
private isPhysicalMapId;
private hasAreasForMap;
private applyRoomMapData;
private fetchAndApplyRoomMap;
ensureAreasForMap(duid: string, mapId: number, options?: {
switchFirst?: boolean;
}): Promise<boolean>;
getMapInfo(duid: string): Promise<MapInfo | undefined>;
getRoomMap(duid: string, activeMap: number): Promise<RawRoomMappingData | undefined>;
resolveInitialAreas(duid: string): Promise<{
supportedAreas: ServiceArea.Area[];
supportedMaps: ServiceArea.Map[];
}>;
private sortSupportedAreasByMap;
startPeriodicRefresh(duid: string, intervalMs?: number): void;
stopPeriodicRefresh(duid: string): void;
getScenes(homeId: number): Promise<Scene[] | undefined>;
startScene(sceneId: number): Promise<unknown>;
setV1ResolvedSegment(duid: string, segmentId: number): void;
getV1ResolvedSegment(duid: string, maxAgeMs?: number): number | undefined;
requestV1MapRefresh(duid: string): Promise<void>;
/** Clear all area management data and stop all refresh timers. */
clearAll(): void;
}
//# sourceMappingURL=areaManagementService.d.ts.map