/**
 * Copyright IBM Corp. 2016, 2025
 *
 * This source code is licensed under the Apache-2.0 license found in the
 * LICENSE file in the root directory of this source tree.
 */
import React, { type ReactNode } from 'react';
type ExcludedAttributes = 'defaultValue' | 'id' | 'size' | 'value';
export interface TextInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, ExcludedAttributes> {
    /**
     * Specify an optional className to be applied to the `<input>` node
     */
    className?: string;
    /**
     * **Experimental**: Provide a `decorator` component to be rendered inside the `TextInput` component
     */
    decorator?: ReactNode;
    /**
     * Optionally provide the default value of the `<input>`
     */
    defaultValue?: string | number;
    /**
     * Specify whether the `<input>` should be disabled
     */
    disabled?: boolean;
    /**
     * Specify whether to display the character counter
     */
    enableCounter?: boolean;
    /**
     * Provide text that is used alongside the control label for additional help
     */
    helperText?: ReactNode;
    /**
     * Specify whether you want the underlying label to be visually hidden
     */
    hideLabel?: boolean;
    /**
     * Specify a custom `id` for the `<input>`
     */
    id: string;
    /**
     * `true` to use the inline version.
     */
    inline?: boolean;
    /**
     * Specify whether the control is currently invalid
     */
    invalid?: boolean;
    /**
     * Provide the text that is displayed when the control is in an invalid state
     */
    invalidText?: ReactNode;
    /**
     * Provide the text that will be read by a screen reader when visiting this
     * control
     */
    labelText: ReactNode;
    /**
     * `true` to use the light version. For use on $ui-01 backgrounds only.
     * Don't use this to make tile background color same as container background color.
     * 'The `light` prop for `TextInput` has ' +
        'been deprecated in favor of the new `Layer` component. It will be removed in the next major release.'
     */
    light?: boolean;
    /**
     * Max character count allowed for the input. This is needed in order for enableCounter to display
     */
    maxCount?: number;
    /**
     * Optionally provide an `onChange` handler that is called whenever `<input>`
     * is updated
     */
    onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
    /**
     * Optionally provide an `onClick` handler that is called whenever the
     * `<input>` is clicked
     */
    onClick?: (event: React.MouseEvent<HTMLElement>) => void;
    /**
     * Specify the placeholder attribute for the `<input>`
     */
    placeholder?: string;
    /**
     * Whether the input should be read-only
     */
    readOnly?: boolean;
    /**
     * Specify the size of the Text Input. Currently supports the following:
     */
    size?: 'sm' | 'md' | 'lg' | 'xl';
    /**
     * @deprecated please use `decorator` instead.
     * **Experimental**: Provide a `Slug` component to be rendered inside the `TextInput` component
     */
    slug?: ReactNode;
    /**
     * Specify the type of the `<input>`
     */
    type?: string;
    /**
     * Specify the value of the `<input>`
     */
    value?: string | number | undefined;
    /**
     * Specify whether the control is currently in warning state
     */
    warn?: boolean;
    /**
     * Provide the text that is displayed when the control is in warning state
     */
    warnText?: ReactNode;
}
declare const TextInput: React.ForwardRefExoticComponent<TextInputProps & React.RefAttributes<unknown>>;
export default TextInput;
