/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { Duration } from "#time/Duration.js";
import { Entropy } from "#util/Entropy.js";
/**
 * An iterable of retry values based on a scheduling configuration.
 */
export declare class RetrySchedule {
    #private;
    readonly config: RetrySchedule.Configuration;
    constructor(entropy: Entropy, config: RetrySchedule.Configuration);
    /**
     * Yields intervals.
     *
     * Will yield indefinitely until canceled unless {@link config} specifies a timeout.
     */
    [Symbol.iterator](): Generator<Duration, void, unknown>;
}
export declare namespace RetrySchedule {
    /**
     * Configuration parameters for retry schedule.
     */
    interface Configuration {
        /**
         * Overall timeout.
         *
         * Leave undefined to allow unlimited retries.
         */
        readonly timeout?: Duration;
        /**
         * Maximum number of occurrences (including first).
         *
         * Set to zero to disable transmission completely; leave undefined to allow any number of transmissions.
         */
        readonly maximumCount?: number;
        /**
         * Interval between first request and final interval.
         *
         * Defaults to 1s.
         */
        readonly initialInterval?: Duration;
        /**
         * Multiplier for subsequent retries.
         *
         * Defaults to 2.
         */
        readonly backoffFactor?: number;
        /**
         * Maximum interval between retries (excluding jitter).
         *
         * Leave undefined for interval to allow interval to grow continuously.
         */
        readonly maximumInterval?: Duration;
        /**
         * Multiplier for retry jitter.
         *
         * Leave undefined to disable jitter.
         */
        readonly jitterFactor?: number;
    }
    /**
     * Create a full configuration with defaults.
     */
    function Configuration(defaults: Configuration, config?: Configuration): {
        timeout?: Duration;
        maximumCount?: number;
        initialInterval?: Duration;
        backoffFactor?: number;
        maximumInterval?: Duration;
        jitterFactor?: number;
    };
}
//# sourceMappingURL=RetrySchedule.d.ts.map