import { OnChanges, OnInit, SimpleChanges, OnDestroy, DoCheck, EventEmitter } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import * as i0 from "@angular/core";
import * as i1 from "@eui/components/shared";
/**
 * @fileoverview Enhanced textarea component for Angular forms with readonly state, form control integration, and state management.
 *
 * A form control component that provides an enhanced textarea with additional features.
 * Supports readonly state visualization, form control integration, and state management.
 *
 */
export declare class EuiTextareaComponent implements OnInit, OnDestroy, DoCheck, OnChanges, ControlValueAccessor {
    /**
     * Static counter used to generate unique IDs for textarea instances
     * @static
     */
    static idCounter: number;
    /**
     * Event emitter that fires when the number of text rows in the textarea changes
     */
    rowsChange: EventEmitter<number>;
    get class(): string;
    /**
     * The disabled state of the textarea
     * @description When set to true, prevents user interaction with the textarea.
     * This can be controlled either directly or through form control binding.
     */
    get disabled(): boolean | null;
    set disabled(state: any);
    /**
     * The readonly state of the textarea
     * @description When true, displays the textarea content in a read-only format
     * with special styling.
     */
    get readonly(): any;
    set readonly(state: any);
    /**
     * Unique identifier for the textarea
     * @default eui-textarea_{increment}
     */
    id: string;
    /**
     * Flag indicating if the textarea is in an invalid state
     * @description When true, applies error styling to the textarea.
     * This can be set manually or automatically through form validation.
     */
    isInvalid: boolean;
    /**
     * @description
     * Data attribute for end-to-end testing
     * @default eui-textarea
     */
    e2eAttr: string;
    protected _readonly: boolean;
    protected hostEl: HTMLTextAreaElement;
    protected hostParentEl: HTMLElement;
    protected hostWrapperEl: HTMLDivElement;
    protected valueContainerEl: HTMLDivElement;
    private _disabled;
    private destroy$;
    private control;
    private rows;
    private injector;
    private _elementRef;
    private _renderer;
    private baseStatesDirective;
    constructor();
    /**
     * Handles input changes in the textarea
     * @param {string} value - The new value of the textarea
     * @description Updates the number of rows and triggers change detection
     */
    onInputChange(value: string): void;
    /**
     * Handles blur events on the textarea
     * @param {string} value - The current value of the textarea
     * @description Marks the control as touched and triggers validation
     */
    onBlur(value: string): void;
    /**
     * @description
     * Lifecycle hook that initializes the component. Sets up DOM elements,
     * initializes form control integration, and establishes state management
     */
    ngOnInit(): void;
    /**
     * @description
     * Lifecycle hook that checks for changes in form control state
     * Updates invalid state based on form control validation
     */
    ngDoCheck(): void;
    /**
     * @description
     * Lifecycle hook that handles changes to component inputs
     * @param {SimpleChanges} changes - Object containing changed properties
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * @description
     * Lifecycle hook that cleans up component resources
     * Completes observables and removes generated DOM elements
     */
    ngOnDestroy(): void;
    /**
     * @description
     * ControlValueAccessor implementation for writing values
     * @param {unknown} obj - The value to write to the textarea
     */
    writeValue(obj: unknown): void;
    /**
     * @description
     * Registers the callback function for change events
     * @param {Function} fn - The callback function
     */
    registerOnChange(fn: () => void): void;
    /**
     * @description
     * Registers the callback function for touched events
     * @param {Function} fn - The callback function
     */
    registerOnTouched(fn: () => void): void;
    /**
     * @description
     * Sets the disabled state of the textarea
     * @param {boolean} isDisabled - The disabled state to set
     */
    setDisabledState(isDisabled: boolean): void;
    protected onChange(_: unknown): void;
    protected onTouched(_: unknown): void;
    /**
     * @description
     * Creates the container for the textarea element
     * @returns {HTMLDivElement} The created wrapper container element
     * @private
     */
    private createHostWrapperContainer;
    /**
     * @description
     * Creates the container for displaying readonly values
     * @returns {HTMLDivElement} The created value container element
     * @private
     */
    private createValueContainer;
    /**
     * @description
     * Handles the DOM manipulation for the textarea structure
     * Wraps the textarea in necessary containers and adds
     * the readonly value display element
     *
     * @private
     */
    private handleMarkup;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiTextareaComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EuiTextareaComponent, "textarea[euiTextArea]", never, { "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "id": { "alias": "id"; "required": false; }; "isInvalid": { "alias": "isInvalid"; "required": false; }; "e2eAttr": { "alias": "e2eAttr"; "required": false; }; }, { "rowsChange": "rowsChange"; }, never, ["*"], true, [{ directive: typeof i1.BaseStatesDirective; inputs: { "euiDisabled": "euiDisabled"; "euiDanger": "euiDanger"; }; outputs: {}; }]>;
    static ngAcceptInputType_isInvalid: unknown;
}
//# sourceMappingURL=eui-textarea.component.d.ts.map