import { AfterContentInit, Injector, OnInit } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { App, Viewport } from '@wm/core';
import { StylableComponent } from '@wm/components/base';
import { ListComponent } from '@wm/components/data/list';
import { FormComponent } from '../form.component';
import * as i0 from "@angular/core";
export declare class FormFieldDirective extends StylableComponent implements OnInit, AfterContentInit {
    static initializeProps: void;
    formWidget: any;
    formWidgetMax: any;
    private fb;
    private viewport;
    private excludeProps;
    private _validators;
    private _oldUploadVal;
    ngform: FormGroup;
    defaultvalue: any;
    displayexpression: any;
    displayfield: any;
    displaylabel: any;
    displayname: any;
    generator: any;
    key: any;
    target: any;
    binding: any;
    widgettype: any;
    class: any;
    readonly: any;
    show: any;
    type: any;
    isDataSetBound: any;
    viewmodewidget: any;
    binddataset: any;
    binddisplayexpression: any;
    bindChipclass: any;
    displayimagesrc: string;
    binddisplayimagesrc: any;
    binddisplaylabel: any;
    form: any;
    filetype: any;
    extensions: any;
    permitted: any;
    period: any;
    isRange: any;
    name: any;
    required: any;
    maxchars: any;
    minvalue: any;
    maxvalue: any;
    regexp: any;
    fieldDefConfig: any;
    placeholder: any;
    inputtype: any;
    validationmessage: any;
    _fieldName: any;
    private _debounceSetUpValidators;
    private _initPropsRes;
    private parentList;
    private showPendingSpinner;
    private _activeField;
    private notifyForFields;
    private fieldValidations;
    private _triggeredByUser;
    private _clicktriggeredByUser;
    private app;
    onKeydownHandler(event: KeyboardEvent): void;
    handleClick(event: any): void;
    private isFocused;
    constructor(inj: Injector, form: FormComponent, fb: FormBuilder, viewport: Viewport, app: App, parentList: ListComponent, bindChipclass: string, binddataset: any, binddisplayexpression: string, binddisplaylabel: string, _widgetType: any, name: any, binddisplayimagesrc: String, key: any, isRange: any, pcDisplay: any, mobileDisplay: any, tabletDisplay: any, contexts: Array<any>, explicitContext: any);
    _onFocusField($evt: any): void;
    getActiveElement(): HTMLSelectElement | HTMLTextAreaElement | HTMLInputElement;
    setAriaAttributes(): void;
    _onBlurField($evt: any): void;
    evaluateExpr(object: any, displayField: any, displayExpr: any): any;
    getDisplayExpr(): any;
    getCaption(): any;
    notifyChanges(): void;
    observeOn(fields: any): void;
    setUpValidators(customValidator?: any): void;
    setAsyncValidators(validators: any): void;
    setValidators(validators: any): void;
    setFormWidget(key: any, val: any): void;
    boundFn(fn: any): any;
    setMaxFormWidget(key: any, val: any): void;
    onPropertyChange(key: any, nv: any, ov?: any): void;
    onStyleChange(key: any, nv: any, ov?: any): void;
    get datavalue(): any;
    set datavalue(val: any);
    get value(): any;
    set value(val: any);
    get maxValue(): any;
    set maxValue(val: any);
    get minValue(): any;
    set minValue(val: any);
    get _control(): import("@angular/forms").AbstractControl<any, any>;
    get _maxControl(): import("@angular/forms").AbstractControl<any, any>;
    get displayValue(): any;
    get timestamp(): any;
    get charlength(): any;
    createControl(): any;
    onValueChange(val: any): void;
    onStatusChange(status: any): void;
    setValidationMessage(val: any): void;
    setReadOnlyState(): void;
    resetDisplayInput(): void;
    reset(): void;
    triggerUploadEvent($event: any, eventName: any): void;
    private registerFormField;
    ngOnInit(): void;
    ngAfterContentInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FormFieldDirective, [null, null, null, null, null, { optional: true; }, { attribute: "chipclass.bind"; }, { attribute: "dataset.bind"; }, { attribute: "displayexpression.bind"; }, { attribute: "displaylabel.bind"; }, { attribute: "widgettype"; }, { attribute: "name"; }, { attribute: "displayimagesrc.bind"; }, { attribute: "key"; }, { attribute: "is-range"; }, { attribute: "pc-display"; }, { attribute: "mobile-display"; }, { attribute: "tablet-display"; }, { self: true; }, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FormFieldDirective, "[wmFormField]", ["wmFormField"], {}, {}, ["formWidget", "formWidgetMax"], never, false, never>;
}
