import Client, { File, Folder, SourceTargetFileNames } from "../client";
import Command from "./command";
/**
 * options to create a download folder command
 */
export interface DownloadFolderCommandOptions {
    /**
     * The source folder with the file structure to be downloaded
     */
    sourceFolder: Folder;
    /**
     * function to filter files
     */
    filterFile?: (file: File) => File | null;
    /**
     * the function to determine the target file name having the sourece file name.
     * If the file should not be downloaded, return an empty string
     * @param {SourceTargetFileNames} fileNames source and target file names
     */
    getTargetFileNameBeforeDownload: (fileNames: SourceTargetFileNames) => string;
}
/**
 * Command to download the contents of a folder from nextcloud to local file system recursively
 */
export default class DownloadFolderCommand extends Command {
    private sourceFolder;
    private getTargetFileNameBeforeDownload;
    private bytesDownloaded;
    private filterFile?;
    /**
     * @param {Client} client the client
     * @param {DownloadFolderCommandOptions} options constructor options
     */
    constructor(client: Client, options: DownloadFolderCommandOptions);
    /**
     * execute the command
     * @async
     * @returns {Promise<void>}
     */
    protected onExecute(): Promise<void>;
    getBytesDownloaded(): number;
}
