import * as React from 'react';
import { SxProps } from '@mui/material';
import { TypographyVariant } from '../../theme/Typography';
import { InputLabelProps } from './InputLabel';
import { IconId } from '../icon';
export declare const textFieldTypes: readonly ["text", "password"];
type TextFieldType = (typeof textFieldTypes)[number];
export declare const textFieldAutoCompletes: readonly ["off", "new-password"];
type TextFieldAutoComplete = (typeof textFieldAutoCompletes)[number];
export declare const textFieldVariants: readonly ["default", "transparent"];
type TextFieldVariant = (typeof textFieldVariants)[number];
export type TextFieldProps = {
    /**
     * Type of inner input. Only apply if this field is single line.
     */
    type?: TextFieldType;
    /**
     * The native `id` of input or textarea. If not supplied, a random id
     * will be established.
     */
    id?: string;
    /**
     * Variant of this TextField. If you need to use text field in some container with your own styles
     * you probably want to use `transparent` variant. Also you have `sx` and `inputSx` props for any
     * customization.
     */
    variant?: TextFieldVariant;
    /**
     * Whether the input is disabled or not.
     */
    disabled?: boolean;
    /**
     * Current text value of input or textarea. Usually you will use this property to set the current
     * value of input. It is called the "controlled" way. See the `defaultValue` property for use this
     * TextField in an "uncontrolled" way.
     */
    value?: string;
    /**
     * Styles to customize input container, which is a Box.
     */
    sx?: SxProps;
    /**
     * Styles to customize input component, which is an input with type="text"
     */
    inputSx?: SxProps;
    /**
     * Whether the TextField is in error state.
     */
    isError?: boolean;
    /**
     * Whether to show the cross IconButton as first endAdornment component, used to clear the input
     * (setting the value="" and calling the `onChange` handler of this TextField)
     */
    isClearable?: boolean;
    /**
     * Whether the input is multiline or not. If `true`, the internal input="text" will be replaced
     * by a textarea
     */
    multiline?: boolean;
    /**
     * Only apply if `multiline={true}`. It is the real HTML textarea.rows attribute.
     */
    rows?: number;
    /**
     * If supplied some text, an InputLabel component will be shown just before the input.
     */
    label?: string;
    /**
     * If supplied some text, an icon with tooltip will be shown just after the label.
     */
    labelInfoText?: InputLabelProps['infoText'];
    /**
     * If supplied some text, an InputHelperText component will be shown just after the input.
     */
    helperText?: string;
    /**
     * The placeholder text of the input
     */
    placeholder?: string;
    /**
     * The main color used by this TextField, used to represent states like active or highlighted.
     */
    activeColor?: string;
    /**
     * Whether the input is highlighted or not. It will use the `color` of this TextField lighten by a 40%.
     */
    highlighted?: boolean;
    /**
     * Whether the input has the autoFocus attribute or not. If `true`, the input will acquire the focus the first time
     * it gets rendered in UI.
     */
    autoFocus?: boolean;
    /**
     * If you want to use the uncontrolled (native) version of input, use defaultValue to set the initial value.
     * If supplied a `value` prop, this `defaultValue` will be ignored.
     */
    defaultValue?: string;
    /**
     * If supplied some iconId, an Icon component will be shown as the first startAdornment.
     */
    iconId?: IconId;
    /**
     * The max length of text allowed in the input
     */
    maxLength?: number;
    /**
     * Settled directly in DOM element, for testing easy location purposes.
     */
    'data-testid'?: string;
    autoComplete?: TextFieldAutoComplete;
    containerRef?: React.Ref<HTMLDivElement>;
    /**
     * Adornment components to be placed at the start of the input
     */
    startAdornment?: React.ReactNode;
    /**
     * Adornment components to be placed at the end of the input
     */
    endAdornment?: React.ReactNode;
    /**
     * Called when the input value changes. You can get the current value of the input
     * by accessing to `event.target.value`.
     */
    onChange?: (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
    /**
     * Called when the input receives a keyDown event. You can get the key by accessing
     * `event.key`.
     */
    onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
    /**
     * Called when the input gets the focus
     */
    onFocus?: (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
    /**
     * Called when the input loses the focus
     */
    onBlur?: (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
    /**
     * Called when text area scroll.
     */
    onScroll?: (scrollTop: number) => void;
    /**
     * Called when mouse enters in text field.
     */
    onMouseEnter?: () => void;
    /**
     * Called when mouse leaves in text field.
     */
    onMouseLeave?: () => void;
    /**
     * Set if input is readonly
     */
    readOnly?: boolean;
    className?: string;
    /**
     * Set to true if adornments must be grouped with the input instead of be inside of it.
     * When using this option, only IconButton, MenuIconButton and Select component may be used as adornments.
     * Any other component will not work properly.
     * IconButton and MenuIconButton size must be 'M' or smaller.
     */
    groupElements?: boolean;
    /**
     * Specify typography variant on input
     */
    typographyVariant?: TypographyVariant;
};
/**
 * TextField is a component that renders an input field with type="text" or a textarea.
 * It comes with some optional features like an InputLabel, an InputHelperText, a leading Icon
 * and an IconButton to clear the current value of input or textarea.
 *
 * The exposed `ref` property is the reference to the native &lt;input&gt; element,
 * typed as React.Ref&lt;HTMLInputElement&gt;
 */
declare const TextField: React.ForwardRefExoticComponent<TextFieldProps & React.RefAttributes<HTMLInputElement>>;
export default TextField;
