/// <reference types="flowjs" />
import { TaskQueue } from 'aurelia-framework';
import { EventAggregator } from 'aurelia-event-aggregator';
import { Box } from '../../modules/box';
import { I18N } from 'aurelia-i18n';
import { CustomLogger } from '../../modules/custom-logger';
import { CompressorOptions } from '../../model/common-model';
import { AuthService } from '../../security/auth-service';
import { RemoteFileStorage } from './../../services/file-storage-service';
export declare enum ExistenceAction {
    None = 0,
    Replace = 1,
    Duplicate = 2,
    Cancel = 3
}
export declare class FileFlow {
    private ea;
    constructor(fileFlow: flowjs.FlowFile, ea: EventAggregator);
    name: string;
    displayName: string;
    size: number;
    averageSpeed: number;
    speed: number;
    isPaused: boolean;
    isReuploaded: boolean;
    isCanceled: boolean;
    progress: number;
    isComplete: boolean;
    errorMessage: string;
    isError: boolean;
    get isUploading(): boolean;
    previewSrc: string | ArrayBuffer;
    linkEntity: any;
    serverId: number;
    url: string;
    thumbnail: any;
    log: any;
    uid: string;
    entityId: number;
    private flow;
    fileFlow: flowjs.FlowFile;
    pause(): void;
    resume(): void;
    cancel(): void;
    retry(): void;
}
export declare class FlowHelper {
    logger: CustomLogger;
    private eventAggregator;
    private acceptedExtensions;
    private compressorOptions;
    box: Box;
    fileUploaded: (ff: FileFlow) => void;
    fileAdded: (ff: FileFlow) => Promise<void>;
    checkExistence: (file: any) => Promise<ExistenceAction>;
    uploadComplete: (ffArray: Array<FileFlow>) => void;
    showLoader: (value: boolean) => void;
    isUploading: boolean;
    progress: number;
    private innerUploadingFiles;
    private flow;
    i18n: I18N;
    private fileTypes;
    folderName: string;
    private params;
    useUniqueName: boolean;
    resizePicture: boolean;
    autoConvert: boolean;
    pictureQuality: number;
    constructor(logger: CustomLogger, target: string, eventAggregator: EventAggregator, allowDuplicateUploads: boolean, confirmUploadFn: Function, acceptedExtensions: string, resizePicture: boolean, folderName: string, accessToken: any, compressorOptions: CompressorOptions, autoConvert?: boolean, useUniqueName?: boolean, pictureQuality?: number);
    private processArray;
    private convertHeicToJpeg;
    private checkArray;
    private createAndReplaceNewFileFlow;
    resizeImage(flowFile: any): Promise<any>;
    askToKeep(file: flowjs.FlowFile): Promise<{
        file: import("flowjs").FlowFile;
        toKeep: ExistenceAction;
    }>;
    setFileTypes(acceptedExtensions: string): void;
    resetFiles(): void;
    private get uploadingFiles();
    assignBrowse(element: HTMLElement, attributes: any): void;
    assignDrop(element: HTMLElement): void;
    pauseAll(): void;
    cancelAll(): void;
    resumeAll(): void;
}
export declare class FlowUploader {
    logger: CustomLogger;
    private eventAggregator;
    private taskQueue;
    private box;
    private userService;
    private i18n;
    private fileStorageService;
    value: any;
    dropzone: HTMLElement;
    target: string;
    hintText: string;
    uploadButton: HTMLElement;
    allowMultipleUpload: boolean;
    accept: "all" | "file" | "picture" | "office" | string;
    fileUploadedFn: (args: {
        fileUploaded: FileFlow;
    }) => void;
    confirmUploadFn: Function;
    fileAddedFn: (file: FileFlow) => Promise<any>;
    uploadCompleteFn: Function;
    resizePicture: boolean;
    folderName: string;
    useUniqueName: boolean;
    compressorOptions: CompressorOptions;
    autoConvert: boolean;
    allowMultipleUploadBtn: boolean;
    showOverlay: boolean;
    ignoreFileExistence: boolean;
    pictureQuality: number;
    displayLoader: boolean;
    browseButtonAssigned: boolean;
    divContainer: Element;
    input: HTMLInputElement;
    browseButtons: Array<HTMLElement>;
    flowHelper: FlowHelper;
    dropzoneOverlay: Element;
    dropZoneTimeout: any;
    constructor(logger: CustomLogger, eventAggregator: EventAggregator, taskQueue: TaskQueue, box: Box, userService: AuthService, i18n: I18N, fileStorageService: RemoteFileStorage.Service);
    private init;
    attached(): Promise<void>;
    private showLoader;
    highlightDropzones(): void;
    checkExistence(file: flowjs.FlowFile): Promise<ExistenceAction>;
    internalFileAdded(file: FileFlow): Promise<void>;
    getAcceptExpression(): string;
    uploadButtonChanged(): Promise<void>;
    folderNameChanged(): void;
    resizePictureChanged(newValue: any, oldValue: any): void;
    private buildAcceptWithAndroidWorkaround;
}
