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 {
    readonly allowedExtensions: string[];
    readonly rejectedExtensions: string[];
    readonly maxSizeKb?: number;
    readonly maxFiles?: number;
    readonly selectionHelpMessage?: string;
    readonly storeName: string;
    readonly open: boolean;
    readonly fileReplacement: boolean;
    readonly customValidation?: FileUploadCustomValidation;
    $refs: {
        modal: MModal;
    };
    tooltipCancel: string;
    tooltipDelete: string;
    private internalOpen;
    get isDropZoneEnabled(): boolean;
    protected created(): void;
    protected destroyed(): void;
    updateValidationOptions(): void;
    openChanged(open: boolean): void;
    onFilesChanged(): void;
    onFreshlyCompletedFilesChanged(): void;
    onFilesRejected(): void;
    onPortalAfterOpen(): void;
    onMessageClose(): void;
    onAddClick(): void;
    onCancelClick(): void;
    onUploadCancel(file: MFile): void;
    onFileRemove(file: MFile): void;
    onOpen(): void;
    onClose(): void;
    getFileStatus(file: any): string;
    getBadgeState(file: any): string | undefined;
    hasExtensionsRejection(file: any): boolean;
    hasSizeRejection(file: any): boolean;
    hasMaxFilesRejection(file: any): boolean;
    hasCustomValidationRejection(file: MFile): boolean;
    get title(): string;
    get buttonAdd(): string;
    get fileAllowedExtensions(): string;
    get isAddBtnEnabled(): boolean;
    get readyFiles(): MFileExt[];
    get freshlyCompletedFiles(): MFileExt[];
    get uploadingFilesOnly(): MFileExt[];
    get uploadingFiles(): MFileExt[];
    get completedFiles(): MFileExt[];
    get rejectedFiles(): MFileExt[];
    get allFiles(): MFileExt[];
    get hasUploadingFiles(): boolean;
    get hasCompletedFiles(): boolean;
    get buttonCompletedStyle(): string | undefined;
    get hasRejectedFiles(): boolean;
    get hasAllowedExtensions(): boolean;
    get propOpen(): boolean;
    set propOpen(value: boolean);
    get propMaxFiles(): number | undefined;
    get multipleSelection(): boolean;
    get dropEvents(): string[];
}
declare const FileUploadPlugin: PluginObject<any>;
export default FileUploadPlugin;
//# sourceMappingURL=file-upload.d.ts.map