import type { Brand, Opts } from "@xlabs-xyz/const-utils"; import type { Rationalish, ToFixedOptions } from "./rational.js"; import { Rational } from "./rational.js"; import type { Kind, KindWithHuman, SymbolsOf, DecimalSymbolsOf } from "./kind.js"; import { type Conversion } from "./conversion.js"; export type AmountFromArgs = K extends any ? [kind: K, unitSymbol: SymbolsOf] : never; export declare const scalar: (base: T) => import("@xlabs-xyz/const-utils").Unbrand & import("@xlabs-xyz/const-utils").Branded, "scalar" | import("@xlabs-xyz/const-utils").ExtractTags>; export type RejectScalar = K extends Brand ? never : T; export declare class _Amount { private readonly amount; readonly kind: K; private constructor(); static ofKind(kind: K): (amount: Rationalish | string, unitSymbol?: SymbolsOf) => Amount; static ofKind(kind: K): (amount: Rationalish | string, unitSymbol: SymbolsOf) => Amount; static from(amount: Rationalish | string, ...args: K extends any ? [kind: K, unitSymbol?: SymbolsOf] : never): Amount; static from(amount: Rationalish | string, ...args: AmountFromArgs): Amount; static parse(str: string, ...kinds: K[]): Amount; static isOfKind, N extends string>(amt: A, kindName: N): amt is Extract; toString(): string; toString(system: Extract, opts?: Opts): string; toString(mode: "approximate" | "precise", opts?: Opts; }>): string; toString>(mode: "inUnit", symbol: S, opts?: Opts ? DecimalSymbolsOf : never); }>): string; toJSON(opts?: Opts): string; in>(unitSymbol: S): S extends "atomic" ? bigint : Rational; in(unitSymbol: K extends { human: string; } ? "human" : never): Rational; in(unitSymbol: K extends { atomic: string; } ? "atomic" : never): bigint; ceilTo>(unitSymbol: S): _Amount; roundTo>(unitSymbol: S): _Amount; floorTo>(unitSymbol: S): _Amount; eq(other: _Amount): boolean; ne(other: _Amount): boolean; lt(other: _Amount): boolean; le(other: _Amount): boolean; gt(other: _Amount): boolean; ge(other: _Amount): boolean; add(other: _Amount): _Amount; sub(other: _Amount): _Amount; mul(other: Rationalish | Amount>): Amount; mul(other: Conversion): Amount; div(other: Rationalish | Amount>): Amount; div(other: _Amount): Rational; div(other: Conversion): Amount; mod(other: _Amount): _Amount; per(this: RejectScalar>, den: RejectScalar>): Conversion; private static fromInternal; private getIn; private checkKind; private static isConversion; } type Amount = K extends Kind ? _Amount : never; declare const Amount: typeof _Amount; export { Amount }; //# sourceMappingURL=amount.d.ts.map