@orca-so/whirlpool-sdk
Version:
Whirlpool SDK for the Orca protocol.
29 lines (28 loc) • 1.53 kB
JavaScript
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;
;