import { Logger } from 'homebridge';
import { HomeWizardApiBasicInformationResponse, HomeWizardApiIdentifyResponse, HomeWizardApiStatePutParams, HomeWizardApiStateResponse, EnergySocketDataResponse, P1MeterDataResponse, HomeWizardDeviceTypes } from './types';
import { Dispatcher } from 'undici';
export declare class HomeWizardApiError extends Error {
    constructor(message: string);
}
export declare class HomeWizardApiResponseError extends HomeWizardApiError {
    url: string;
    statusCode: number;
    response: string;
    constructor(message: string, url: string, statusCode: number, response: string);
}
interface HomeWizardApiOptions {
    apiVersion?: 'v1';
    logger: Logger;
}
export declare class HomeWizardApi {
    private readonly log;
    private readonly url;
    private apiVersion;
    constructor(url: string, options: HomeWizardApiOptions);
    get endpoints(): {
        basic: string;
        state: string;
        identify: string;
        data: string;
    };
    get loggerPrefix(): string;
    isResponseOk(response: Dispatcher.ResponseData): boolean;
    throwApiResponseError(url: string, method: string, response: Dispatcher.ResponseData): Promise<never>;
    getBasicInformation(): Promise<HomeWizardApiBasicInformationResponse>;
    getState(): Promise<HomeWizardApiStateResponse>;
    putState<Keys extends keyof HomeWizardApiStateResponse>(params: HomeWizardApiStatePutParams<Keys>): Promise<HomeWizardApiStatePutParams<Keys>>;
    putIdentify(firmwareVersion: number | null): Promise<HomeWizardApiIdentifyResponse>;
    getData<T extends EnergySocketDataResponse>(productType: HomeWizardDeviceTypes.WIFI_ENERGY_SOCKET, disableLogs?: boolean): Promise<T>;
    getData<T extends P1MeterDataResponse>(productType: HomeWizardDeviceTypes.WIFI_PI_METER, disableLogs?: boolean): Promise<T>;
}
export {};
//# sourceMappingURL=api.d.ts.map