UNPKG

ethers-maths

Version:

➗ Useful ethers-based math libraries to ease the journey through off-chain fixed-point arithmetics

82 lines (81 loc) 3.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toPercentFloat = exports.formatPercent = exports.percentToWad = exports.percentToRay = exports.percentToDecimals = exports.percentExpN = exports.percentPowDown = exports.percentPowUp = exports.percentPow = exports.percentAvg = exports.percentDivDown = exports.percentDivUp = exports.percentDiv = exports.percentMulDown = exports.percentMulUp = exports.percentMul = exports.percentSub = exports.percentAdd = exports.parsePercent = void 0; const ethers_1 = require("ethers"); const constants_1 = require("./constants"); const utils_1 = require("./utils"); const format_1 = require("./format"); const parsePercent = (value) => (0, ethers_1.parseUnits)(value, 2); exports.parsePercent = parsePercent; const percentAdd = (x, percent) => { return (0, exports.percentMul)(x, constants_1.PERCENT + (0, ethers_1.toBigInt)(percent)); }; exports.percentAdd = percentAdd; const percentSub = (x, percent) => { return (0, exports.percentMul)(x, constants_1.PERCENT - (0, ethers_1.toBigInt)(percent)); }; exports.percentSub = percentSub; const percentMul = (x, other) => { return (0, utils_1.mulDivHalfUp)(x, other, constants_1.PERCENT); }; exports.percentMul = percentMul; const percentMulUp = (x, other) => { return (0, utils_1.mulDivUp)(x, other, constants_1.PERCENT); }; exports.percentMulUp = percentMulUp; const percentMulDown = (x, other) => { return (0, utils_1.mulDivDown)(x, other, constants_1.PERCENT); }; exports.percentMulDown = percentMulDown; const percentDiv = (x, other) => { return (0, utils_1.mulDivHalfUp)(x, constants_1.PERCENT, other); }; exports.percentDiv = percentDiv; const percentDivUp = (x, other) => { return (0, utils_1.mulDivUp)(x, constants_1.PERCENT, other); }; exports.percentDivUp = percentDivUp; const percentDivDown = (x, other) => { return (0, utils_1.mulDivDown)(x, constants_1.PERCENT, other); }; exports.percentDivDown = percentDivDown; const percentAvg = (x, other, percent) => { return (0, utils_1.avgHalfUp)(x, other, percent, constants_1.PERCENT); }; exports.percentAvg = percentAvg; const percentPow = (x, exponent) => { return (0, utils_1.pow)(x, exponent, constants_1.PERCENT, utils_1.mulDivHalfUp); }; exports.percentPow = percentPow; const percentPowUp = (x, exponent) => { return (0, utils_1.pow)(x, exponent, constants_1.PERCENT, utils_1.mulDivUp); }; exports.percentPowUp = percentPowUp; const percentPowDown = (x, exponent) => { return (0, utils_1.pow)(x, exponent, constants_1.PERCENT, utils_1.mulDivDown); }; exports.percentPowDown = percentPowDown; const percentExpN = (x, N) => { return (0, utils_1.expN)(x, N, constants_1.PERCENT, utils_1.mulDivDown); }; exports.percentExpN = percentExpN; const percentToDecimals = (x, decimals) => { return (0, format_1.toDecimals)(x, decimals, 4); }; exports.percentToDecimals = percentToDecimals; const percentToRay = (x) => { return (0, exports.percentToDecimals)(x, 27); }; exports.percentToRay = percentToRay; const percentToWad = (x) => { return (0, exports.percentToDecimals)(x, 18); }; exports.percentToWad = percentToWad; const formatPercent = (x, digits) => { return (0, format_1.format)(x, 4, digits); }; exports.formatPercent = formatPercent; const toPercentFloat = (x) => { return (0, format_1.toFloat)(x, 4); }; exports.toPercentFloat = toPercentFloat;