homebridge-aeg-robot
Version:
AEG RX9 / Electrolux Pure i9 robot vacuum plugin for Homebridge
31 lines • 1.44 kB
TypeScript
import { Logger } from 'homebridge';
import { AEGAPI } from './aegapi.js';
import { ApplianceId, Appliances } from './aegapi-types.js';
interface Failure {
logPrefix: string;
testName: string;
error: unknown;
}
type TestableMethod = (...args: never[]) => unknown;
type TestableMethodNames<API> = keyof {
[K in keyof API as API[K] extends TestableMethod ? K : never]: unknown;
};
type Tester<API> = <Method extends TestableMethodNames<API>>(method: Method, ...args: Parameters<Extract<API[Method], TestableMethod>>) => Promise<ReturnType<Extract<API[Method], TestableMethod>> | undefined>;
export declare class AEGAPITest {
readonly log: Logger;
readonly api: AEGAPI;
readonly unsafe: boolean;
tests: number;
failures: Failure[];
constructor(log: Logger, api: AEGAPI, unsafe: boolean);
runAllTests(): Promise<void>;
runSafeGenericTests(): Promise<Appliances | undefined>;
runSafeRX9Tests(applianceId: ApplianceId): Promise<void>;
runUnsafeRX9Tests(applianceId: ApplianceId): Promise<void>;
selectRX9(appliances?: Appliances): ApplianceId[];
makeTester<API>(api: API): Tester<API>;
test<API, Method extends TestableMethodNames<API>>(api: API, method: Method, ...args: Parameters<Extract<API[Method], TestableMethod>>): Promise<ReturnType<Extract<API[Method], TestableMethod>> | undefined>;
summariseResults(): void;
}
export {};
//# sourceMappingURL=aegapi-test.d.ts.map