import { Observable } from 'rxjs';
import { BasicLogger } from './logging';
interface IErrorInfo {
    error: Error;
    numberOfErrors: number;
    timeBeforeNextRetry: number;
}
export declare type RetryOpts = Partial<IRetryOptsAll>;
interface IRetryOptsAll {
    shouldRetry: (info: IErrorInfo) => boolean;
    sourceDescription: string;
    resetErrorsOnNext: boolean;
    waitTimeOnBackoff: number;
    waitTimeOnFirstError: number;
    minWaitTime: number;
    maxWaitTime: number;
    logger?: BasicLogger;
}
export declare function retryWithBackoff<T>(optsRaw?: RetryOpts): (source: Observable<T>) => Observable<T>;
export {};
