import { type Lock, type LockRenewalService } from './lock.js';
import { Duration } from '../time/duration.js';
/**
 * Implements a lease renewal service which utilizes a setInterval() based approach to renew leases at regular intervals.
 * The renewal delay is calculated as half the duration of the lease in seconds.
 */
export declare class IntervalLockRenewalService implements LockRenewalService {
    /** The internal registry used to track all non-cancelled lease renewals. */
    private readonly _scheduledLeases;
    /**
     * Constructs a new interval lease renewal service.
     */
    constructor();
    /**
     * Determines if a lease renewal is scheduled.
     * This implementation uses the internal registry to track all non-cancelled lease renewals.
     *
     * @param scheduleId - the unique identifier of the scheduled lease renewal.
     * @returns true if the lease renewal is scheduled; false otherwise.
     */
    isScheduled(scheduleId: number): Promise<boolean>;
    /**
     * Schedules a lock renewal.
     * This implementation uses the setInterval() method to renew the lock at regular intervals.
     *
     * @param lock - the lock to be renewed.
     * @returns the unique identifier of the scheduled lock renewal. The unique identifier is the ID of the setInterval() timeout.
     */
    schedule(lock: Lock): Promise<number>;
    /**
     * Cancels a scheduled lease renewal.
     * This implementation uses the clearInterval() method to cancel the scheduled lease renewal.
     * Due to the nature of the setInterval()/clearInterval() methods, the scheduled event may still fire at least once
     * after the cancellation.
     *
     * @param scheduleId - the unique identifier of the scheduled lease renewal. The unique identifier is the ID of the setInterval() timeout.
     * @returns true if the lease renewal was previously scheduled; false otherwise.
     */
    cancel(scheduleId: number): Promise<boolean>;
    /**
     * Cancels all scheduled lease renewals.
     * This implementation cancels all scheduled lease renewals by iterating over the internal registry and clearing each timeout.
     * @returns a map of the unique identifiers of the scheduled lease renewals and their cancellation status.
     */
    cancelAll(): Promise<Map<number, boolean>>;
    /**
     * Calculates the delay before the next lock renewal.
     * This implementation calculates the renewal delay as half the duration of the lock.
     *
     * @param lock - the lock to be renewed.
     * @returns the delay in milliseconds.
     */
    calculateRenewalDelay(lock: Lock): Duration;
}
