UNPKG

@swapper-finance/sdk

Version:
62 lines (54 loc) 1.59 kB
import BigNumberJS from "bignumber.js"; import { BigNumber, utils } from "ethers"; export const safeBigNumberFrom = (value: string) => { BigNumberJS.config({ DECIMAL_PLACES: 0 }); return BigNumber.from(new BigNumberJS(value).div(1).toFixed()); }; export const weiToHumanReadable = ({ amount, decimals, precisionFractionalPlaces, prettifySmallNumber = false, }: { amount: string; decimals: number; precisionFractionalPlaces: number; prettifySmallNumber?: boolean; }): string => { const decimalsFactor = Math.pow(10, decimals); BigNumberJS.config({ DECIMAL_PLACES: precisionFractionalPlaces }); const res = new BigNumberJS(amount).div(decimalsFactor).toFixed(); if (prettifySmallNumber && res === "0" && amount !== "0") { return `<${(1 / 10 ** precisionFractionalPlaces).toFixed( precisionFractionalPlaces, )}`; } return res; }; export const humanReadableToWei = ({ amount, decimals, }: { amount: string; decimals: number; }): string => { const decimalsFactor = Math.pow(10, decimals); const parsedAmount = new BigNumberJS(amount || "0"); return safeBigNumberFrom( parsedAmount.mul(decimalsFactor).toFixed(), ).toString(); }; export const generateRandomBigNumber = (length: number) => { return BigNumber.from(utils.randomBytes(length)); }; export const generateUniqueRandomBigNumber = ( length: number, // eslint-disable-next-line existingValues: any[], ) => { let result; while (result === undefined || existingValues.includes(result)) { result = generateRandomBigNumber(length); } return result; };