aftermath-ts-sdk
Version:
Aftermath TypeScript SDK
109 lines • 4.61 kB
TypeScript
import { Balance, DecimalsScalar, NormalizedBalance } from "../../types";
/**
* The `FixedUtils` class provides utilities for fixed-point arithmetic
* with a standard 18-decimal precision, along with some convenience
* methods for normalizing/un-normalizing amounts based on token decimals.
*/
export declare class FixedUtils {
/**
* Represents 1.0 in 18-decimal fixed math as a float: 1_000_000_000_000_000_000.
*/
static readonly fixedOneN: number;
/**
* Represents 1.0 in 18-decimal fixed math as a bigint: 1000000000000000000n.
*/
static readonly fixedOneB: bigint;
/**
* Represents 1.0 in 9-decimal fixed math as a float: 1_000_000_000.
*/
static readonly fixedOneN9 = 1000000000;
/**
* Represents 1.0 in 9-decimal fixed math as a bigint: 1000000000n.
*/
static readonly fixedOneB9: bigint;
/**
* Directly convert an on-chain `u64` (stored as a bigint) into a float, effectively no scaling.
*
* @param n - The on-chain number as a bigint.
* @returns The converted number as a float.
*/
static readonly convertFromInt: (n: OnChainNumber) => LocalNumber;
/**
* Convert a floating number back to an on-chain integer (bigint),
* truncating decimals.
*
* @param n - The local float.
* @returns The truncated bigint.
*/
static readonly convertToInt: (n: LocalNumber) => OnChainNumber;
/**
* Converts a fixed-18 on-chain number to a floating local number by dividing by `fixedOneN`.
*
* @param n - The on-chain 18-decimal fixed number (as a bigint).
* @returns A float representing the unscaled value.
*/
static readonly directCast: (n: OnChainNumber) => LocalNumber;
/**
* Converts a floating local number to an on-chain 18-decimal fixed bigint by multiplying by `fixedOneN`.
*
* @param n - The local float to be scaled.
* @returns The scaled 18-decimal fixed as a bigint.
*/
static readonly directUncast: (n: LocalNumber) => OnChainNumber;
/**
* Returns the complement of the number in `[0,1]`, i.e., `1 - n`.
* If `n` is negative, it's treated as zero; if `n` > 1, also treated as zero for the complement.
*
* @param n - The local float in [0,1].
* @returns The complement of `n` in [0,1].
*/
static readonly complement: (n: LocalNumber) => number;
/**
* Multiplies a raw integer `amount` by a `decimalsScalar` to produce
* a "normalized" form. E.g., if decimals = 9, we store it as 10^9 scale.
*
* @param decimalsScalar - The scale factor for the coin (e.g., 1e9).
* @param amount - The raw integer (balance) to be scaled.
* @returns The scaled (normalized) amount as a `number`.
*/
static readonly normalizeAmount: (decimalsScalar: DecimalsScalar, amount: Balance) => NormalizedBalance;
/**
* Divides a normalized amount by the `decimalsScalar` to get back the
* raw on-chain integer. This is typically used after floating computations.
*
* @param decimalsScalar - The scale factor for the coin (e.g., 1e9).
* @param normalizedAmount - The scaled amount to reduce.
* @returns The raw integer balance.
*/
static readonly unnormalizeAmount: (decimalsScalar: DecimalsScalar, normalizedAmount: NormalizedBalance) => Balance;
/**
* Directly cast a `Balance` to an 18-decimal float, factoring in token decimals.
*
* @param decimalsScalar - The token's decimal scale factor.
* @param amount - The raw integer `Balance`.
* @returns A float representing the 18-decimal scale cast.
*/
static readonly castAndNormalize: (decimalsScalar: DecimalsScalar, amount: Balance) => LocalNumber;
/**
* Reverse the cast of a normalized float back to a raw `Balance`,
* factoring in the token decimals.
*
* @param decimalsScalar - The token's decimal scale factor.
* @param normalizedAmount - A local float in 18-decimal domain.
* @returns A raw integer `Balance`.
*/
static readonly uncastAndUnnormalize: (decimalsScalar: DecimalsScalar, normalizedAmount: LocalNumber) => Balance;
}
/**
* A numeric type used on chain, typically fixed 18 decimals or direct u64.
*/
export type OnChainNumber = bigint;
/**
* A local floating value for user calculations or UI representation.
*/
export type LocalNumber = number;
/**
* A scalar is any fixed 18-point number. They are stored on chain as a u128 and are always directly cast.
*/
export type OnChainScalar = OnChainNumber;
//# sourceMappingURL=fixedUtils.d.ts.map