ethers-maths
Version:
➗ Useful ethers-based math libraries to ease the journey through off-chain fixed-point arithmetics
87 lines (86 loc) • 4.12 kB
TypeScript
import { BigNumberish } from "ethers";
declare global {
interface BigInt {
approxEqAbs: (other: BigNumberish, tolerance?: BigNumberish) => boolean;
abs: () => bigint;
min: (other: BigNumberish, ...others: BigNumberish[]) => bigint;
max: (other: BigNumberish, ...others: BigNumberish[]) => bigint;
sum: (others: BigNumberish[]) => bigint;
format: (decimals?: number, digits?: number) => string;
toFloat: (decimals?: number) => number;
mulDiv: (other: BigNumberish, scale: BigNumberish) => bigint;
mulDivUp: (other: BigNumberish, scale: BigNumberish) => bigint;
mulDivDown: (other: BigNumberish, scale: BigNumberish) => bigint;
compMul: (other: BigNumberish) => bigint;
compDiv: (other: BigNumberish) => bigint;
percentAdd: (pct: BigNumberish) => bigint;
percentSub: (pct: BigNumberish) => bigint;
percentMul: (other: BigNumberish) => bigint;
percentMulUp: (other: BigNumberish) => bigint;
percentMulDown: (other: BigNumberish) => bigint;
percentDiv: (other: BigNumberish) => bigint;
percentDivUp: (other: BigNumberish) => bigint;
percentDivDown: (other: BigNumberish) => bigint;
percentAvg: (other: BigNumberish, pct: BigNumberish) => bigint;
percentPow: (exponent: BigNumberish) => bigint;
percentPowUp: (exponent: BigNumberish) => bigint;
percentPowDown: (exponent: BigNumberish) => bigint;
percentExpN: (exponent: BigNumberish) => bigint;
percentToDecimals: (decimals: number) => bigint;
percentToWad: () => bigint;
percentToRay: () => bigint;
formatPercent: (digits?: number) => string;
toPercentFloat: () => number;
wadAdd: (wad: BigNumberish) => bigint;
wadSub: (wad: BigNumberish) => bigint;
wadMul: (other: BigNumberish) => bigint;
wadMulUp: (other: BigNumberish) => bigint;
wadMulDown: (other: BigNumberish) => bigint;
wadDiv: (other: BigNumberish) => bigint;
wadDivUp: (other: BigNumberish) => bigint;
wadDivDown: (other: BigNumberish) => bigint;
wadAvg: (other: BigNumberish, wad: BigNumberish) => bigint;
wadPow: (exponent: BigNumberish) => bigint;
wadPowUp: (exponent: BigNumberish) => bigint;
wadPowDown: (exponent: BigNumberish) => bigint;
wadExpN: (exponent: BigNumberish) => bigint;
wadToDecimals: (decimals: number) => bigint;
wadToPercent: () => bigint;
wadToRay: () => bigint;
formatWad: (digits?: number) => string;
toWadFloat: () => number;
rayAdd: (ray: BigNumberish) => bigint;
raySub: (ray: BigNumberish) => bigint;
rayMul: (other: BigNumberish) => bigint;
rayMulUp: (other: BigNumberish) => bigint;
rayMulDown: (other: BigNumberish) => bigint;
rayDiv: (other: BigNumberish) => bigint;
rayDivUp: (other: BigNumberish) => bigint;
rayDivDown: (other: BigNumberish) => bigint;
rayAvg: (other: BigNumberish, ray: BigNumberish) => bigint;
rayPow: (exponent: BigNumberish) => bigint;
rayPowUp: (exponent: BigNumberish) => bigint;
rayPowDown: (exponent: BigNumberish) => bigint;
rayExpN: (exponent: BigNumberish) => bigint;
rayToDecimals: (decimals: number) => bigint;
rayToPercent: () => bigint;
rayToWad: () => bigint;
formatRay: (digits?: number) => string;
toRayFloat: () => number;
}
interface BigIntConstructor {
PERCENT: bigint;
HALF_PERCENT: bigint;
WAD: bigint;
HALF_WAD: bigint;
RAY: bigint;
HALF_RAY: bigint;
min: (other: BigNumberish, ...others: BigNumberish[]) => bigint;
max: (other: BigNumberish, ...others: BigNumberish[]) => bigint;
sum: (others: BigNumberish[]) => bigint;
pow10: (power: BigNumberish) => bigint;
parsePercent: (value: string) => bigint;
parseWad: (value: string) => bigint;
parseRay: (value: string) => bigint;
}
}