@mozaic-fi/intent-swapper-sdk-common
Version:
Intent Swapper Common SDK
32 lines • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toSmallUnit = toSmallUnit;
exports.toBigUnit = toBigUnit;
exports.formatBigUnit = formatBigUnit;
exports.calcSlippage = calcSlippage;
const tslib_1 = require("tslib");
const ethers_1 = require("ethers");
const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js"));
function toSmallUnit(amount, decimals) {
amount = (0, bignumber_js_1.default)(amount);
return amount.isZero()
? ethers_1.BigNumber.from(0)
: ethers_1.utils.parseUnits(amount.decimalPlaces(decimals, bignumber_js_1.default.ROUND_DOWN).toFixed(), decimals);
}
function toBigUnit(amountWei, decimals, options = {}) {
const { displayDecimals, mode } = options;
return (0, bignumber_js_1.default)(amountWei.toString())
.shiftedBy(-decimals)
.decimalPlaces(displayDecimals ? displayDecimals : decimals, mode === 'round' ? bignumber_js_1.default.ROUND_HALF_UP : mode === 'ceil' ? bignumber_js_1.default.ROUND_UP : bignumber_js_1.default.ROUND_DOWN)
.toFixed();
}
function formatBigUnit(amount, displayDecimals, mode) {
return (0, bignumber_js_1.default)(amount)
.decimalPlaces(displayDecimals, mode === 'floor' ? bignumber_js_1.default.ROUND_DOWN : mode === 'ceil' ? bignumber_js_1.default.ROUND_UP : bignumber_js_1.default.ROUND_HALF_UP)
.toFixed();
}
function calcSlippage(amountWei, slippage, base = 10000) {
amountWei = ethers_1.BigNumber.from(amountWei);
return amountWei.isZero() ? amountWei : amountWei.mul(base - slippage).div(base);
}
//# sourceMappingURL=bignumber.js.map