ethers-maths
Version:
➗ Useful ethers-based math libraries to ease the journey through off-chain fixed-point arithmetics
82 lines (81 loc) • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toWadFloat = exports.formatWad = exports.wadToRay = exports.wadToPercent = exports.wadToDecimals = exports.wadExpN = exports.wadPowDown = exports.wadPowUp = exports.wadPow = exports.wadAvg = exports.wadDivDown = exports.wadDivUp = exports.wadDiv = exports.wadMulDown = exports.wadMulUp = exports.wadMul = exports.wadSub = exports.wadAdd = exports.parseWad = void 0;
const ethers_1 = require("ethers");
const constants_1 = require("./constants");
const utils_1 = require("./utils");
const format_1 = require("./format");
const parseWad = (value) => (0, ethers_1.parseUnits)(value, 18);
exports.parseWad = parseWad;
const wadAdd = (x, wad) => {
return (0, exports.wadMul)(x, constants_1.WAD + (0, ethers_1.toBigInt)(wad));
};
exports.wadAdd = wadAdd;
const wadSub = (x, wad) => {
return (0, exports.wadMul)(x, constants_1.WAD - (0, ethers_1.toBigInt)(wad));
};
exports.wadSub = wadSub;
const wadMul = (x, other) => {
return (0, utils_1.mulDivHalfUp)(x, other, constants_1.WAD);
};
exports.wadMul = wadMul;
const wadMulUp = (x, other) => {
return (0, utils_1.mulDivUp)(x, other, constants_1.WAD);
};
exports.wadMulUp = wadMulUp;
const wadMulDown = (x, other) => {
return (0, utils_1.mulDivDown)(x, other, constants_1.WAD);
};
exports.wadMulDown = wadMulDown;
const wadDiv = (x, other) => {
return (0, utils_1.mulDivHalfUp)(x, constants_1.WAD, other);
};
exports.wadDiv = wadDiv;
const wadDivUp = (x, other) => {
return (0, utils_1.mulDivUp)(x, constants_1.WAD, other);
};
exports.wadDivUp = wadDivUp;
const wadDivDown = (x, other) => {
return (0, utils_1.mulDivDown)(x, constants_1.WAD, other);
};
exports.wadDivDown = wadDivDown;
const wadAvg = (x, other, wad) => {
return (0, utils_1.avgHalfUp)(x, other, wad, constants_1.WAD);
};
exports.wadAvg = wadAvg;
const wadPow = (x, exponent) => {
return (0, utils_1.pow)(x, exponent, constants_1.WAD, utils_1.mulDivHalfUp);
};
exports.wadPow = wadPow;
const wadPowUp = (x, exponent) => {
return (0, utils_1.pow)(x, exponent, constants_1.WAD, utils_1.mulDivUp);
};
exports.wadPowUp = wadPowUp;
const wadPowDown = (x, exponent) => {
return (0, utils_1.pow)(x, exponent, constants_1.WAD, utils_1.mulDivDown);
};
exports.wadPowDown = wadPowDown;
const wadExpN = (x, N) => {
return (0, utils_1.expN)(x, N, constants_1.WAD, utils_1.mulDivDown);
};
exports.wadExpN = wadExpN;
const wadToDecimals = (x, decimals) => {
return (0, format_1.toDecimals)(x, decimals, 18);
};
exports.wadToDecimals = wadToDecimals;
const wadToPercent = (x) => {
return (0, exports.wadToDecimals)(x, 4);
};
exports.wadToPercent = wadToPercent;
const wadToRay = (x) => {
return (0, exports.wadToDecimals)(x, 27);
};
exports.wadToRay = wadToRay;
const formatWad = (x, digits) => {
return (0, format_1.format)(x, 18, digits);
};
exports.formatWad = formatWad;
const toWadFloat = (x) => {
return (0, format_1.toFloat)(x, 18);
};
exports.toWadFloat = toWadFloat;