mirror of
https://github.com/orionprotocol/sdk.git
synced 2026-03-14 06:02:36 +03:00
26 lines
808 B
TypeScript
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(),
|
|
);
|
|
}
|