import { DoCheck, ElementRef, InjectionToken, NgZone, OnChanges, OnDestroy, OnInit, Renderer2 } from '@angular/core';
import { FormGroupDirective, NgControl, NgForm } from '@angular/forms';
import { CanUpdateErrorState, ErrorStateMatcher } from '@koobiq/components/core';
import { KbqFormFieldControl } from '@koobiq/components/form-field';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
export declare const KBQ_TEXTAREA_VALUE_ACCESSOR: InjectionToken<{
    value: any;
}>;
export declare class KbqTextarea implements KbqFormFieldControl<any>, OnInit, OnChanges, OnDestroy, DoCheck, CanUpdateErrorState {
    protected elementRef: ElementRef<HTMLTextAreaElement>;
    ngControl: NgControl;
    parentForm: NgForm;
    parentFormGroup: FormGroupDirective;
    defaultErrorStateMatcher: ErrorStateMatcher;
    private parent;
    private ngZone;
    /** Whether the component is in an error state. */
    errorState: boolean;
    /** Parameter enables or disables the ability to automatically increase the height.
     * If set to false, the textarea becomes vertically resizable. */
    get canGrow(): boolean;
    set canGrow(value: boolean);
    protected readonly isBrowser: boolean;
    protected readonly renderer: Renderer2;
    private readonly window;
    private _canGrow;
    /** Maximum number of lines to which the textarea will grow. Default unlimited */
    maxRows: number;
    /** An object used to control when error messages are shown. */
    errorStateMatcher: ErrorStateMatcher;
    /**
     * Implemented as part of KbqFormFieldControl.
     * @docs-private
     */
    focused: boolean;
    /**
     * Implemented as part of KbqFormFieldControl.
     * @docs-private
     */
    readonly stateChanges: Subject<void>;
    /**
     * Implemented as part of KbqFormFieldControl.
     * @docs-private
     */
    controlType: string;
    /**
     * Implemented as part of KbqFormFieldControl.
     * @docs-private
     */
    get disabled(): boolean;
    set disabled(value: boolean);
    /**
     * Implemented as part of KbqFormFieldControl.
     * @docs-private
     */
    get id(): string;
    set id(value: string);
    /**
     * Implemented as part of KbqFormFieldControl.
     * @docs-private
     */
    placeholder: string;
    /** Distance from the last line to the bottom border */
    freeRowsHeight: number;
    /**
     * Implemented as part of KbqFormFieldControl.
     * @docs-private
     */
    get required(): boolean;
    set required(value: boolean);
    /**
     * Implemented as part of KbqFormFieldControl.
     * @docs-private
     */
    get value(): string;
    set value(value: string);
    /** Flag that will be set to true when the maximum number of lines is reached.
     * Maximum number of rows can be set using the maxRows input. */
    get maxRowLimitReached(): boolean;
    protected uid: string;
    protected previousNativeValue: any;
    private _disabled;
    private _id;
    private _required;
    private valueAccessor;
    private growSubscription;
    private lineHeight;
    private minHeight;
    private rowsCount;
    constructor(elementRef: ElementRef<HTMLTextAreaElement>, ngControl: NgControl, parentForm: NgForm, parentFormGroup: FormGroupDirective, defaultErrorStateMatcher: ErrorStateMatcher, inputValueAccessor: any, parent: any, ngZone: NgZone);
    ngOnInit(): void;
    ngOnChanges(): void;
    ngOnDestroy(): void;
    ngDoCheck(): void;
    updateErrorState(): void;
    onBlur(): void;
    /** Grow textarea height to avoid vertical scroll  */
    grow: () => void;
    /** Focuses the textarea. */
    focus(): void;
    /** Callback for the cases where the focused state of the textarea changes. */
    focusChanged(isFocused: boolean): void;
    /**
     * Implemented as part of KbqFormFieldControl.
     * @docs-private
     */
    get empty(): boolean;
    /**
     * Implemented as part of KbqFormFieldControl.
     * @docs-private
     */
    onContainerClick(): void;
    /** Does some manual dirty checking on the native textarea `value` property. */
    protected dirtyCheckNativeValue(): void;
    /** Checks whether the textarea is invalid based on the native validation. */
    protected isBadInput(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqTextarea, [null, { optional: true; self: true; }, { optional: true; }, { optional: true; }, null, { optional: true; self: true; }, { optional: true; host: true; }, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTextarea, "textarea[kbqTextarea]", ["kbqTextarea"], { "canGrow": { "alias": "canGrow"; "required": false; }; "maxRows": { "alias": "maxRows"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "freeRowsHeight": { "alias": "freeRowsHeight"; "required": false; }; "required": { "alias": "required"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, {}, never, never, false, never>;
    static ngAcceptInputType_canGrow: unknown;
    static ngAcceptInputType_freeRowsHeight: unknown;
}
