import { Logger } from 'homebridge';
import { Device } from './device.js';
import * as Types from './types.js';
export declare class FlumeAPI {
    private readonly username;
    private readonly password;
    private readonly clientId;
    private readonly clientSecret;
    private readonly refreshInterval;
    private readonly units;
    private storagePath;
    private readonly log;
    private readonly verbose;
    private _auth?;
    readonly locationNames: Map<string, string>;
    private readonly _devices;
    private retryIndex;
    private syncTimer;
    private lastFullRefresh;
    private constructor();
    static connect(username: string, password: string, clientId: string, clientSecret: string, refreshInterval: number, units: Types.VolumeUnits, storagePath: string, log: Logger, verbose: boolean): Promise<FlumeAPI>;
    get devices(): Device[];
    teardown(): void;
    private do;
    private retryIfPossible;
    private get auth();
    private set auth(value);
    private authenticate;
    private authRefresh;
    private refreshAuthIfNecessary;
    private startSyncTimer;
    private getLocations;
    private getDevices;
    private getDeviceData;
    getLeakData(deviceId: string): Promise<Types.LeakData | null>;
    private getUsageData;
    private synchronizeData;
    private logHTTP;
    private logIfVerbose;
}
