import { LucideIcon } from "lucide-react";
import { ChangeEvent, InputHTMLAttributes } from "react";
import "./style.css";
type Locale = "USD" | "EUR" | "JPY" | "GBP" | "AUD" | "CAD" | "CHF" | "CNY" | "SEK" | "NZD" | "BRL" | "INR" | "RUB" | "ZAR" | "MXN" | "SGD" | "HKD" | "NOK" | "KRW" | "TRY" | "IDR" | "THB";
type CurrencyInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "prefix" | "name" | "type" | "max" | "defaultValue" | "value" | "onChange" | "placeholder"> & {
    name: string;
    locale: Locale;
    label?: string;
    errorMessage?: string;
    isLoading?: boolean;
    size?: "md" | "lg";
    variant?: "solid" | "outline" | "underline";
    prefix?: string | LucideIcon;
    suffix?: string | LucideIcon;
    showAsterisk?: boolean;
    leftIcon?: LucideIcon;
    rightIcon?: LucideIcon;
    max?: number;
    value?: number | null;
    defaultValue?: number | null;
    onChange?: (event: ChangeEvent<HTMLInputElement>, originalValue: string, maskedValue: string) => void;
};
/**
 * CurrencyInput component - used for currency input fields with automatic formatting based on locale
 *
 * @param props - CurrencyInput component properties
 * @param props.name - Required field name for form handling
 * @param props.locale - Currency locale for formatting (e.g., "USD", "EUR", "BRL", etc.)
 * @param props.label - Optional label text to display above the input
 * @param props.errorMessage - Error message to display below the input
 * @param props.isLoading - Controls loading state with spinner. Default: false
 * @param props.size - Input size. Default: "md"
 * @param props.variant - Visual variant of the input. Default: "solid"
 * @param props.prefix - Text or icon to display at the beginning of the input
 * @param props.suffix - Text or icon to display at the end of the input
 * @param props.showAsterisk - Whether to show asterisk on label for required fields
 * @param props.leftIcon - Optional icon to display on the left side
 * @param props.rightIcon - Optional icon to display on the right side
 * @param props.max - Maximum allowed value for the currency input
 * @param props.value - Controlled value (number) for the input
 * @param props.defaultValue - Default value (number) for uncontrolled usage
 * @param props.onChange - Callback function called when value changes, receives event, original value and masked value
 *
 * **...Other valid HTML properties for input element (except type, max, defaultValue, value, onChange)**
 *
 * @returns CurrencyInput JSX element wrapped in FieldGroup with optional label and error
 *
 * @example
 * ```tsx
 * // Basic currency input
 * <CurrencyInput name="price" locale="USD" placeholder="Enter price" />
 *
 * // Currency input with label and validation
 * <CurrencyInput
 *   name="salary"
 *   locale="BRL"
 *   label="Monthly Salary"
 *   showAsterisk
 *   errorMessage="Please enter a valid amount"
 * />
 *
 * // Currency input with icons and loading state
 * <CurrencyInput
 *   name="budget"
 *   locale="EUR"
 *   label="Budget"
 *   leftIcon={DollarSignIcon}
 *   rightIcon={CalculatorIcon}
 *   isLoading
 * />
 *
 * // Currency input with max value and controlled state
 * <CurrencyInput
 *   name="limit"
 *   locale="USD"
 *   label="Credit Limit"
 *   max={10000}
 *   value={creditLimit}
 *   onChange={(e, original, masked) => setCreditLimit(Number(original))}
 *   variant="outline"
 * />
 *
 * // Large currency input with prefix/suffix
 * <CurrencyInput
 *   name="investment"
 *   locale="GBP"
 *   label="Investment Amount"
 *   size="lg"
 *   variant="underline"
 *   prefix="£"
 *   suffix="GBP"
 *   placeholder="Enter investment amount"
 * />
 * ```
 */
declare function CurrencyInput(props: CurrencyInputProps): import("react/jsx-runtime").JSX.Element;
export { CurrencyInput };
//# sourceMappingURL=index.d.ts.map