/// <reference types="node" />
import { DownloaderState } from "./enums/DownloaderState";
import { DownloaderHelperOptions } from "node-downloader-helper";
import { EventEmitter } from 'events';
export declare class Downloader extends EventEmitter {
    simultaneusDownloads: number;
    maxRetries: number;
    checksumAlgo: string;
    state: DownloaderState;
    private lastProgressDispatchedTime;
    private bytesToDownload;
    private bytesDownloaded;
    private bytesToCheck;
    private bytesChecked;
    private filesToDownload;
    private filesDownloaded;
    private downloadProgress;
    private checkProgress;
    private progress;
    private forceDownload;
    private downloadersQueue;
    private downloadersInProgress;
    private readonly downloaderOptions;
    constructor(downloaderOptions?: DownloaderHelperOptions);
    clean(): void;
    private checksumFile;
    private dispatchProgress;
    private isFileNeedUpdate;
    private startDownloader;
    private downloaderStopped;
    private downloaderCompleted;
    private startNextDownloader;
    private removeDownloaderFromQueue;
    addFile(fileUrl: string, installPath: string, fileName?: string | null, checksum?: string | null): Downloader;
    start(forceDownload?: boolean): Promise<void>;
    stop(): void;
    pause(): void;
    resume(): Promise<void>;
    stats(): {
        files: number;
        fileDownloaded: number;
        progress: number;
        progressDownload: number;
        progressCheck: number;
    };
}
export declare function createDownloader(downloaderOptions?: DownloaderHelperOptions): Downloader;
