/**
 * ISO-4217 currency codes.
 */
declare const CURRENCY_CODES: readonly ["USD", "EUR", "CAD", "GBP"];
export type CurrencyCode = (typeof CURRENCY_CODES)[number];
export declare function isCurrencyCode(value: string): value is CurrencyCode;
export declare function currencyCode(value: string): CurrencyCode;
declare const CURRENCY_SCALES: readonly [2];
/**
 * Represents the scale of the currency.
 *
 * - `2`: The minor unit is 1/100 of the major unit.
 */
type CurrencyScale = (typeof CURRENCY_SCALES)[number];
export declare function isCurrencyScale(value: number): value is CurrencyScale;
export declare function currencyScale(value: number): CurrencyScale;
/**
 * Represents a currency with decimal precision.
 *
 * To add support for a currency:
 *  1. Add the new currency code to the {@link CURRENCY_CODES} array.
 *  2. Create a corresponding mapping in the {@link SUPPORTED_CURRENCIES} map.
 */
export declare class Currency {
    private static readonly SUPPORTED_CURRENCIES;
    private readonly _code;
    private readonly _scale;
    constructor(code: string | CurrencyCode, scale: number | CurrencyScale);
    get code(): "USD" | "EUR" | "CAD" | "GBP";
    get scale(): 2;
    static of(code: string | CurrencyCode): Currency;
}
export {};
