import type { PipelinePolicy } from "../pipeline.js"; import { type AzureLogger } from "@azure/logger"; import type { PipelineResponse } from "../interfaces.js"; import type { RestError } from "../restError.js"; /** * Information provided to the retry strategy about the current progress of the retry policy. */ export interface RetryInformation { /** * A {@link PipelineResponse}, if the last retry attempt succeeded. */ response?: PipelineResponse; /** * A {@link RestError}, if the last retry attempt failed. */ responseError?: RestError; /** * Total number of retries so far. */ retryCount: number; } /** * Properties that can modify the behavior of the retry policy. */ export interface RetryModifiers { /** * If true, allows skipping the current strategy from running on the retry policy. */ skipStrategy?: boolean; /** * Indicates to retry against this URL. */ redirectTo?: string; /** * Controls whether to retry in a given number of milliseconds. * If provided, a new retry will be attempted. */ retryAfterInMs?: number; /** * Indicates to throw this error instead of retrying. */ errorToThrow?: RestError; } /** * A retry strategy is intended to define whether to retry or not, and how to retry. */ export interface RetryStrategy { /** * Name of the retry strategy. Used for logging. */ name: string; /** * Logger. If it's not provided, a default logger for all retry strategies is used. */ logger?: AzureLogger; /** * Function that determines how to proceed with the subsequent requests. * @param state - Retry state */ retry(state: RetryInformation): RetryModifiers; } /** * Options to the {@link retryPolicy} */ export interface RetryPolicyOptions { /** * Maximum number of retries. If not specified, it will limit to 3 retries. */ maxRetries?: number; /** * Logger. If it's not provided, a default logger is used. */ logger?: AzureLogger; } /** * retryPolicy is a generic policy to enable retrying requests when certain conditions are met */ export declare function retryPolicy(strategies: RetryStrategy[], options?: RetryPolicyOptions): PipelinePolicy; //# sourceMappingURL=retryPolicy.d.ts.map