import { default as React, ReactNode, ChangeEvent } from 'react';
import { SecurityConfig } from '../utils/security';
export type TextFieldStatus = 'neutral' | 'error' | 'warning' | 'success';
export type TextFieldSize = 'sm' | 'md' | 'lg';
/**
 * TextField — input standar dengan:
 * - Controlled value + optional debounce
 * - Prefix & suffix icons
 * - Status indicator (error/warning/success)
 * - Helper text / status message
 * - Character count
 * - Clear button (IconX) dengan custom callback
 *
 * @param {string} value                        Nilai controlled input.
 * @param {(val: string) => void} onChange      Callback saat input berubah.
 * @param {number} [debounce=0]                 Debounce ms untuk onChangeDebounced.
 * @param {(val: string) => void} [onChangeDebounced]
 *                                             Callback setelah debounce ms.
 * @param {ReactNode} [prefixIcon]              Icon prefix sebelum input.
 * @param {ReactNode} [suffixIcon]              Icon suffix setelah clear button.
 * @param {ReactNode} [label]                   Label di atas input.
 * @param {ReactNode} [helperText]              Teks bantuan di bawah input.
 * @param {'neutral'|'error'|'warning'|'success'} [status='neutral']
 *                                             Status visual input.
 * @param {ReactNode} [statusMessage]           Pesan sesuai status (override helperText).
 * @param {number} [maxLength]                  Maks karakter.
 * @param {boolean} [showCharCount=false]       Tampilkan penghitung karakter.
 * @param {boolean} [showClearButton=true]      Tampilkan tombol clear (IconX) jika ada teks.
 * @param {() => void} [onClear]                Callback saat tombol clear diklik.
 *                                             Berguna untuk reset API data, stop loading,
 *                                             analytics tracking, dll.
 * @param {string} [placeholder]                Placeholder input.
 * @param {boolean} [disabled=false]            Disable state.
 * @param {string} [className]                  Class tambahan pada wrapper.
 */
export interface TextFieldProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size'> {
    value: string;
    onChange: (val: string) => void;
    /** Callback yang memberikan akses ke event object lengkap, sama seperti emit('input', event) di Vue */
    onInput?: (event: ChangeEvent<HTMLInputElement>) => void;
    debounce?: number;
    onChangeDebounced?: (val: string) => void;
    prefixIcon?: ReactNode;
    suffixIcon?: ReactNode;
    label?: ReactNode;
    helperText?: ReactNode;
    status?: TextFieldStatus;
    statusMessage?: ReactNode;
    size?: TextFieldSize;
    maxLength?: number;
    showCharCount?: boolean;
    showClearButton?: boolean;
    onClear?: () => void;
    placeholder?: string;
    disabled?: boolean;
    className?: string;
    securityConfig?: SecurityConfig;
}
declare function TextField({ value, onChange, onInput, debounce, onChangeDebounced, prefixIcon, suffixIcon, label, helperText, status, statusMessage, size, maxLength, showCharCount, showClearButton, onClear, placeholder, disabled, className, securityConfig, onBlur, ...rest }: TextFieldProps): import("react/jsx-runtime").JSX.Element;
export default TextField;
//# sourceMappingURL=TextField.d.ts.map