import { AxiosError, AxiosInstance, AxiosRequestConfig } from 'axios'; /** * Configuration for the Axios `request` method. */ export interface RetryConfig { /** * The number of times to retry the request. Defaults to 3. */ retry?: number; /** * The number of retries already attempted. */ currentRetryAttempt?: number; /** * The amount of time to initially delay the retry. Defaults to 100. */ retryDelay?: number; /** * The instance of the axios object to which the interceptor is attached. */ instance?: AxiosInstance; /** * The HTTP Methods that will be automatically retried. * Defaults to ['GET','PUT','HEAD','OPTIONS','DELETE'] */ httpMethodsToRetry?: string[]; /** * The HTTP response status codes that will automatically be retried. * Defaults to: [[100, 199], [429, 429], [500, 599]] */ statusCodesToRetry?: number[][]; /** * Function to invoke when a retry attempt is made. */ onRetryAttempt?: (err: AxiosError) => void; /** * Function to invoke which determines if you should retry */ shouldRetry?: (err: AxiosError) => boolean; /** * When there is no response, the number of retries to attempt. Defaults to 2. */ noResponseRetries?: number; } export declare type RaxConfig = { raxConfig: RetryConfig; } & AxiosRequestConfig; /** * Attach the interceptor to the Axios instance. * @param instance The optional Axios instance on which to attach the * interceptor. * @returns The id of the interceptor attached to the axios instance. */ export declare function attach(instance?: AxiosInstance): number; /** * Eject the Axios interceptor that is providing retry capabilities. * @param interceptorId The interceptorId provided in the config. * @param instance The axios instance using this interceptor. */ export declare function detach(interceptorId: number, instance?: AxiosInstance): void; /** * Acquire the raxConfig object from an AxiosError if available. * @param err The Axios error with a config object. */ export declare function getConfig(err: AxiosError): RetryConfig | undefined;