import { AxiosRequestConfig, AxiosResponse } from 'axios';
import { Observable, Subject } from 'rxjs';
import { RegistryParams } from './interfaces';
export default class Registry<T = any> {
    private params;
    private selfSubject;
    private retriesCountdownTimer?;
    id: number;
    private responseSubject;
    response$: Observable<AxiosResponse<T, any>>;
    retries: number;
    retryDelay: number;
    retriesTimeout?: number;
    tryCounter: number;
    canRetry: boolean;
    finish: boolean;
    requesting: boolean;
    get isCached(): boolean;
    cachedData?: AxiosResponse<T>;
    readonly axiosRequestConfig: AxiosRequestConfig;
    private _cancelToken?;
    constructor(params: RegistryParams, selfSubject: Subject<Registry>, retriesCountdownTimer?: ((origin: Registry) => void) | undefined);
    private finishRetriesCountdownTimer;
    private startRetriesCountdownTimer;
    private countdownStrategy;
    cancel(): void;
    run(): Observable<AxiosResponse<T>>;
    retry(): void;
    static createRegistry<T = any>(params: RegistryParams): Observable<Registry<T>>;
}
