UNPKG

@orca-so/whirlpool-sdk

Version:

Whirlpool SDK for the Orca protocol.

29 lines (28 loc) 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getUpperSqrtPriceFromTokenB = exports.getLowerSqrtPriceFromTokenB = exports.getUpperSqrtPriceFromTokenA = exports.getLowerSqrtPriceFromTokenA = void 0; const math_utils_1 = require("../web3/math-utils"); function getLowerSqrtPriceFromTokenA(amount, liquidity, sqrtPriceX64) { const numerator = liquidity.mul(sqrtPriceX64).shln(64); const denominator = liquidity.shln(64).add(amount.mul(sqrtPriceX64)); // always round up return (0, math_utils_1.divRoundUp)(numerator, denominator); } exports.getLowerSqrtPriceFromTokenA = getLowerSqrtPriceFromTokenA; function getUpperSqrtPriceFromTokenA(amount, liquidity, sqrtPriceX64) { const numerator = liquidity.mul(sqrtPriceX64).shln(64); const denominator = liquidity.shln(64).sub(amount.mul(sqrtPriceX64)); // always round up return (0, math_utils_1.divRoundUp)(numerator, denominator); } exports.getUpperSqrtPriceFromTokenA = getUpperSqrtPriceFromTokenA; function getLowerSqrtPriceFromTokenB(amount, liquidity, sqrtPriceX64) { // always round down return sqrtPriceX64.sub((0, math_utils_1.divRoundUp)(amount.shln(64), liquidity)); } exports.getLowerSqrtPriceFromTokenB = getLowerSqrtPriceFromTokenB; function getUpperSqrtPriceFromTokenB(amount, liquidity, sqrtPriceX64) { // always round down (rounding up a negative number) return sqrtPriceX64.add(amount.shln(64).div(liquidity)); } exports.getUpperSqrtPriceFromTokenB = getUpperSqrtPriceFromTokenB;