import { default as React, ReactNode } from 'react';
import { SecurityConfig } from '../utils/security';
export type TextAreaStatus = 'neutral' | 'error' | 'warning' | 'success';
/**
 * TextArea — textarea autosize serupa TextField, dengan:
 * - controlled value + optional debounce
 * - prefix/suffix icons
 * - status indicator (error/warning/success)
 * - helper text / status message
 * - character count
 * - clear button
 * - autosize antara `minRows` hingga `maxRows`
 *
 * @param {string} value                        Controlled value.
 * @param {(val: string) => void} onChange      Callback on change.
 * @param {number} [debounce=0]                 Debounce ms untuk onChangeDebounced.
 * @param {(val: string) => void} [onChangeDebounced]
 *                                              Callback setelah debounce.
 * @param {ReactNode} [prefixIcon]              Icon sebelum textarea.
 * @param {ReactNode} [suffixIcon]              Icon setelah tombol clear.
 * @param {ReactNode} [label]                   Label di atas textarea.
 * @param {ReactNode} [helperText]              Teks bantuan di bawah.
 * @param {'neutral'|'error'|'warning'|'success'} [status='neutral']
 *                                              Status visual.
 * @param {ReactNode} [statusMessage]           Pesan sesuai status.
 * @param {number} [maxLength]                  Maks karakter.
 * @param {boolean} [showCharCount=false]       Tampilkan counter.
 * @param {boolean} [showClearButton=true]      Tampilkan tombol clear.
 * @param {number} [minRows=3]                  Baris minimal.
 * @param {number} [maxRows]                    Baris maksimal untuk autosize.
 * @param {string} [placeholder]                Placeholder.
 * @param {boolean} [disabled=false]            Disabled state.
 * @param {string} [className]                  Class tambahan wrapper.
 */
export interface TextAreaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange'> {
    value: string;
    onChange: (val: string) => void;
    debounce?: number;
    onChangeDebounced?: (val: string) => void;
    prefixIcon?: ReactNode;
    suffixIcon?: ReactNode;
    label?: ReactNode;
    helperText?: ReactNode;
    status?: TextAreaStatus;
    statusMessage?: ReactNode;
    maxLength?: number;
    showCharCount?: boolean;
    showClearButton?: boolean;
    minRows?: number;
    maxRows?: number;
    placeholder?: string;
    disabled?: boolean;
    className?: string;
    securityConfig?: SecurityConfig;
}
export default function TextArea({ value, onChange, debounce, onChangeDebounced, prefixIcon, suffixIcon, label, helperText, status, statusMessage, maxLength, showCharCount, showClearButton, minRows, maxRows, placeholder, disabled, className, securityConfig, onBlur, ...rest }: TextAreaProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=TextArea.d.ts.map