@moonwell-fi/moonwell-sdk
Version:
TypeScript Interface for Moonwell
40 lines • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toAssetsUp = exports.toSharesDown = exports.toAssetsDown = exports.wTaylorCompounded = exports.mulDivDown = exports.wDivUp = exports.wDivDown = exports.wMulDown = exports.MAX_UINT256 = exports.VIRTUAL_SHARES = exports.VIRTUAL_ASSETS = exports.SECONDS_PER_YEAR = exports.WAD = exports.ORACLE_PRICE_SCALE = exports.pow10 = void 0;
const pow10 = (exponant) => 10n ** BigInt(exponant);
exports.pow10 = pow10;
exports.ORACLE_PRICE_SCALE = (0, exports.pow10)(36);
exports.WAD = (0, exports.pow10)(18);
exports.SECONDS_PER_YEAR = 3600 * 24 * 365;
exports.VIRTUAL_ASSETS = 1n;
exports.VIRTUAL_SHARES = 10n ** 6n;
exports.MAX_UINT256 = BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
const wMulDown = (x, y) => (0, exports.mulDivDown)(x, y, exports.WAD);
exports.wMulDown = wMulDown;
const wDivDown = (x, y) => (0, exports.mulDivDown)(x, exports.WAD, y);
exports.wDivDown = wDivDown;
const wDivUp = (x, y) => mulDivUp(x, exports.WAD, y);
exports.wDivUp = wDivUp;
const mulDivDown = (x, y, d) => (BigInt(x) * BigInt(y)) / BigInt(d);
exports.mulDivDown = mulDivDown;
const mulDivUp = (x, y, d) => (BigInt(x) * BigInt(y) + (BigInt(d) - 1n)) / BigInt(d);
const wTaylorCompounded = (x, n) => {
const firstTerm = BigInt(x) * BigInt(n);
const secondTerm = (0, exports.mulDivDown)(firstTerm, firstTerm, 2n * exports.WAD);
const thirdTerm = (0, exports.mulDivDown)(secondTerm, firstTerm, 3n * exports.WAD);
return firstTerm + secondTerm + thirdTerm;
};
exports.wTaylorCompounded = wTaylorCompounded;
const toAssetsDown = (shares, totalAssets, totalShares) => {
return (0, exports.mulDivDown)(shares, totalAssets + exports.VIRTUAL_ASSETS, totalShares + exports.VIRTUAL_SHARES);
};
exports.toAssetsDown = toAssetsDown;
const toSharesDown = (assets, totalAssets, totalShares) => {
return (0, exports.mulDivDown)(assets, totalShares + exports.VIRTUAL_SHARES, totalAssets + exports.VIRTUAL_ASSETS);
};
exports.toSharesDown = toSharesDown;
const toAssetsUp = (shares, totalAssets, totalShares) => {
return mulDivUp(shares, totalAssets + exports.VIRTUAL_ASSETS, totalShares + exports.VIRTUAL_SHARES);
};
exports.toAssetsUp = toAssetsUp;
//# sourceMappingURL=math.js.map