import { ReactElement, ReactNode, RefObject } from 'react';
import { AriaNumberFieldProps, AriaTextFieldProps } from 'react-aria';
import { FieldBaseProps } from '../../../shared';
import { BaseProps, BlockStyleProps, OuterStyleProps, Props, Styles } from '../../../tasty';
export declare const INPUT_WRAPPER_STYLES: Styles;
export declare const DEFAULT_INPUT_STYLES: Styles;
export interface CubeTextInputBaseProps extends BaseProps, OuterStyleProps, BlockStyleProps, Omit<AriaTextFieldProps, 'validate'>, FieldBaseProps {
    validate?: AriaTextFieldProps['validate'] | AriaNumberFieldProps['validate'];
    /** Left input icon */
    icon?: ReactElement | null;
    /** Input decoration before the main input */
    prefix?: ReactNode;
    /** Input decoration after the main input */
    suffix?: ReactNode;
    /** Suffix position goes before or after the validation and loading statuses */
    suffixPosition?: 'before' | 'after';
    /** Whether the input is multiline */
    multiLine?: boolean;
    /** Whether the input should have autofocus */
    autoFocus?: boolean;
    /** Direct input props */
    inputProps?: Props;
    /** Direct input wrapper props */
    wrapperProps?: Props;
    /** The input ref */
    inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>;
    /** The wrapper ref */
    wrapperRef?: RefObject<HTMLDivElement>;
    /** Whether the input has the loading status */
    isLoading?: boolean;
    /** The loading status indicator */
    loadingIndicator?: ReactNode;
    /** Style map for the input */
    inputStyles?: Styles;
    /** The number of rows for the input. Only applies to textarea. */
    rows?: number;
    /** The resize CSS property sets whether an element is resizable, and if so, in which directions. */
    resize?: Styles['resize'];
    /** The size of the input */
    size?: 'small' | 'medium' | 'large' | (string & {});
    autocomplete?: string;
}
declare const TextInputBase: import("react").ForwardRefExoticComponent<Omit<CubeTextInputBaseProps, "ref"> & import("react").RefAttributes<unknown>>;
export { TextInputBase };
export type { AriaTextFieldProps };
