/**
 * @fileoverview Exponential backoff implementation for retry logic
 * This module handles delay calculations with exponential growth and jitter.
 */
import { RetryPolicy } from './retry-policy.js';
/**
 * Information about a Retry-After header
 * @interface
 * @public
 */
export interface RetryAfterInfo {
    /** The delay in milliseconds to wait */
    delayMs: number;
    /** The source of the retry information */
    source: 'header-seconds' | 'header-date' | 'exponential';
    /** The original header value if present */
    originalValue?: string;
}
/**
 * Calculate exponential backoff delay with jitter
 * @param attemptNumber The current retry attempt (0-indexed)
 * @param policy The retry policy to use
 * @returns The delay in milliseconds
 * @public
 */
export declare function calculateBackoffDelay(attemptNumber: number, policy: RetryPolicy): number;
/**
 * Parse a Retry-After header value
 * Supports both seconds (e.g., "120") and HTTP-date format
 * @param retryAfterHeader The Retry-After header value
 * @returns The parsed retry information or null if invalid
 * @public
 */
export declare function parseRetryAfter(retryAfterHeader: string | undefined): RetryAfterInfo | null;
/**
 * Calculate the retry delay considering both policy and Retry-After header
 * @param attemptNumber The current retry attempt (0-indexed)
 * @param policy The retry policy to use
 * @param retryAfterHeader Optional Retry-After header value
 * @returns The retry information with calculated delay
 * @public
 */
export declare function calculateRetryDelay(attemptNumber: number, policy: RetryPolicy, retryAfterHeader?: string): RetryAfterInfo;
/**
 * Sleep for a specified duration
 * @param ms The number of milliseconds to sleep
 * @returns A promise that resolves after the specified duration
 * @public
 */
export declare function sleep(ms: number): Promise<void>;
/**
 * Calculate the total maximum possible delay for a retry policy
 * This is useful for timeouts and resource planning
 * @param policy The retry policy
 * @returns The maximum total delay in milliseconds
 * @public
 */
export declare function calculateMaxTotalDelay(policy: RetryPolicy): number;
/**
 * Check if we should continue retrying based on elapsed time
 * @param startTime The timestamp when retries started
 * @param maxDuration Maximum duration allowed for retries (ms)
 * @returns True if we can continue retrying
 * @public
 */
export declare function canContinueRetrying(startTime: number, maxDuration: number): boolean;
