import { ElementRef, Renderer2 } from '@angular/core';
import { AbstractControl, AsyncValidator, AsyncValidatorFn, ControlValueAccessor, ValidationErrors } from '@angular/forms';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
export declare class FileInputAccessor implements ControlValueAccessor, AsyncValidator {
    private _renderer;
    private _elementRef;
    allowedTypes: RegExp | string | string[];
    size: number;
    withMeta: boolean;
    maxHeight: number;
    maxWidth: number;
    minHeight: number;
    minWidth: number;
    set allowedExt(value: RegExp | string | string[]);
    get allowedExt(): RegExp | string | string[];
    validator: AsyncValidatorFn;
    private _allowedExt;
    onChange: (_: any) => void;
    onTouched: () => void;
    constructor(_renderer: Renderer2, _elementRef: ElementRef);
    writeValue(value: any): void;
    registerOnChange(fn: (_: any) => {}): void;
    registerOnTouched(fn: () => {}): void;
    setDisabledState(isDisabled: boolean): void;
    validate(c: AbstractControl): Observable<ValidationErrors | null> | Promise<ValidationErrors | null>;
    /**
     * Generator method that I used to move the code for the AsyncValidator down here so it didn't
     * get in my way, way up there ^.
     */
    private generateAsyncValidator;
    /**
     * Generator method that returns an onChange handler
     */
    private onChangeGenerator;
    private generateRegExp;
    /**
     * The ICustomFile has a ReplaySubject property for text / image files that will emit
     * once the file has been loaded. Might get removed later since I haven't found a use for it yet.
     */
    private generateFileMeta;
    private setImage;
    private setText;
    static ɵfac: i0.ɵɵFactoryDeclaration<FileInputAccessor, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FileInputAccessor, "input[type=file][formControl],input[type=file][formControlName],input[type=file][ngModel]", never, { "allowedTypes": { "alias": "allowedTypes"; "required": false; }; "size": { "alias": "size"; "required": false; }; "withMeta": { "alias": "withMeta"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; "minHeight": { "alias": "minHeight"; "required": false; }; "minWidth": { "alias": "minWidth"; "required": false; }; "allowedExt": { "alias": "allowedExt"; "required": false; }; }, {}, never, never, false, never>;
}
