UNPKG

@chorus-one/substrate

Version:

All-in-one toolkit for building staking dApps on Substrate Network SDK blockchains(Polkadot, Kusama, etc.)

48 lines (47 loc) 2.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDenomMultiplier = exports.denomToMacroAmount = exports.macroToDenomAmount = void 0; const utils_1 = require("@chorus-one/utils"); const bignumber_js_1 = __importDefault(require("bignumber.js")); function macroToDenomAmount(amount, // in macro denom (e.g. ATOM) denomMultiplier) { (0, utils_1.checkMaxDecimalPlaces)(denomMultiplier); if (BigInt(denomMultiplier) === BigInt(0)) { throw new Error('denomMultiplier cannot be 0'); } if ((0, bignumber_js_1.default)(amount).isNaN()) { throw new Error('invalid amount: ' + amount + ' failed to parse to number'); } const macroAmount = (0, bignumber_js_1.default)(denomMultiplier).multipliedBy(amount); if (macroAmount.isNegative()) { throw new Error('amount cannot be negative'); } const decimalPlaces = macroAmount.decimalPlaces(); if (decimalPlaces !== null && decimalPlaces > 0) { throw new Error(`exceeded maximum denominator precision, amount: ${macroAmount.toString()}, precision: .${macroAmount.precision()}`); } return macroAmount.toString(10); } exports.macroToDenomAmount = macroToDenomAmount; function denomToMacroAmount(amount, // in denom (e.g. uatom, adydx) denomMultiplier) { (0, utils_1.checkMaxDecimalPlaces)(denomMultiplier); if (BigInt(denomMultiplier) === BigInt(0)) { throw new Error('denomMultiplier cannot be 0'); } if ((0, bignumber_js_1.default)(amount).isNaN()) { throw new Error('invalid amount: ' + amount + ' failed to parse to number'); } return (0, bignumber_js_1.default)(amount).dividedBy(denomMultiplier).toString(10); } exports.denomToMacroAmount = denomToMacroAmount; function getDenomMultiplier(denomMultiplier) { if (denomMultiplier === undefined) { throw new Error('denomMultiplier is not set'); } return denomMultiplier; } exports.getDenomMultiplier = getDenomMultiplier;