export declare const MaInputBaseSizes: {
    readonly sm: "sm";
    readonly md: "md";
    readonly lg: "lg";
};
export type MaInputBaseSize = typeof MaInputBaseSizes[keyof typeof MaInputBaseSizes];
/**
 * Props for MaInputBase — pure layout concerns only.
 * No behavioral state (no isFocused, no inputRef, no event handlers).
 */
export interface MaInputBaseProps {
    /** Size variant of the input. @default 'sm' */
    size?: MaInputBaseSize;
    /** Whether the input appears focused (drives visual focus ring). */
    focused?: boolean;
    /** Whether the input appears disabled. */
    disabled?: boolean;
    /** Whether the input appears readonly. */
    readonly?: boolean;
    /** Error state. When true, input enters error visual state. */
    error?: boolean;
    /** Icon name for the prefix area. For custom content, use #prefix slot. */
    prefixIcon?: string;
    /** Icon name for the suffix area. For custom content, use #suffix slot. */
    suffixIcon?: string;
    /** Whether to show a clear button when the input has a value. */
    clearable?: boolean;
    /** Whether the input currently has a value. Used by clearable to decide visibility. */
    hasValue?: boolean;
    /** Additional props/attributes to pass to the outer wrapper element */
    wrapperProps?: Record<string, unknown>;
}
/**
 * Expose interface for input variant components.
 * Base does NOT expose anything — only variants do.
 */
export interface MaInputExpose {
    focus: () => void;
    blur: () => void;
}
export interface MaCurrencyInputProps extends Omit<MaInputBaseProps, 'focused' | 'hasValue'> {
    /** Custom id for the native input element. Auto-generated if not provided. */
    id?: string;
    /** Native autocomplete hint for browser autofill behavior (e.g. 'off', 'email', 'new-password'). */
    autocomplete?: string;
    /**
     * ISO 4217 currency code.
     * Determines symbol, separators, and fraction digits automatically.
     * @default 'USD'
     */
    currency?: string;
    /** Placeholder for the native input element */
    placeholder?: string;
}
export interface MaTextInputProps extends Omit<MaInputBaseProps, 'focused' | 'hasValue'> {
    /** Custom id for the native input element. Auto-generated if not provided. */
    id?: string;
    /** Native autocomplete hint for browser autofill behavior (e.g. 'off', 'email', 'name'). */
    autocomplete?: string;
    /** Placeholder for the native input element */
    placeholder?: string;
}
export interface MaNumberInputProps extends Omit<MaInputBaseProps, 'focused' | 'hasValue'> {
    /** Custom id for the native input element. Auto-generated if not provided. */
    id?: string;
    /** Native autocomplete hint for browser autofill behavior. */
    autocomplete?: string;
    /** Placeholder for the native input element */
    placeholder?: string;
    /** Minimum allowed value */
    min?: number;
    /** Maximum allowed value */
    max?: number;
    /** Step amount for keyboard increment/decrement (↑/↓ keys) @default 1 */
    step?: number;
    /** Number of decimal places to round to on blur */
    precision?: number;
    /**
     * Locale used for default Intl.NumberFormat based formatting.
     * Only used if no custom formatter/parser is provided.
     * @default 'en-US'
     */
    locale?: string;
    /** Custom formatter function to display the value. Overrides default locale formatting. */
    formatter?: (value: number) => string;
    /** Custom parser function to parse the input value. Overrides default locale parsing. */
    parser?: (value: string) => number | null;
}
export interface MaPasswordInputProps extends Omit<MaInputBaseProps, 'focused' | 'hasValue'> {
    /** Custom id for the native input element. Auto-generated if not provided. */
    id?: string;
    /** Native autocomplete hint. Prefer semantic values like 'current-password' or 'new-password'. */
    autocomplete?: string;
    /** Placeholder for the native input element */
    placeholder?: string;
}
export interface MaTextareaProps extends Omit<MaInputBaseProps, 'focused' | 'hasValue'> {
    /** Custom id for the native textarea element. Auto-generated if not provided. */
    id?: string;
    /** Native autocomplete hint for browser autofill behavior. */
    autocomplete?: string;
    /** Placeholder for the textarea element */
    placeholder?: string;
    /** Initial number of visible text rows @default 3 */
    rows?: number;
    /** Maximum rows before scroll appears (only relevant when autoResize is true) */
    maxRows?: number;
    /** When true, textarea grows with content up to maxRows @default false */
    autoResize?: boolean;
}
