import { OnInit, ElementRef, OnDestroy, Renderer2, DoCheck } from '@angular/core';
import { ControlValueAccessor, NgControl, NgForm, FormGroupDirective } from '@angular/forms';
import { FileInput } from '../model/file-input.model';
import { FileInputMixinBase } from './file-input-mixin';
import { MatFormFieldControl } from "@angular/material/form-field";
import { ErrorStateMatcher } from "@angular/material/core";
import { FocusMonitor } from "@angular/cdk/a11y";
import { Subject } from "rxjs";
import * as i0 from "@angular/core";
export declare class FileInputComponent extends FileInputMixinBase implements MatFormFieldControl<FileInput>, ControlValueAccessor, OnInit, OnDestroy, DoCheck {
    private fm;
    private _elementRef;
    private _renderer;
    _defaultErrorStateMatcher: ErrorStateMatcher;
    ngControl: NgControl;
    _parentForm: NgForm;
    _parentFormGroup: FormGroupDirective;
    static nextId: number;
    focused: boolean;
    controlType: string;
    autofilled: boolean;
    private _placeholder;
    private _required;
    private _multiple;
    valuePlaceholder: string;
    accept: string | null;
    private _errorStateMatcher;
    get errorStateMatcher(): ErrorStateMatcher;
    set errorStateMatcher(value: ErrorStateMatcher);
    id: string;
    describedBy: string;
    setDescribedByIds(ids: string[]): void;
    get value(): FileInput | null;
    set value(fileInput: FileInput | null);
    get multiple(): boolean;
    set multiple(value: boolean | string);
    get placeholder(): string;
    set placeholder(plh: string);
    /**
     * Whether the current input has files
     */
    get empty(): boolean;
    get shouldLabelFloat(): boolean;
    get required(): boolean;
    set required(req: boolean | string);
    get isDisabled(): boolean;
    get disabled(): boolean;
    set disabled(dis: boolean | string);
    onContainerClick(event: MouseEvent): void;
    /** Whether the component is in an error state. */
    private _errorState;
    get errorState(): boolean;
    set errorState(value: boolean);
    /**
     * @see https://angular.io/api/forms/ControlValueAccessor
     */
    constructor(fm: FocusMonitor, _elementRef: ElementRef, _renderer: Renderer2, _defaultErrorStateMatcher: ErrorStateMatcher, ngControl: NgControl, _parentForm: NgForm, _parentFormGroup: FormGroupDirective);
    private _onChange;
    private _onTouched;
    get fileNames(): string;
    writeValue(obj: FileInput | null): void;
    registerOnChange(fn: (_: any) => void): void;
    registerOnTouched(fn: any): void;
    /**
     * Remove all files from the file input component
     * @param [event] optional event that may have triggered the clear action
     */
    clear(event?: Event): void;
    change(event: Event): void;
    blur(): void;
    setDisabledState(isDisabled: boolean): void;
    ngOnInit(): void;
    open(): void;
    ngOnDestroy(): void;
    ngDoCheck(): void;
    readonly stateChanges: Subject<void>;
    updateErrorState(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FileInputComponent, [null, null, null, null, { optional: true; self: true; }, { optional: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FileInputComponent, "ngx-mat-file-input", never, { "autofilled": { "alias": "autofilled"; "required": false; }; "valuePlaceholder": { "alias": "valuePlaceholder"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "_errorStateMatcher": { "alias": "_errorStateMatcher"; "required": false; }; "value": { "alias": "value"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, false, never>;
}
