@swapper-finance/sdk
Version:
JavaScript SDK form Swapper
62 lines (54 loc) • 1.59 kB
text/typescript
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;
};