UNPKG

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
"use strict"; 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;