import { ElementRef, OnChanges, OnDestroy, OnInit } from '@angular/core';
import { FormStates } from '@fundamental-ngx/cdk/forms';
import { CssClassBuilder, Nullable } from '@fundamental-ngx/cdk/utils';
import { ContentDensityObserver } from '@fundamental-ngx/core/content-density';
import { FormItemControl } from '../form-item-control/form-item-control';
import * as i0 from "@angular/core";
/**
 * Directive intended for use on form controls.
 *
 * ```html
 * <input type="text" fd-form-control />
 * ```
 */
export declare class FormControlComponent implements CssClassBuilder, OnInit, OnChanges, OnDestroy, FormItemControl {
    elementRef: ElementRef<HTMLInputElement | HTMLTextAreaElement>;
    private ariaLabelAttr;
    private ariaLabelledByAttr;
    /**
     *  The state of the form control - applies css classes.
     *  Can be `success`, `error`, `warning`, `information` or blank for default.
     */
    state: FormStates | null;
    /** Type of the form control. */
    type: string;
    /** user's custom classes */
    class: string;
    /** aria-label for form-control. */
    ariaLabel: Nullable<string>;
    /** aria-label for form-control. */
    ariaLabelledBy: Nullable<string>;
    /** @hidden */
    private get ariaLabelBinding();
    /** @hidden */
    private get ariaLabelledByBinding();
    /** @hidden */
    private _subscriptions;
    /** @hidden */
    constructor(elementRef: ElementRef<HTMLInputElement | HTMLTextAreaElement>, _contentDensityObserver: ContentDensityObserver, ariaLabelAttr: string, ariaLabelledByAttr: string);
    /**
     * @hidden
     * CssClassBuilder interface implementation
     * function must return single string
     * function is responsible for order which css classes are applied
     */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(): void;
    /** @hidden */
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FormControlComponent, [null, null, { attribute: "aria-label"; }, { attribute: "aria-labelledby"; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FormControlComponent, "input[fd-form-control], textarea[fd-form-control]", never, { "state": { "alias": "state"; "required": false; }; "type": { "alias": "type"; "required": false; }; "class": { "alias": "class"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; }, {}, never, ["*"], true, never>;
}
