import { type CurrencyCode } from "../util/currency.js";
import { NumberSchema, type NumberSchemaOptions } from "./NumberSchema.js";
/** Allowed options for `CurrencyAmountSchema`. */
export interface CurrencyAmountSchemaOptions extends NumberSchemaOptions {
    readonly symbol?: string | undefined;
    readonly currency: CurrencyCode;
}
/**
 * Schema representing a numeric amount in a specific currency.
 *
 * - The validation step is inferred from the currency's minor units.
 * - The default formatter renders amounts using shelving's currency helpers.
 *
 * @example
 * const PRICE = new CurrencyAmountSchema({ currency: "GBP", min: 0 });
 * PRICE.validate("12.345"); // 12.35
 * PRICE.format(12.3); // "£12.30"
 */
export declare class CurrencyAmountSchema extends NumberSchema {
    readonly step: number;
    readonly currency: CurrencyCode;
    readonly symbol: string;
    constructor({ currency, one, title, symbol, step, ...options }: CurrencyAmountSchemaOptions);
    format(value: number): string;
}
/** Valid non-negative monetary amount in the a currency. */
export declare const CURRENCY_AMOUNT: (currency: CurrencyCode) => CurrencyAmountSchema;
export declare const USD_AMOUNT: CurrencyAmountSchema;
export declare const GBP_AMOUNT: CurrencyAmountSchema;
export declare const EUR_AMOUNT: CurrencyAmountSchema;
/** Valid optional monetary amount in the default currency, or `null`. */
export declare const NULLABLE_CURRENCY_AMOUNT: (currency: CurrencyCode) => import("./NullableSchema.js").NullableSchema<number>;
export declare const NULLABLE_USD_AMOUNT: import("./NullableSchema.js").NullableSchema<number>;
export declare const NULLABLE_GBP_AMOUNT: import("./NullableSchema.js").NullableSchema<number>;
export declare const NULLABLE_EUR_AMOUNT: import("./NullableSchema.js").NullableSchema<number>;
