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
JavaScript
;
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;