Initial commit

This commit is contained in:
Aleksandr Kraiz
2022-04-20 23:41:04 +04:00
commit 106b702d21
118 changed files with 25394 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
import BigNumber from 'bignumber.js';
import { ethers } from 'ethers';
/**
* Converts denormalized ("human-readable") number to normalized ("machine-readable") number.
* @param input Any numeric value
* @param decimals Blockchain asset precision
* @param roundingMode Rounding mode
* @returns ethers.BigNumber
*/
export default function normalizeNumber(
input: BigNumber.Value,
decimals: BigNumber.Value,
roundingMode: BigNumber.RoundingMode,
) {
const decimalsBN = new BigNumber(decimals);
if (!decimalsBN.isInteger()) throw new Error(`Decimals '${decimals.toString()}' is not an integer`);
const inputBN = new BigNumber(input);
return ethers.BigNumber.from(
inputBN
.multipliedBy(new BigNumber(10).pow(decimals))
.integerValue(roundingMode)
.toString(),
);
}