import { type BigIntFormatOptions } from '@graphprotocol/gds-utils';
import type { CurrencyInputProps } from '../components/CurrencyInput.tsx';
import { type UseNumberInputError, type UseNumberInputOptions, type UseNumberInputReturnedObject } from './useNumberInput.ts';
export type UseCurrencyInputCurrency = {
    code: string;
    format: BigIntFormatOptions;
};
export type UseCurrencyInputOptions<UseBigInt extends boolean = false, T = UseBigInt extends true ? bigint : number> = Omit<UseNumberInputOptions<UseBigInt, T>, 'format'> & {
    /** @default 0 */
    min?: T | null | undefined;
    /** @default 'GRT' */
    currency?: string | UseCurrencyInputCurrency | undefined;
    /** @default { code: 'USD', format: { minimumFractionDigits: 2, maximumFractionDigits: 2 } } */
    convertedCurrency?: string | UseCurrencyInputCurrency | undefined;
    conversionRate?: T | ((value: T) => T) | undefined;
};
export type UseCurrencyInputReturnedObject<T = number | bigint> = {
    /** `null` means the input is either empty or invalid; check `error` to know which. */
    value: T | null;
    setValue: (value: T | null) => void;
    convertedValue: T | null;
    error: UseNumberInputError | null;
    nonValidatedValue: bigint | null;
    nearestValidValue: T;
    props: UseNumberInputReturnedObject<T>['props'] & {
        currency: CurrencyInputProps['currency'];
        convertedCurrency: CurrencyInputProps['convertedCurrency'];
        convertedAmount?: CurrencyInputProps['convertedAmount'] | undefined;
        onMaxClicked?: CurrencyInputProps['onMaxClicked'] | undefined;
    };
};
export declare function useCurrencyInput<UseBigInt extends boolean = false, T = UseBigInt extends true ? bigint : number>({ useBigInt, precision, min, max, currency: passedCurrency, convertedCurrency: passedConvertedCurrency, conversionRate, ...options }?: UseCurrencyInputOptions<UseBigInt>): UseCurrencyInputReturnedObject<T>;
//# sourceMappingURL=useCurrencyInput.d.ts.map