/**
* DevExtreme (file_management/provider_base.d.ts)
* Version: 21.1.0 (build 21016-0316)
* Build date: Sat Jan 16 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import '../jquery_augmentation';
import FileSystemItem from './file_system_item';
import UploadInfo from './upload_info';

/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export interface FileSystemProviderBaseOptions<T = FileSystemProviderBase> {
    /**
     */
    dateModifiedExpr?: string | Function;
    /**
     */
    isDirectoryExpr?: string | Function;
    /**
     */
    keyExpr?: string | Function;
    /**
     */
    nameExpr?: string | Function;
    /**
     */
    sizeExpr?: string | Function;
    /**
     */
    thumbnailExpr?: string | Function;
}
/**
 * Warning! This type is used for internal purposes. Do not import it directly.
 */
export default class FileSystemProviderBase {
    constructor(options?: FileSystemProviderBaseOptions)
    /**
     */
    getItems(parentDirectory: FileSystemItem): Promise<Array<FileSystemItem>> & JQueryPromise<Array<FileSystemItem>>;

    /**
     */
    renameItem(item: FileSystemItem, newName: string): Promise<any> & JQueryPromise<any>;

    /**
     */
    createDirectory(parentDirectory: FileSystemItem, name: string): Promise<any> & JQueryPromise<any>;

    /**
     */
    deleteItems(items: Array<FileSystemItem>): Array<Promise<any> & JQueryPromise<any>>;

    /**
     */
    moveItems(items: Array<FileSystemItem>, destinationDirectory: FileSystemItem): Array<Promise<any> & JQueryPromise<any>>;

    /**
     */
    copyItems(items: Array<FileSystemItem>, destinationDirectory: FileSystemItem): Array<Promise<any> & JQueryPromise<any>>;

    /**
     */
    uploadFileChunk(fileData: File, uploadInfo: UploadInfo, destinationDirectory: FileSystemItem): Promise<any> & JQueryPromise<any>;

    /**
     */
    abortFileUpload(fileData: File, uploadInfo: UploadInfo, destinationDirectory: FileSystemItem): Promise<any> & JQueryPromise<any>;

    /**
     */
    downloadItems(items: Array<FileSystemItem>): void;

    /**
     */
    getItemsContent(items: Array<FileSystemItem>): Promise<any> & JQueryPromise<any>;
}
