Files
orionprotocol-sdk/src/utils/normalizeNumber.ts
Aleksandr Kraiz c12a4e8e7a Linter standard (#49)
* Impl

* Fix

* Fix

* Bump

* Bump

* Fix

* Bump
2023-02-14 00:34:37 +04:00

26 lines
808 B
TypeScript

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 '${decimalsBN.toString()}' is not an integer`);
const inputBN = new BigNumber(input);
return ethers.BigNumber.from(
inputBN
.multipliedBy(new BigNumber(10).pow(decimals))
.integerValue(roundingMode)
.toString(),
);
}