import { OmitInternalProps } from '../../type-utils/omit-props';
import { HTMLChakraProps, SlotRecipeProps } from '@chakra-ui/react';
import { TextFieldProps as RaTextFieldProps, InputProps as RaInputProps } from 'react-aria-components';
type TextInputRecipeProps = {
    /**
     * Size variant of the text input
     * @default "md"
     */
    size?: SlotRecipeProps<"textInput">["size"];
    /**
     * Visual style variant of the text input
     * @default "solid"
     */
    variant?: SlotRecipeProps<"textInput">["variant"];
};
export type TextInputRootSlotProps = HTMLChakraProps<"div", TextInputRecipeProps>;
export type TextInputLeadingElementSlotProps = HTMLChakraProps<"div">;
export type TextInputInputSlotProps = HTMLChakraProps<"input">;
export type TextInputTrailingElementSlotProps = HTMLChakraProps<"div">;
export type TextInputProps = OmitInternalProps<TextInputRootSlotProps, keyof RaTextFieldProps & keyof TextInputRootSlotProps> & Omit<RaTextFieldProps, "ref"> & {
    /**
     * Ref forwarding to the input element
     */
    ref?: React.Ref<HTMLInputElement>;
    /**
     * Optional element to display at the start of the input
     * Respects text direction (left in LTR, right in RTL)
     */
    leadingElement?: React.ReactNode;
    /**
     * Optional element to display at the end of the input
     * Respects text direction (right in LTR, left in RTL)
     */
    trailingElement?: React.ReactNode;
    /**
     * Placeholder text for the input
     */
    placeholder?: string;
};
/**
 * Extended InputContext value type that accepts both React Aria props
 * and DOM attributes for maximum flexibility when using TextInput.Context.
 *
 * @example
 * ```tsx
 * <TextInput.Context value={{ isDisabled: true, isRequired: true }}>
 *   <TextInput placeholder="Email" />
 * </TextInput.Context>
 * ```
 */
export type TextInputContextValue = RaInputProps & RaTextFieldProps & {
    /**
     * DOM disabled attribute
     */
    disabled?: boolean;
    /**
     * DOM required attribute
     */
    required?: boolean;
    /**
     * DOM readOnly attribute
     */
    readOnly?: boolean;
    /**
     * ARIA invalid attribute
     */
    "aria-invalid"?: boolean | "true" | "false";
};
export {};
