import { ElementRef, OnInit, QueryList, EventEmitter, AfterViewInit, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { EuiTemplateDirective } from '@eui/components/directives';
import { EuiUploadedFileInterface } from './models/uploaded-file.model';
import * as i0 from "@angular/core";
/**
 * @description
 * `eui-file-upload` allows the user to upload a file to a server. It can be use in the classic simple file way or with a drag and drop feature.
 */
export declare class EuiFileUploadComponent implements ControlValueAccessor, OnInit, AfterViewInit {
    /**
     * Sets the `data-e2e` attribute for the host element.
     *
     * @default 'eui-file-upload'
     */
    e2eAttr: string;
    /**
     * In combination with `hasProgressBar`. Sets the progress of upload to be displayed by the progress bar.
     *
     * @type {number}
     */
    progress: number;
    /**
     * A comma separated list of extension allowed to be uploaded by the user.
     *
     * @default '*' (all)
     */
    accept: string;
    /**
     * The maximum number of file the user is allowed to upload
     *
     * @type {number}
     * @default null (no maximum)
     */
    maxFiles: number;
    /**
     * Event emitted when a file is drag and dropped in the component.
     */
    fileDrop: EventEmitter<any>;
    /**
     * Event emitted when a choosen file to upload is clicked.
     */
    itemClick: EventEmitter<any>;
    /**
     * Sets the `class` attribute for the host element.
     *
     * @returns A string with all CSS classes applied.
     */
    get cssClasses(): string;
    files: File[];
    filesTotalSize: number;
    /**
     * Random number generated to give an unique id to the field.
     */
    randomNumberId: number;
    /**
     * List of existing files to display in the component.
     *
     * @type {EuiUploadedFileInterface[]}
     */
    uploadedFiles: EuiUploadedFileInterface[];
    dragEntered: boolean;
    /**
     * List of templates passed to the component.
     */
    templates: QueryList<EuiTemplateDirective>;
    fileInputs: QueryList<ElementRef<HTMLInputElement>>;
    uploadedFileTemplate: TemplateRef<{
        $implicit: {
            file: EuiUploadedFileInterface;
            index: number;
            isFileObject: boolean;
        };
    }>;
    browseButtonTemplate: TemplateRef<HTMLElement>;
    resetButtonTemplate: TemplateRef<HTMLElement>;
    progressBarTemplate: TemplateRef<{
        $implicit: {
            progress: number;
        };
    }>;
    /**
     * Wheter multiple files can be choosen.
     *
     * @default true
     */
    isMultiple: boolean;
    /**
     * Wheter a progress bar is displayed to indicate the upload progress.
     *
     * @default true
     */
    hasProgressBar: boolean;
    /**
     * Wheter a preview, image or icon, is displayed for a file to upload.
     *
     * @default true
     */
    hasPreview: boolean;
    /**
     * Wheter a preview is displayed as image.
     *
     * @default true
     */
    hasPreviewAsImage: boolean;
    /**
     * Wheter a preview is displayed as a file format icon.
     *
     * @default false
     */
    hasPreviewAsIcon: boolean;
    /**
     * Wheter the total size that will be uploaded is displayed.
     *
     * @default true
     */
    hasTotalSizeDisplayed: boolean;
    /**
     * Wheter a reset list button is displayed.
     *
     * @default true
     */
    hasResetButton: boolean;
    /**
     * Wheter files can be drag and dropped in the component.
     *
     * @default false
     */
    hasDragArea: boolean;
    /**
     * Wheter items can be clicked. `itemClick` event is emitted.
     *
     * @default false
     */
    isItemsClickable: boolean;
    /**
     * Drag and drop area listener.
     *
     * @param fileList `FileList` containing dropped file and initial file.
     */
    emitFiles(fileList: FileList): void;
    /**
     * Determines whether the reset button should be displayed.
     *
     * @returns {boolean} `true` if the reset button should be shown, otherwise `false`.
     */
    get showResetBtn(): boolean;
    /**
     * Determines whether the drop area should be disabled.
     *
     * @returns {boolean} `true` if the drop area is disabled, otherwise `false`.
     */
    get isDropAreaDisabled(): boolean;
    get isBrowseButtonDisabled(): boolean;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    onDragEnter(): void;
    onDragLeave(): void;
    /**
     * Remove a file from the array of files choosen by the user.
     *
     * @param index Index of the file to remove in the array.
     */
    removeFromList(index: number): void;
    /**
     * Remove a file from the array of files provided to the component as existing values.
     *
     * @param index Index of the file to remove in the array.
     */
    removeFromUploadedList(index: number): void;
    /**
     * Reset the list of files in the component.
     */
    resetList(): void;
    openBrowseWindow(): void;
    /**
     * Click item handler.
     * @param e The item clicked. Will be a `Blob` for a file to be uploaded, `EuiUploadedFileInterface` for an initial file.
     */
    onItemClick(e: Blob | EuiUploadedFileInterface | any): void;
    writeValue(value: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    private onChange;
    /**
     * Calculates the total size to be uploaded.
     */
    private getTotalSize;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiFileUploadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiFileUploadComponent, "eui-file-upload", never, { "e2eAttr": { "alias": "e2eAttr"; "required": false; }; "progress": { "alias": "progress"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "maxFiles": { "alias": "maxFiles"; "required": false; }; "isMultiple": { "alias": "isMultiple"; "required": false; }; "hasProgressBar": { "alias": "hasProgressBar"; "required": false; }; "hasPreview": { "alias": "hasPreview"; "required": false; }; "hasPreviewAsImage": { "alias": "hasPreviewAsImage"; "required": false; }; "hasPreviewAsIcon": { "alias": "hasPreviewAsIcon"; "required": false; }; "hasTotalSizeDisplayed": { "alias": "hasTotalSizeDisplayed"; "required": false; }; "hasResetButton": { "alias": "hasResetButton"; "required": false; }; "hasDragArea": { "alias": "hasDragArea"; "required": false; }; "isItemsClickable": { "alias": "isItemsClickable"; "required": false; }; }, { "fileDrop": "fileDrop"; "itemClick": "itemClick"; }, ["templates"], ["*"], true, never>;
    static ngAcceptInputType_isMultiple: unknown;
    static ngAcceptInputType_hasProgressBar: unknown;
    static ngAcceptInputType_hasPreview: unknown;
    static ngAcceptInputType_hasPreviewAsImage: unknown;
    static ngAcceptInputType_hasPreviewAsIcon: unknown;
    static ngAcceptInputType_hasTotalSizeDisplayed: unknown;
    static ngAcceptInputType_hasResetButton: unknown;
    static ngAcceptInputType_hasDragArea: unknown;
    static ngAcceptInputType_isItemsClickable: unknown;
}
//# sourceMappingURL=eui-file-upload.component.d.ts.map