UNPKG

@moonwell-fi/moonwell-sdk

Version:

TypeScript Interface for Moonwell

40 lines 2.29 kB
"use strict"; 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