/** * Type of jitter to apply to the delay. * - `"none"`: no jitter is applied * - `"full"`: full jitter is applied (random value between `0` and `delay`) */ export declare type JitterType = "none" | "full"; export declare type BackoffOptions = Partial; export interface IBackOffOptions { /** * Decides whether the `startingDelay` should be applied before the first call. * If `false`, the first call will occur without a delay. * @defaultValue `false` */ delayFirstAttempt: boolean; /** * Decides whether a [jitter](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/) * should be applied to the delay. Possible values are `"full"` and `"none"`. * @defaultValue `"none"` */ jitter: JitterType; /** * The maximum delay, in milliseconds, between two consecutive attempts. * @defaultValue `Infinity` */ maxDelay: number; /** * The maximum number of times to attempt the function. * Must be at least `1`. * @defaultValue `10` */ numOfAttempts: number; /** * The `retry` function can be used to run logic after every failed attempt (e.g. logging a message, * assessing the last error, etc.). * It is called with the last error and the upcoming attempt number. * Returning `true` will retry the function as long as the `numOfAttempts` has not been exceeded. * Returning `false` will end the execution. * @defaultValue a function that always returns `true`. * @param e The last error thrown by the function. * @param attemptNumber The upcoming attempt number. * @returns `true` to retry the function, `false` to end the execution */ retry: (e: any, attemptNumber: number) => boolean | Promise; /** * The delay, in milliseconds, before executing the function for the first time. * @defaultValue `100` */ startingDelay: number; /** * The `startingDelay` is multiplied by the `timeMultiple` to increase the delay between reattempts. * @defaultValue `2` */ timeMultiple: number; } export declare function getSanitizedOptions(options: BackoffOptions): IBackOffOptions;