type RetryDelayFunction = (iteration: number) => number;
type RetryTimeoutFunction = (callable: () => void, delayMs: number) => any;
type CancelTimeoutFunction = (timeoutRef: any) => void;
export declare enum RetryFailReason {
    MaxRetries = 0
}
export default class Retry {
    private callable;
    private delayFunction;
    private maxDelayMs;
    private maxRetries;
    private timeoutFunction;
    private cancelTimeoutFunction;
    static linearDelay(baseDelayMs: number, baseIncrementMs?: number): RetryDelayFunction;
    static fibonacciDelay(baseDelayMs: number): RetryDelayFunction;
    static exponentialDelay(baseDelayMs: number, factor?: number): RetryDelayFunction;
    private awaitingTimeout;
    private timeoutRef;
    private iteration;
    private reject;
    constructor(callable: (iteration: number) => void, delayFunction: RetryDelayFunction, maxDelayMs?: number, maxRetries?: number, timeoutFunction?: RetryTimeoutFunction, cancelTimeoutFunction?: CancelTimeoutFunction);
    cancel(): boolean;
    retry(): Retry;
    catch(reject: (reason: RetryFailReason) => void): Retry;
}
export {};
