import Dropzone from 'dropzone';
declare const EventEmitter: any;
export interface ImageUploadProps {
    size: {
        width: number;
        height: number;
        alert: string;
    };
    modal: {
        url: string;
        title: string;
        fileHelp: string;
        maxFilesize: number;
        button: {
            action: string;
            close: string;
        };
    };
}
export default class Upload extends EventEmitter {
    protected props: ImageUploadProps;
    private dropzone;
    private uploadContainerRef;
    private previewContainerRef;
    private submitBtnRef;
    private submitBtnLaddaRef;
    static EVENT_uploadSuccess: string;
    static create(props: ImageUploadProps): Upload;
    constructor(props: ImageUploadProps);
    openModal(): void;
    makeModal(): void;
    setModalShow(show: boolean): void;
    setUploadShow(show: boolean): void;
    setPreviewShow(show: boolean): void;
    setButtonLoading(buttonLoading: boolean): void;
    setButtonDisabled(disabled: boolean): void;
    private initDropzone;
    handleDropzoneRemoveAllFiles(): void;
    handleDropzoneAccept(file: Dropzone.DropzoneFile, done: any): void;
    handleDropzoneSending(formData: FormData): void;
    handleDropzoneCanceled(): void;
    handleDropzoneSuccess(file: Dropzone.DropzoneFile, data: any): void;
    protected getPreviewImage(): HTMLImageElement;
    private destroyModal;
    private runProcessUpload;
    protected getDataUrl(file: Blob, callback: (data: string) => void): void;
    protected previewFile(dataUrl: string, callback: (width: number, height: number) => void): void;
}
export {};
