import type { PlatformMatterbridge } from 'matterbridge';
import { AnsiLogger } from 'matterbridge/logger';
import { vi } from 'vitest';
import type { PlatformConfigManager } from '../../platform/platformConfigManager.js';
import type { RoborockAuthenticateApi } from '../../roborockCommunication/api/authClient.js';
import type { RoborockIoTApi } from '../../roborockCommunication/api/iotClient.js';
import type { UserData } from '../../roborockCommunication/models/index.js';
import { ClientRouter } from '../../roborockCommunication/routing/clientRouter.js';
import type { RoborockVacuumCleaner } from '../../types/roborockVacuumCleaner.js';
/**
 * Shared testing utilities for unit tests.
 * Keep these minimal and side-effect free; tests import what they need.
 */
export declare function createMockLogger(): AnsiLogger;
export interface MockLocalClient {
    connect: ReturnType<typeof vi.fn>;
    disconnect: ReturnType<typeof vi.fn>;
    isConnected: ReturnType<typeof vi.fn>;
}
export declare function makeMockClientRouter(overrides?: Partial<Record<string, unknown>>): ClientRouter;
export declare function makeLocalClientStub(overrides?: Partial<Record<string, unknown>>): {
    connect: import("vitest").Mock<import("@vitest/spy").Procedure>;
    disconnect: import("vitest").Mock<import("@vitest/spy").Procedure>;
    isConnected: import("vitest").Mock<import("@vitest/spy").Procedure>;
    isReady: import("vitest").Mock<import("@vitest/spy").Procedure>;
};
import type { LocalStorage } from 'node-persist';
export declare function createMockLocalStorage(overrides?: Partial<Record<string, unknown>>): LocalStorage;
export declare function createMockConfigManager(overrides?: Partial<PlatformConfigManager>): PlatformConfigManager;
export declare function asPartial<T>(obj: Partial<T>): T;
export declare function asType<T>(v: unknown): T;
export declare function createMockIotApi(overrides?: Partial<RoborockIoTApi>): RoborockIoTApi;
export declare function createMockAuthApi(overrides?: Partial<RoborockAuthenticateApi>): RoborockAuthenticateApi;
import type { DeviceRegistry } from '../../platform/deviceRegistry.js';
export declare function createMockDeviceRegistry(overrides?: Partial<DeviceRegistry>, robots?: Map<string, RoborockVacuumCleaner>): DeviceRegistry;
import type { RoborockService } from '../../services/roborockService.js';
export declare function createMockRoborockService(overrides?: Partial<RoborockService>): RoborockService;
export declare function createMockMatterbridge(overrides?: Partial<PlatformMatterbridge>): PlatformMatterbridge;
export declare function wait(ms: number): Promise<void>;
export declare const mkUser: () => UserData;
export declare function setReadOnlyProperty<T>(obj: T, key: string | symbol, value: unknown): void;
//# sourceMappingURL=testUtils.d.ts.map