import { AnsiLogger } from 'matterbridge/logger';
import { CleanModeSetting } from '../behaviors/roborock.vacuum/core/CleanModeSetting.js';
import { MapInfo } from '../core/application/models/index.js';
import { CleanCommand } from '../model/CleanCommand.js';
import { RoborockIoTApi } from '../roborockCommunication/api/iotClient.js';
import { RawRoomMappingData, RequestMessage } from '../roborockCommunication/models/index.js';
import { AbstractMessageDispatcher } from '../roborockCommunication/protocol/dispatcher/abstractMessageDispatcher.js';
export declare class MessageRoutingService {
    private readonly logger;
    private iotApi?;
    private messageDispatcherMap;
    constructor(logger: AnsiLogger, iotApi?: RoborockIoTApi | undefined);
    /** Set IoT API instance. */
    setIotApi(iotApi: RoborockIoTApi): void;
    registerMessageDispatcher(duid: string, messageDispatcher: AbstractMessageDispatcher): void;
    getMessageDispatcher(duid: string): AbstractMessageDispatcher;
    getMapInfo(duid: string): Promise<MapInfo>;
    getRoomMap(duid: string, activeMap: number): Promise<RawRoomMappingData>;
    getSerialNumber(duid: string): Promise<string>;
    /** Get current cleaning mode settings. */
    getCleanModeData(duid: string): Promise<CleanModeSetting>;
    /** Get vacuum's current room from map. */
    getRoomIdFromMap(duid: string): Promise<number | undefined>;
    /** Change cleaning mode settings. */
    changeCleanMode(duid: string, setting: CleanModeSetting): Promise<void>;
    startClean(duid: string, command: CleanCommand): Promise<void>;
    pauseClean(duid: string): Promise<void>;
    stopAndGoHome(duid: string): Promise<void>;
    resumeClean(duid: string): Promise<void>;
    stopClean(duid: string): Promise<void>;
    playSoundToLocate(duid: string): Promise<void>;
    customGet<T = unknown>(duid: string, request: RequestMessage): Promise<T>;
    customSend(duid: string, request: RequestMessage): Promise<void>;
    clearAll(): void;
}
//# sourceMappingURL=messageRoutingService.d.ts.map