import * as events from 'node:events';
interface RainBirdMetaData {
    modelNumber: number;
    model: string;
    version: string;
    serialNumber: string;
    zones: number[];
}
export declare class RainBirdService extends events.EventEmitter {
    private readonly options;
    private readonly _client;
    private _metadata;
    private _currentZoneStateSupported;
    private _advanceZoneSupported;
    private _currentZoneId;
    private _currentProgramId?;
    private _zones;
    private _rainSetPointReached;
    private _statusObsersable;
    private _statusTimerSubscription?;
    private _statusRefreshSubject;
    private _syncTime;
    private _lastSupportWarning;
    private zoneQueue;
    private readonly ESP_ME3;
    constructor(options: {
        address: string;
        password: string;
        refreshRate?: number;
        showRequestResponse: boolean;
        syncTime: boolean;
    });
    /**
     * Emit a log event.
     * @param level The log level.
     * @param message The log message.
     */
    emitLog(level: string, message: string): void;
    init(): Promise<RainBirdMetaData>;
    get model(): string;
    get version(): string;
    get serialNumber(): string;
    get zones(): number[];
    get rainSetPointReached(): boolean;
    isActive(zone?: number): boolean;
    isInUse(zone?: number): boolean;
    remainingDuration(zone?: number): number;
    private calcRemainingDuration;
    activateZone(zone: number, duration: number): void;
    deactivateZone(zone: number): Promise<void>;
    deactivateAllZones(): void;
    enableZone(zone: number, enabled: boolean): void;
    startProgram(programId: string): Promise<void>;
    isProgramRunning(programId: string): boolean | undefined;
    private getProgramNumber;
    private getProgramId;
    stopIrrigation(): Promise<void>;
    private startZone;
    private setStatusTimer;
    private performStatusRefresh;
    private getControllerDateTime;
    private setControllerDateTime;
    getIrrigationDelay(): Promise<number>;
    setIrrigationDelay(days: number): Promise<void>;
    private updateStatus;
    private formatTime;
    private getRainBirdState;
    private getRainBirdStateTM2;
    private getRainBirdStateME3;
    private getRainBirdStateME3PendingZones;
    private getRainBirdStateRZXe;
    private getRainBirdStateDefault;
    private displaySupportWarning;
    refreshStatus(): void;
}
export {};
//# sourceMappingURL=RainBirdService.d.ts.map