import { Logging } from 'homebridge'; import { OtoClientConfig, OtoController, OtoTransport, OtoZone } from './transport'; export declare class CloudTransport implements OtoTransport { private readonly log; private readonly http; private readonly email; private readonly password; private readonly wateringQuantity; private readonly wateringQuantities; private idToken; private refreshToken; private uid; private tokenExpiry; private readonly statusCache; constructor(config: OtoClientConfig, log: Logging); authenticate(): Promise; private refreshIdToken; private ensureToken; private ensureUid; private authHeaders; getControllers(): Promise; getZones(controllerId: string): Promise; getZoneStatus(controllerId: string, zoneId: string): Promise; /** * Start immediate per-zone watering ("Water Now"). * * Mirrors exactly what the OTO app sends: a POST to the Scheduler's * /manual-start with { uid, deviceId, zoneId, wateringQuantity }. There is * no zone_group_id and no Authorization header required — the backend * derives runtime from the watering DEPTH (mm) using the zone's own * precipitation rate. * * `durationSeconds` (HomeKit SetDuration) is intentionally ignored: OTO is * depth-based, not time-based. The depth comes from config (per-zone * `wateringQuantities[zoneId]`, else the global `wateringQuantity`). */ startZone(controllerId: string, zoneId: string, _durationSeconds: number): Promise; /** * Stop watering. * * No dedicated stop endpoint was found during API exploration. Pushing the * current schedule via the Scheduler causes the device to re-sync, which * may abort the active run. The device stops on its own at segment end. */ stopZone(controllerId: string, _zoneId: string): Promise; private fetchDeviceStatus; } //# sourceMappingURL=cloudTransport.d.ts.map