import { AfterViewInit, ElementRef, EventEmitter, Injector, OnChanges, OnDestroy, OnInit, QueryList, SimpleChange } from '@angular/core';
import { AsyncValidatorFn, UntypedFormControl, UntypedFormGroup, ValidatorFn } from '@angular/forms';
import { FloatLabelType, MatError, MatFormFieldAppearance, MatSuffix, SubscriptSizing } from '@angular/material/form-field';
import { Subscription } from 'rxjs';
import { OMatErrorDirective } from '../directives/o-mat-error.directive';
import { IFormDataComponent } from '../interfaces/form-data-component.interface';
import { IFormDataTypeComponent } from '../interfaces/form-data-type-component.interface';
import { PermissionsService } from '../services/permissions/permissions.service';
import { OValidatorComponent } from '../shared/components/validation/o-validator.component';
import { ErrorData } from '../types/error-data.type';
import { FormValueOptions } from '../types/form-value-options.type';
import { OInputsOptions } from '../types/o-inputs-options.type';
import { OMatErrorOptions } from '../types/o-mat-error.type';
import { OFormValue } from './form/o-form-value';
import { OFormComponent } from './form/o-form.component';
import { OFormControl } from './input/o-form-control.class';
import { OBaseComponent } from './o-component.class';
import { OValueChangeEvent } from './o-value-change-event.class';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_FORM_DATA_COMPONENT: string[];
export declare const DEFAULT_OUTPUTS_O_FORM_DATA_COMPONENT: string[];
export declare class OFormDataComponent extends OBaseComponent implements IFormDataComponent, IFormDataTypeComponent, OnInit, AfterViewInit, OnDestroy, OnChanges {
    sqlType: string;
    autoBinding: boolean;
    autoRegistering: boolean;
    width: string;
    clearButton: boolean;
    angularValidatorsFn: ValidatorFn[];
    angularValidatorsFnErrors: ErrorData[];
    hideRequiredMarker: boolean;
    labelVisible: boolean;
    selectAllOnClick: boolean;
    angularAsyncValidatorsFn: AsyncValidatorFn[];
    get subscriptSizing(): SubscriptSizing;
    set subscriptSizing(value: SubscriptSizing);
    private _subscriptSizing;
    onChange: EventEmitter<object>;
    onValueChange: EventEmitter<OValueChangeEvent>;
    onFocus: EventEmitter<object>;
    onBlur: EventEmitter<object>;
    get hostWidth(): string;
    handleClick(): void;
    protected value: OFormValue;
    protected defaultValue: any;
    protected _SQLType: number;
    protected _defaultSQLTypeKey: string;
    protected _fControl: OFormControl;
    protected _fControlSubscription: Subscription;
    protected _fGroup: UntypedFormGroup;
    protected elRef: ElementRef;
    protected form: OFormComponent;
    protected oldValue: any;
    protected _floatLabel: FloatLabelType;
    protected _appearance: MatFormFieldAppearance;
    protected matSuffixSubscription: Subscription;
    protected _matSuffixList: QueryList<MatSuffix>;
    errorsData: ErrorData[];
    protected validatorsSubscription: Subscription;
    validatorChildren: QueryList<OValidatorComponent>;
    protected permissionsService: PermissionsService;
    protected mutationObserver: MutationObserver;
    errorOptions: OMatErrorOptions;
    oMatErrorChildren: QueryList<OMatErrorDirective>;
    protected _errorChildren: QueryList<MatError>;
    protected oInputsOptions: OInputsOptions;
    constructor(form: OFormComponent, elRef: ElementRef, injector: Injector);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    ngOnChanges(changes: {
        [propName: string]: SimpleChange;
    }): void;
    hasEnabledPermission(): boolean;
    hasVisiblePermission(): boolean;
    getFormGroup(): UntypedFormGroup;
    getFormControl(): UntypedFormControl;
    hasError(error: string): boolean;
    hasSomeError(): boolean;
    getErrorValue(error: string, prop: string): string;
    getActiveOErrors(): ErrorData[];
    initialize(): void;
    destroy(): void;
    registerFormListeners(): void;
    unregisterFormListeners(): void;
    set data(value: any);
    setData(newValue: any): void;
    isAutomaticBinding(): boolean;
    isAutomaticRegistering(): boolean;
    getValue(): any;
    setValue(val: any, options?: FormValueOptions, setDirty?: boolean): void;
    clearValue(options?: FormValueOptions, setDirty?: boolean): void;
    onClickClearValue(event: Event): void;
    onChangeEvent(arg: any): void;
    get showClearButton(): boolean;
    onFormControlChange(value: any): void;
    ensureOFormValue(arg: any): void;
    createFormControl(cfg?: any, validators?: ValidatorFn | ValidatorFn[], asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[]): OFormControl;
    getControl(): OFormControl;
    resolveValidators(): ValidatorFn[];
    resolveAsyncValidators(): AsyncValidatorFn[];
    getSQLType(): number;
    get isValid(): boolean;
    isEmpty(): boolean;
    setEnabled(value: boolean): void;
    get elementRef(): ElementRef;
    get hasCustomWidth(): boolean;
    get orequired(): boolean;
    set orequired(val: boolean);
    innerOnFocus(event: FocusEvent): void;
    innerOnBlur(event: any): void;
    get appearance(): MatFormFieldAppearance;
    set appearance(value: MatFormFieldAppearance);
    get floatLabel(): FloatLabelType;
    set floatLabel(value: FloatLabelType);
    selectValue(): void;
    protected registerOnFormControlChange(): void;
    protected emitOnValueChange(type: any, newValue: any, oldValue: any): void;
    protected setFormValue(val: any, options?: FormValueOptions, setDirty?: boolean): void;
    protected updateOFormControlValue(value: any, options?: FormValueOptions, setDirty?: boolean): void;
    protected updateValidators(): void;
    protected addOntimizeCustomAppearanceClass(): void;
    protected getTooltipClass(): string;
    protected getTooltipText(): string;
    protected parsePermissions(): void;
    protected getMutationObserverTarget(): any;
    protected setSuffixClass(count: number): void;
    private disableFormControl;
    static ɵfac: i0.ɵɵFactoryDeclaration<OFormDataComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<OFormDataComponent, never, never, { "oattr": "attr"; "olabel": "label"; "floatLabel": "float-label"; "oplaceholder": "placeholder"; "tooltip": "tooltip"; "tooltipPosition": "tooltip-position"; "tooltipShowDelay": "tooltip-show-delay"; "tooltipHideDelay": "tooltip-hide-delay"; "data": "data"; "autoBinding": "automatic-binding"; "autoRegistering": "automatic-registering"; "enabled": "enabled"; "orequired": "required"; "sqlType": "sql-type"; "width": "width"; "readOnly": "read-only"; "clearButton": "clear-button"; "angularValidatorsFn": "validators"; "angularValidatorsFnErrors": "validators-errors"; "appearance": "appearance"; "hideRequiredMarker": "hide-required-marker"; "labelVisible": "label-visible"; "selectAllOnClick": "select-all-on-click"; "angularAsyncValidatorsFn": "async-validators"; "subscriptSizing": "subscriptSizing"; }, { "onChange": "onChange"; "onValueChange": "onValueChange"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, ["validatorChildren", "_errorChildren"], never, false, never>;
}
