import { DownloadContext } from '../context';
import { IDownloadApiClient } from '../external';
import { DownloadTransaction } from '../models';
import { IDownloadFilesRepository, IDownloadTransactionsRepository } from '../repositories';
import { IStorage } from '../storage';
import { ILocker, ILogger, IRetrier, IUserPromptService } from '../utilities';
import { BackgroundJob } from './BackgroundJob';

export declare class TransactionFilesFetcher extends BackgroundJob {
    private transactionsRepo;
    private filesRepo;
    private apiClient;
    private retrier;
    private storage;
    private locker;
    static readonly type: string;
    private filePathFixer;
    constructor(transactionsRepo: IDownloadTransactionsRepository, filesRepo: IDownloadFilesRepository, apiClient: IDownloadApiClient, retrier: IRetrier, storage: IStorage, locker: ILocker, userPromptService: IUserPromptService, logger: ILogger, context: DownloadContext);
    static logsProvider: {
        error: {
            allFilesMissing: (transaction: DownloadTransaction) => string;
        };
        info: {
            numberOfFilesInTransaction: (transaction: DownloadTransaction, numberOfFiles: number) => string;
        };
        warn: {
            noFilesInTransaction: (transaction: DownloadTransaction) => string;
            someFilesMissing: (transaction: DownloadTransaction, missingFilePaths: string[]) => string;
        };
    };
    private getDownloadFileState;
    protected processInternal(signal: AbortSignal): Promise<void>;
}
