UNPKG

@catalabs/catalyst-sdk

Version:
55 lines 3.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calcPriceCurveAreaAmp = calcPriceCurveAreaAmp; exports.calcPriceCurveLimitAmp = calcPriceCurveLimitAmp; exports.calcPriceCurveLimitShareAmp = calcPriceCurveLimitShareAmp; exports.calcVaultTokensToUnitsAmp = calcVaultTokensToUnitsAmp; exports.calcUnitsToVaultTokensAmp = calcUnitsToVaultTokensAmp; exports.calcUnitsForVaultTokensAmp = calcUnitsForVaultTokensAmp; const math_lib_1 = require("../math.lib"); const math_amplified_functions_1 = require("./math.amplified.functions"); function calcPriceCurveAreaAmp(input, A, W, oneMinusAmp) { let calc = (0, math_lib_1.powWad)(W * (A + input) * math_lib_1.WAD, oneMinusAmp); if (A !== 0n) { calc = calc - (0, math_lib_1.powWad)(W * A * math_lib_1.WAD, oneMinusAmp); } return calc; } function calcPriceCurveLimitAmp(U, B, W, oneMinusAmp) { const W_BxBtoOMA = (0, math_lib_1.powWad)(W * B * math_lib_1.WAD, oneMinusAmp); if (W_BxBtoOMA < U) { return B; } return (B * (math_lib_1.WAD - (0, math_lib_1.powWad)(((W_BxBtoOMA - U + 1n) * math_lib_1.WAD) / W_BxBtoOMA, (math_lib_1.WAD * math_lib_1.WAD) / oneMinusAmp))); } function calcPriceCurveLimitShareAmp(U, ts, it_times_walpha_amped, oneMinusAmpInverse) { return ((ts * ((0, math_lib_1.powWad)(((it_times_walpha_amped + U) * math_lib_1.WAD) / it_times_walpha_amped, oneMinusAmpInverse) - math_lib_1.WAD)) / math_lib_1.WAD); } function calcVaultTokensToUnitsAmp(vaultTokens, totalSupply, walpha_0_ampped, oneMinusAmp, NTokens) { const pt_fraction = ((totalSupply - vaultTokens) * math_lib_1.WAD) / totalSupply; return ((walpha_0_ampped * (math_lib_1.WAD - (0, math_lib_1.powWad)(pt_fraction, oneMinusAmp)) * BigInt(NTokens)) / math_lib_1.WAD); } function calcUnitsToVaultTokensAmp(U, totalSupply, tokenAmounts, tokenWeights, unitTracker, amplification) { const walpha_0_ampped = (0, math_amplified_functions_1.balance0Amp)(math_lib_1.WAD - amplification, tokenAmounts, tokenWeights, unitTracker); const it_times_walpha_amped = walpha_0_ampped * BigInt(tokenAmounts.length); const oneMinusAmpInverse = (math_lib_1.WAD * math_lib_1.WAD) / (math_lib_1.WAD - amplification); const vaultTokens = calcPriceCurveLimitShareAmp(U, totalSupply, it_times_walpha_amped, oneMinusAmpInverse); return vaultTokens; } function calcUnitsForVaultTokensAmp(U, totalSupply, tokenAmounts, tokenWeights, unitTracker, amplification) { const oneMinusAmp = math_lib_1.WAD - amplification; const oneMinusAmpInverse = (math_lib_1.WAD * math_lib_1.WAD) / oneMinusAmp; const walpha_0_ampped = (0, math_amplified_functions_1.balance0Amp)(oneMinusAmp, tokenAmounts, tokenWeights, unitTracker); const innerPower = (0, math_lib_1.powWad)((U * math_lib_1.WAD) / (walpha_0_ampped * BigInt(tokenAmounts.length)) + math_lib_1.WAD, oneMinusAmpInverse); const vaultTokens = (totalSupply * (innerPower - math_lib_1.WAD)) / math_lib_1.WAD; return vaultTokens; } //# sourceMappingURL=math.amplified.integrals.js.map