import { AfterViewInit, ElementRef, EventEmitter, Injector, OnChanges, OnDestroy, OnInit, QueryList, SimpleChange } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { AsyncValidatorFn, FormControl, FormGroup, 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 { IOFormParent } from '../interfaces/o-form-parent.interface';
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, ControlValueAccessor, 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: FormGroup;
    protected elRef: ElementRef;
    protected form: IOFormParent;
    protected oldValue: any;
    private _cvaOnChange;
    private _cvaOnTouched;
    private _writingValue;
    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(elRef: ElementRef, injector: Injector);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    ngOnChanges(changes: {
        [propName: string]: SimpleChange;
    }): void;
    hasEnabledPermission(): boolean;
    hasVisiblePermission(): boolean;
    getFormGroup(): FormGroup;
    getFormControl(): FormControl;
    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;
    writeValue(value: any): void;
    registerOnChange(fn: (value: any) => void): void;
    registerOnTouched(fn: () => void): void;
    setDisabledState(isDisabled: boolean): 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 | string);
    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": { "alias": "attr"; "required": false; }; "olabel": { "alias": "label"; "required": false; }; "floatLabel": { "alias": "float-label"; "required": false; }; "oplaceholder": { "alias": "placeholder"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "tooltipPosition": { "alias": "tooltip-position"; "required": false; }; "tooltipShowDelay": { "alias": "tooltip-show-delay"; "required": false; }; "tooltipHideDelay": { "alias": "tooltip-hide-delay"; "required": false; }; "data": { "alias": "data"; "required": false; }; "autoBinding": { "alias": "automatic-binding"; "required": false; }; "autoRegistering": { "alias": "automatic-registering"; "required": false; }; "enabled": { "alias": "enabled"; "required": false; }; "orequired": { "alias": "required"; "required": false; }; "sqlType": { "alias": "sql-type"; "required": false; }; "width": { "alias": "width"; "required": false; }; "readOnly": { "alias": "read-only"; "required": false; }; "clearButton": { "alias": "clear-button"; "required": false; }; "angularValidatorsFn": { "alias": "validators"; "required": false; }; "angularValidatorsFnErrors": { "alias": "validators-errors"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "hideRequiredMarker": { "alias": "hide-required-marker"; "required": false; }; "labelVisible": { "alias": "label-visible"; "required": false; }; "selectAllOnClick": { "alias": "select-all-on-click"; "required": false; }; "angularAsyncValidatorsFn": { "alias": "async-validators"; "required": false; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; }; }, { "onChange": "onChange"; "onValueChange": "onValueChange"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, ["validatorChildren", "_errorChildren"], never, false, never>;
}
