import { AfterContentInit, ElementRef, EventEmitter, Injector, OnInit } from '@angular/core';
import { AbstractControl, ControlValueAccessor, FormArray, FormBuilder } from '@angular/forms';
import { EvoBaseControl } from '../../common/evo-base-control';
import * as i0 from "@angular/core";
export interface EvoUploadItemClickEvent {
    file: File;
    index: number;
}
export declare class EvoUploadComponent extends EvoBaseControl implements ControlValueAccessor, AfterContentInit, OnInit {
    private formBuilder;
    protected injector: Injector;
    set accept(extensions: string);
    dropZoneLabel: string;
    dropZoneHint: string;
    hideClearButton: boolean;
    hideSubmitButton: boolean;
    clickableFiles: boolean;
    earlyValidation: boolean;
    set fileSizeLimit(fileSize: string);
    maxFiles: number;
    loading: boolean;
    submit: EventEmitter<FileList>;
    addFiles: EventEmitter<FileList>;
    remove: EventEmitter<number>;
    clickFile: EventEmitter<EvoUploadItemClickEvent>;
    inputFileElement: ElementRef;
    isDisabled: boolean;
    filesForm: FormArray;
    filesSizeLimitText: string;
    filesSizeLimitInBytes: number;
    states: {
        isDragOver: boolean;
    };
    acceptedMimeTypes: string[];
    constructor(formBuilder: FormBuilder, injector: Injector);
    ngOnInit(): void;
    ngAfterContentInit(): void;
    onChange: (value: any) => void;
    onTouched: () => void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    writeValue(fileList: FileList | File[]): void;
    getControlError(control: AbstractControl): string;
    handleDragOver(event: Event): void;
    handleDragLeave(event: Event): void;
    handleDrop(event: DragEvent): void;
    handleItemRemove(index: any): void;
    handleResetButtonClick(): void;
    handleSubmitButtonClick(): void;
    inputChange(files: FileList): void;
    earlyValidationFn(files: FileList | File[]): void;
    isFilesLengthValid(files: File[]): boolean;
    isFilesSizeValid(files: File[]): boolean;
    isFilesExtensionValid(files: File[]): boolean;
    processFiles(files: FileList): void;
    wipeUploadList(): void;
    private mergeControlsErrors;
    private subscribeOnFormChanges;
    private fileSizeValidator;
    private fileExtensionValidator;
    private maxFilesValidator;
    static ɵfac: i0.ɵɵFactoryDeclaration<EvoUploadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EvoUploadComponent, "evo-upload", never, { "accept": "accept"; "dropZoneLabel": "dropZoneLabel"; "dropZoneHint": "dropZoneHint"; "hideClearButton": "hideClearButton"; "hideSubmitButton": "hideSubmitButton"; "clickableFiles": "clickableFiles"; "earlyValidation": "earlyValidation"; "fileSizeLimit": "fileSizeLimit"; "maxFiles": "maxFiles"; "loading": "loading"; }, { "submit": "submit"; "addFiles": "addFiles"; "remove": "remove"; "clickFile": "clickFile"; }, never, never>;
}
