import { IFileUploader } from "./IFileUploader";
import { IWebComponentInstance } from "../..";
import "./FileUploader.css";
import { OmniaTheming } from "../OmniaTheming";
import { FileUploaderLocalization } from "./loc/localize";
import { FileUploaderItemHandler, FileUploaderItemStatus } from "../../models";
import { OmniaUxLocalization } from "../UxModels";
import { VueComponentBase } from "..";
interface InternalFile {
    id: string;
    status: FileUploaderItemStatus;
    progressPercent: number;
    fileSizeLabel: string;
    customFileName: string;
    label: {
        main: string;
        sub: string;
    };
    file: File;
}
export declare class FileUploader extends VueComponentBase implements IWebComponentInstance, IFileUploader {
    dark: boolean;
    disabled: boolean;
    onFileChanged: (allFiles: Array<FileUploaderItemHandler>) => void;
    enablePasteClipboardData: boolean;
    multiple: boolean;
    limitedFileTypes: Array<string>;
    limitedFileSize?: number;
    hideOverlayIcon: boolean;
    omniaTheming: OmniaTheming;
    loc: FileUploaderLocalization.locInterface;
    omniaUxLoc: OmniaUxLocalization;
    styles: {
        table?: any;
        cursor?: any;
        overlay?: any;
        wrapper?: any;
        errorMessage?: any;
        browseLabel?: any;
        dragOver?: any;
        iconColumn?: any;
        fileTitle?: any;
        fileSize?: any;
        mainLabel?: any;
        subLabel?: any;
        labelColumnError?: any;
        hintForEditFileName?: any;
        fixButton?: any;
        instructionText?: any;
        instructionIcon?: any;
    };
    customFileName: string;
    selectingFileId: string;
    selectingFileExtension: string;
    uniqueId: string;
    addedFiles: Array<InternalFile>;
    dragOver: boolean;
    fileInputKey: string;
    rejectFileSize: boolean;
    $refs: {
        inputUpload: any;
    };
    beforeDestroy(): void;
    created(): void;
    mounted(): void;
    initDropArea(): void;
    getValidFile(files: Array<File>): File[];
    handlePaste(e: ClipboardEvent): void;
    handleDrop(e: any): void;
    addFiles(files: Array<File>): void;
    removeFile(file: InternalFile, triggerOnChange?: boolean): void;
    addedFilesChanged(): void;
    formatBytes(bytes: any, decimals?: number): string;
    onFileInputChanged(e: any): void;
    selectFileToEdit(file: InternalFile): void;
    onEditFileNameAction(e: MouseEvent, save: boolean, file: InternalFile): void;
    render(): VueTsxSupport.JSX.Element;
}
export {};
