import { FormControl, FormGroup } from '@angular/forms';
import * as i0 from "@angular/core";
/** Possible textarea style variants */
export type textareaVariantProps = 'primary' | 'secondary' | 'tertiary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | null | undefined;
/** Possible textarea size variants */
export type textareaSizeProps = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | null | undefined;
/** Configuration object for textarea styling */
export type textareaProps = {
    variant?: textareaVariantProps;
    size?: textareaSizeProps;
};
/**
 * A customizable textarea component with form integration and validation features
 *
 * @remarks
 * Supports character counting, debounced input, and automatic validation styling.
 * Implements ControlValueAccessor for Angular form compatibility.
 *
 * @example
 * ```html
 * <!-- Basic textarea usage -->
 * <st-textarea
 *   [(value)]="description"
 *   label="Description"
 *   maxCharacters="500"
 * ></st-textarea>
 * ```
 *
 * @example
 * ```html
 * <!-- Reactive form integration -->
 * <st-textarea
 *   [parentForm]="userForm"
 *   formControlName="bio"
 *   variant="primary"
 *   debounceTime="300"
 * ></st-textarea>
 * ```
 */
export declare class TextareaComponent {
    /**
     * Textarea style variant
     * @defaultValue 'secondary'
     */
    variant: import("@angular/core").InputSignal<textareaVariantProps>;
    /**
     * Textarea size variant
     * @defaultValue 'md'
     */
    size: import("@angular/core").InputSignal<textareaSizeProps>;
    /**
     * Whether to use ghost (transparent) styling
     * @defaultValue false
     */
    ghost: import("@angular/core").InputSignal<boolean>;
    /**
     * Label displayed above the textarea
     */
    label: import("@angular/core").InputSignal<string | null>;
    /**
     * HTML name attribute for the textarea
     */
    name: import("@angular/core").InputSignal<string | null>;
    /**
     * Placeholder text when empty
     */
    placeholder: import("@angular/core").InputSignal<string>;
    /**
     * Number of visible text rows
     * @defaultValue 3
     */
    rows: import("@angular/core").InputSignal<string | number>;
    /**
     * Whether the textarea is readonly
     * @defaultValue false
     */
    readonly: import("@angular/core").InputSignal<boolean>;
    /**
     * Whether the textarea is disabled
     * @defaultValue false
     */
    disabled: import("@angular/core").ModelSignal<boolean>;
    /**
     * Event emitted on textarea blur
     */
    blurred: import("@angular/core").OutputEmitterRef<string>;
    /** @internal */
    private blurTrigger;
    /**
     * Two-way bindable textarea value
     */
    value: import("@angular/core").ModelSignal<string>;
    /**
     * Maximum allowed character count
     * @defaultValue 0 (unlimited)
     */
    maxCharacters: import("@angular/core").InputSignal<number>;
    /**
     * Whether current value exceeds maxCharacters
     * @internal
     */
    invalidMaxCharacters: import("@angular/core").Signal<boolean>;
    /**
     * Parent form group for reactive forms
     */
    parentForm: import("@angular/core").InputSignal<FormGroup<any> | null>;
    /**
     * Form control name for reactive forms
     */
    formControlName: import("@angular/core").InputSignal<string>;
    /**
     * @internal
     * Gets associated form control
     */
    get formField(): FormControl | null;
    /** @internal */
    private onControlChange;
    /** @internal */
    private onControlTouch;
    /**
     * Event emitted on Enter key press
     */
    enterPressed: import("@angular/core").OutputEmitterRef<string>;
    /**
     * Debounce time in milliseconds for valueDebounced output
     * @defaultValue 500
     */
    debounceTime: import("@angular/core").InputSignal<number>;
    /**
     * Event emitted after debounce time when value changes
     */
    valueDebounced: import("@angular/core").OutputEmitterRef<string>;
    /** @internal */
    private debounceAction$;
    /** @internal */
    private debounceTimeEffect;
    /** @internal */
    private value$;
    constructor();
    /**
     * @internal
     * Computed base textarea classes
     */
    componentClass: import("@angular/core").Signal<string>;
    /**
     * @internal
     * Computed error state classes
     */
    errorClass: import("@angular/core").Signal<string>;
    /**
     * @internal
     * Computed success state classes
     */
    successClass: import("@angular/core").Signal<string>;
    /**
     * @internal
     * Computed character counter error classes
     */
    errorClassMaxCharacters: import("@angular/core").Signal<string>;
    writeValue(obj: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    /**
     * @internal
     * Handles input changes
     */
    handleChange(): void;
    /**
     * @internal
     * Handles Enter key press
     */
    handleEnter(): void;
    /**
     * @internal
     * Handles blur event
     */
    handleBlur(): void;
    /** @internal */
    private formControl;
    /** @internal */
    private formControl$;
    /** @internal */
    private statusChanges$;
    /** @internal */
    private stateChanges$;
    /** @internal */
    private statusSignal;
    /** @internal */
    private stateSignal;
    /**
     * @internal
     * Computed validation classes based on form state
     */
    validationClass: import("@angular/core").Signal<string>;
    /**
     * @internal
     * Sets up debounce mechanism for value changes
     */
    private setupDebounce;
    static ɵfac: i0.ɵɵFactoryDeclaration<TextareaComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TextareaComponent, "st-textarea", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ghost": { "alias": "ghost"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "maxCharacters": { "alias": "maxCharacters"; "required": false; "isSignal": true; }; "parentForm": { "alias": "parentForm"; "required": false; "isSignal": true; }; "formControlName": { "alias": "formControlName"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; }, { "disabled": "disabledChange"; "blurred": "blurred"; "value": "valueChange"; "enterPressed": "enterPressed"; "valueDebounced": "valueDebounced"; }, never, ["*"], true, never>;
}
