import { ElementRef, Injector, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
import { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';
import { ValidationAlerts } from '../../validation-alert/validation-alert';
import { SmeInternalFormFieldComponent } from '../form-field.component';
import * as i0 from "@angular/core";
export declare class FileFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<FileFormFieldLoaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FileFormFieldLoaderComponent, "ng-component", never, {}, {}, never, never, false, never>;
}
/**
 * Accessible file field implementation
 */
export declare class FileFormFieldComponent extends SmeInternalFormFieldComponent<File | File[]> implements OnInit {
    /**
     * The source name to use for logging
     */
    protected get logSourceName(): string;
    /**
     * The file input part of this control
     */
    fileInput: ElementRef;
    /**
     * Indicates that multiple files are allowed
     */
    multiple: boolean;
    /**
     * Indicates the type of files that are allowed
     */
    fileTypes: string[];
    /**
     * The label to use on the select button
     */
    buttonLabel: string;
    private activeDroppedFileSystem;
    /**
     * The aria label for this instance
     */
    get ariaLabel(): string;
    /**
     * gets the file count label
     */
    get fileCountLabel(): string;
    /**
     * gets aria-label text
     */
    get ariaLabelText(): string;
    /**
     * Indicates if there are any files selected
     */
    get files(): File[];
    /**
     * Indicates if there are any files selected
     */
    get hasFiles(): boolean;
    /**
     * Indicates if there are multiple files selected
     */
    private get hasMultipleFiles();
    /**
     * Indicates if there are any file type restrictions
     */
    get hasFileTypes(): boolean;
    /**
     * Returns a formatted accept property for our file input
     */
    get acceptedFileTypes(): string;
    get directoryUploadSupported(): boolean;
    /**
     * Initializes a new instance of the FileFormFieldComponent
     */
    constructor(injector: Injector);
    reset(): void;
    /**
     * Occurs when the file input has changed
     */
    onFileChanged(): void;
    /**
     * Occurs when the there is a drop onto this control
     */
    onDrop(data: DataTransfer): void;
    /**
     * Updates the controls value to reflect dropped or browsed files
     */
    private updateValue;
    /**
     * Removes an item at the given index
     */
    removeItemAt(index: number): void;
    /**
     * Creates the idBag used by this component to store unique element ids.
     * id values will be assigned be the @see BaseComponent super class.
     */
    protected createIdBag(): MsftSme.StringMap<string>;
    isDirectory(file: File): boolean;
    /**
     * Performs validation that is internal to this control
     * @param c The form control attached to this instance
     */
    protected validate(c: FormControl): ValidationAlerts;
    static ɵfac: i0.ɵɵFactoryDeclaration<FileFormFieldComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FileFormFieldComponent, "sme-form-field[type=\"file\"]", never, { "multiple": "multiple"; "fileTypes": "fileTypes"; "buttonLabel": "buttonLabel"; }, {}, never, never, false, never>;
}
