import { ElementRef, EventEmitter, OnChanges, OnInit } from "@angular/core";
import { BehaviorSubject } from "rxjs";
import { CssUtils } from "../utils";
import { FileData } from "./interfaces/file.interface";
import { FilesService } from "./services/files.services";
import { NgChanges } from "../typings/ng-onchange";
import { FileInputProperties, Space, Spacing } from "./dxc-file-input.types";
import * as i0 from "@angular/core";
export declare class DxcFileInputComponent implements OnChanges, OnInit {
    private utils;
    private service;
    fileInputNative: ElementRef;
    className: any;
    /**
     * Name attribute.
     */
    name: string;
    /**
     * Available modes of the component.
     */
    mode: "file" | "filedrop" | "dropzone";
    /**
     * Text to be placed above the component.
     */
    label: string;
    /**
     * Text to be placed inside the button.
     */
    buttonLabel: string;
    /**
     * Helper text to be placed above the component.
     */
    helperText: string;
    /**
     * An array of files representing the selected files.
     */
    value: FileData[];
    /**
     * The file types that the component accepts. Its value must be one of all the possible values of the HTML file input's accept attribute.
     */
    accept: string;
    /**
     * If true, the component allows multiple file items and will show all of them. If false, only one file will be shown,
     * and if there is already one file selected and a new one is chosen, it will be replaced by the new selected one.
     */
    get multiple(): boolean;
    set multiple(value: boolean);
    private _multiple;
    /**
     * If true, if the file is an image, a preview of it will be shown. If not, an icon refering to the file type will be shown.
     */
    get showPreview(): boolean;
    set showPreview(value: boolean);
    private _showPreview;
    /**
     * If true, the component will be disabled.
     */
    get disabled(): boolean;
    set disabled(value: boolean);
    private _disabled;
    /**
     * The minimum file size (in bytes) allowed. If the size of the file does not comply the minSize, the file will have an error.
     */
    get minSize(): number;
    set minSize(value: number);
    private _minSize;
    /**
     * The maximum file size (in bytes) allowed. If the size of the file does not comply the maxSize, the file will have an error.
     */
    get maxSize(): number;
    set maxSize(value: number);
    private _maxSize;
    /**
     * Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
     * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
     */
    margin: Space | Spacing;
    /**
     * Value of the tabindex attribute.
     */
    get tabIndexValue(): number;
    set tabIndexValue(value: number);
    private _tabIndexValue;
    hasShowError: boolean;
    /**
     * This event will emit when the user selects or drops a file. The file or list of files will be sent as a parameter.
     */
    callbackFile: EventEmitter<FileData[]>;
    defaultInputs: BehaviorSubject<FileInputProperties>;
    id: string;
    files: Array<FileData>;
    hoveringWithFile: boolean;
    filesLoaded: boolean;
    numberFiles: number;
    hasMultipleFiles: boolean;
    hasSingleFile: boolean;
    hasErrorSingleFile: boolean;
    hasValue: boolean;
    constructor(utils: CssUtils, service: FilesService);
    ngOnInit(): void;
    ngOnChanges(changes: NgChanges<DxcFileInputComponent>): void;
    ngAfterViewInit(): void;
    checkFileSize(file: File): "File size must be greater than min size." | "File size must be less than max size.";
    /**
     * File drop y drop zone
     * @param event
     */
    dragOver(event: any): void;
    /**
     * File drop y drop zone
     * @param event
     */
    dragLeave(event: any): void;
    /**
     * File drop y drop zone
     * @param event
     */
    drop(event: any): void;
    /**
     * Common function for both file modes.
     * @param event
     */
    onFileInput(event: any): void;
    /**
     * Common function for both file modes.
     * @param eventFiles
     */
    getPreviewsFiles(eventFiles: any): void;
    /**
     * Common function for both file modes.
     * @param file
     */
    getPreview(file: any): void;
    private isMultipleFilesPrintables;
    private isSingleFilesPrintables;
    private isErrorShow;
    /**
     * Define the type of file component. Just for styling
     * @param inputs
     * @returns
     */
    getModeStyle(inputs: FileInputProperties): string;
    /**
     * Just for file mode.
     * @param inputs
     * @returns
     */
    getFileStyle(): string;
    /**
     * Just for drop zone.
     * @param inputs
     * @returns
     */
    getDropZoneStyle(): string;
    /**
     * Just for drop zone.
     * @param inputs
     * @returns
     */
    getFileDropStyle(): string;
    /**
     * Common functionality for styling
     * @param inputs
     * @returns
     */
    getDynamicStyle(inputs: any): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<DxcFileInputComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DxcFileInputComponent, "dxc-file-input", never, { "name": "name"; "mode": "mode"; "label": "label"; "buttonLabel": "buttonLabel"; "helperText": "helperText"; "value": "value"; "accept": "accept"; "multiple": "multiple"; "showPreview": "showPreview"; "disabled": "disabled"; "minSize": "minSize"; "maxSize": "maxSize"; "margin": "margin"; "tabIndexValue": "tabIndexValue"; }, { "callbackFile": "callbackFile"; }, never, never>;
}
//# sourceMappingURL=dxc-file-input.component.d.ts.map