import { InputHTMLAttributes, ReactNode } from 'react';
/** Allowed input type values for the text field. */
export type InputTypes = 'text' | 'password' | 'email' | 'tel' | 'number' | 'url' | 'search';
/** Input mode hint for on-screen keyboards. */
export type InputModes = 'text' | 'email' | 'numeric' | 'tel' | 'url' | 'search' | 'decimal' | 'none';
/**
 * Controls DOM order of the trailing button relative to the input.
 * For password fields, the trailing button is placed BEFORE the input.
 */
export type FieldType = 'text' | 'password';
export interface TextFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'id' | 'type' | 'size' | 'defaultValue'> {
    /** Unique ID linking the label to the input. Required for accessibility. */
    id: string;
    /** Visible label text. Floats to eyebrow position when active or filled. */
    label: string;
    /** Name attribute for form submission. */
    name: string;
    /** Controlled input value. */
    value?: string;
    /** Default value for uncontrolled mode. */
    defaultValue?: string;
    /** Change handler for controlled mode. */
    onChange?: React.ChangeEventHandler<HTMLInputElement>;
    /** Blur handler. */
    onBlur?: React.FocusEventHandler<HTMLInputElement>;
    /** Focus handler. */
    onFocus?: React.FocusEventHandler<HTMLInputElement>;
    /** HTML input type. Defaults to `'text'`. */
    type?: InputTypes;
    /** Input mode hint for on-screen keyboards. Defaults to `'text'`. */
    inputMode?: InputModes;
    /**
     * Controls DOM order of the trailing button relative to the input.
     * When `'password'`, the trailing button is placed before the input.
     * Defaults to `'text'`.
     */
    fieldType?: FieldType;
    /** Error message. When non-empty, sets `aria-invalid` and shows error text. */
    errorMessage?: string;
    /** Supporting helper text shown below the input. */
    supportingText?: string;
    /** Whether the field is disabled. */
    disabled?: boolean;
    /** Whether the field is read-only. */
    readOnly?: boolean;
    /** Whether the field is required. Adds `required` and visual asterisk. */
    required?: boolean;
    /** Enable inverse (dark background) styling. */
    inverse?: boolean;
    /** Maximum character length for the input. */
    maxLength?: number;
    /** Validation pattern for the input. */
    pattern?: string;
    /** Placeholder text (not recommended — use label instead). */
    placeholder?: string;
    /** Trailing decoration element rendered at the end of the input track. */
    trailingDecoration?: ReactNode;
    /** Accessible label for the trailing decoration button. */
    trailingButtonLabel?: string;
    /**
     * Renders a credit card outline icon before the label.
     * Applies `tdds-text-field__track--leading-decoration` to the track.
     */
    hasLeadingCCIcon?: boolean;
    /**
     * When defined, renders a screen-reader-only span announcing the password
     * visibility state and toggles the input type between 'password' and 'text'.
     */
    showPassword?: boolean;
    /** Associates the input with a form by ID. */
    formId?: string;
    /** Additional CSS class names on the root element. */
    className?: string;
}
//# sourceMappingURL=TextField.types.d.ts.map