import { AccessibilityProps } from '../shared/index.js';

type InputType = 'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search';
interface InputProps {
    type?: InputType;
    disabled?: boolean;
    readOnly?: boolean;
    required?: boolean;
    placeholder?: string;
    'aria-invalid'?: boolean;
}
interface InputAPI {
    /** ARIA attributes to spread on the element */
    ariaProps: Partial<AccessibilityProps> & {
        'aria-invalid'?: boolean;
        'aria-required'?: boolean;
    };
    /** Data attributes for CSS styling hooks */
    dataAttributes: Record<string, string>;
}
declare function createInput(props?: InputProps): InputAPI;
declare function getInputAriaProps(state: {
    disabled?: boolean;
    readOnly?: boolean;
    required?: boolean;
    invalid?: boolean;
}): Partial<AccessibilityProps> & {
    'aria-invalid'?: boolean;
    'aria-required'?: boolean;
};

declare const inputVariants: (props?: ({
    size?: "sm" | "default" | "lg" | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { type InputAPI, type InputProps, type InputType, createInput, getInputAriaProps, inputVariants };
