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