import { PluginObject } from 'vue';
import { MFile } from '../../utils/file/file';
import { ModulVue } from '../../utils/vue/vue';
import { MModal } from '../modal/modal';
export interface MFileExt extends MFile {
    completeHinted: boolean;
    isOldRejection: boolean;
}
export interface FileUploadCustomValidation {
    /**
     * This function will be ran on every file added during their validation. Must return a Promise.resolved with a boolean stating if the file respects
     * the custom criterias or not.
     */
    validationFunction: (file: MFile) => Promise<boolean>;
    /**
     * Custom validation message displayed when {@link MFileUpload#customValidationFunction} return false.
     */
    message: string;
}
export declare class MFileUpload extends ModulVue {
    allowedExtensions: string[];
    rejectedExtensions: string[];
    maxSizeKb?: number;
    maxFiles?: number;
    selectionHelpMessage?: string;
    storeName: string;
    open: boolean;
    fileReplacement: boolean;
    customValidation?: FileUploadCustomValidation;
    $refs: {
        modal: MModal;
    };
    get isDropZoneEnabled(): boolean;
    private internalOpen;
    private tooltipCancel;
    private tooltipDelete;
    private created;
    private destroyed;
    private updateValidationOptions;
    private openChanged;
    private onFilesChanged;
    private onFreshlyCompletedFilesChanged;
    private onFilesRejected;
    private onPortalAfterOpen;
    private onMessageClose;
    private onAddClick;
    private onCancelClick;
    private onUploadCancel;
    private onFileRemove;
    private onOpen;
    private onClose;
    private getFileStatus;
    private getBadgeState;
    private hasExtensionsRejection;
    private hasSizeRejection;
    private hasMaxFilesRejection;
    hasCustomValidationRejection(file: MFile): boolean;
    get title(): string;
    get buttonAdd(): string;
    private get fileAllowedExtensions();
    private get isAddBtnEnabled();
    private get readyFiles();
    private get freshlyCompletedFiles();
    private get uploadingFilesOnly();
    private get uploadingFiles();
    private get completedFiles();
    private get rejectedFiles();
    private get allFiles();
    private get hasUploadingFiles();
    private get hasCompletedFiles();
    private get buttonCompletedStyle();
    private get hasRejectedFiles();
    private get hasAllowedExtensions();
    private get propOpen();
    private set propOpen(value);
    private get propMaxFiles();
    private get multipleSelection();
    private get dropEvents();
}
declare const FileUploadPlugin: PluginObject<any>;
export default FileUploadPlugin;
//# sourceMappingURL=file-upload.d.ts.map