import * as events from 'node:events';
import PQueue from 'p-queue';
import { AcknowledgedResponse } from './responses/AcknowledgedResponse.js';
import { AvailableZonesResponse } from './responses/AvailableZonesResponse.js';
import { ControllerDateGetResponse } from './responses/ControllerDateGetResponse.js';
import { ControllerStateResponse } from './responses/ControllerStateResponse.js';
import { ControllerTimeGetResponse } from './responses/ControllerTimeGetResponse.js';
import { CurrentZoneResponse } from './responses/CurrentZoneResponse.js';
import { IrrigationDelayGetResponse } from './responses/IrrigationDelayGetResponse.js';
import { IrrigationStateResponse } from './responses/IrrigationStateResponse.js';
import { ModelAndVersionResponse } from './responses/ModelAndVersionResponse.js';
import { NotAcknowledgedResponse } from './responses/NotAcknowledgedResponse.js';
import { ProgramZoneStateResponse } from './responses/ProgramZoneStateResponse.js';
import { RainSensorStateResponse } from './responses/RainSensorStateResponse.js';
import { RawResponse } from './responses/RawResponse.js';
import { SerialNumberResponse } from './responses/SerialNumberResponse.js';
export declare class RainBirdClient extends events.EventEmitter {
    private readonly address;
    private readonly password;
    private readonly showRequestResponse;
    private readonly RETRY_DELAY;
    queue: PQueue;
    constructor(address: string, password: string, showRequestResponse: boolean);
    /**
     * Emit a log event.
     * @param level The log level.
     * @param message The log message.
     */
    emitLog(level: string, message: string): void;
    getModelAndVersion(): Promise<ModelAndVersionResponse>;
    getAvailableZones(): Promise<AvailableZonesResponse>;
    getSerialNumber(): Promise<SerialNumberResponse>;
    runProgram(program: number): Promise<AcknowledgedResponse | NotAcknowledgedResponse>;
    runZone(zone: number, duration: number): Promise<AcknowledgedResponse | NotAcknowledgedResponse>;
    advanceZone(): Promise<AcknowledgedResponse | NotAcknowledgedResponse>;
    stopIrrigation(): Promise<AcknowledgedResponse | NotAcknowledgedResponse>;
    getControllerState(): Promise<ControllerStateResponse>;
    getControllerDate(): Promise<ControllerDateGetResponse>;
    setControllerDate(day: number, month: number, year: number): Promise<AcknowledgedResponse>;
    getControllerTime(): Promise<ControllerTimeGetResponse>;
    setControllerTime(hour: number, minute: number, second: number): Promise<AcknowledgedResponse>;
    getIrrigationState(): Promise<IrrigationStateResponse>;
    getRainSensorState(): Promise<RainSensorStateResponse>;
    getCurrentZone(): Promise<CurrentZoneResponse>;
    getProgramZoneState(page?: number): Promise<ProgramZoneStateResponse>;
    getRaw(type: number, page?: number): Promise<RawResponse>;
    getIrrigationDelay(): Promise<IrrigationDelayGetResponse>;
    setIrrigstionDelay(days: number): Promise<AcknowledgedResponse>;
    private sendRequest;
    private getResponse;
    private encrypt;
    private decrypt;
    private formatRequest;
    private createRequestConfig;
    private toBytes;
    private addPadding;
    private delay;
}
//# sourceMappingURL=RainBirdClient.d.ts.map