@meteora-ag/cp-amm-sdk 1.0.1-rc.13 → 1.0.1-rc.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -6185,6 +6185,7 @@ var SCALE_OFFSET = 64;
6185
6185
  var BASIS_POINT_MAX = 1e4;
6186
6186
  var MAX_FEE_NUMERATOR = 5e8;
6187
6187
  var FEE_DENOMINATOR = 1e9;
6188
+ var PRECISION = 1e6;
6188
6189
  var MIN_SQRT_PRICE = new BN("4295048016");
6189
6190
  var MAX_SQRT_PRICE = new BN("79226673521066979257578248091");
6190
6191
  var MIN_CU_BUFFER = 5e4;
@@ -6525,6 +6526,10 @@ function pow(base, exp) {
6525
6526
  // src/math/index.ts
6526
6527
  import { BN as BN3 } from "@coral-xyz/anchor";
6527
6528
  import Decimal from "decimal.js";
6529
+ function mulShr(x, y, offset, rounding) {
6530
+ const denominator = new BN3(1).shln(offset);
6531
+ return mulDiv(x, y, denominator, rounding);
6532
+ }
6528
6533
  function shlDiv(x, y, offset, rounding) {
6529
6534
  const scale = new BN3(1).shln(offset);
6530
6535
  return mulDiv(x, scale, y, rounding);
@@ -6542,6 +6547,12 @@ function divCeil(a, b) {
6542
6547
  }
6543
6548
  return a.add(b.sub(new BN3(1))).div(b);
6544
6549
  }
6550
+ function q64ToDecimal(num, decimalPlaces) {
6551
+ return new Decimal(num.toString()).div(Decimal.pow(2, 64)).toDecimalPlaces(decimalPlaces);
6552
+ }
6553
+ function decimalToQ64(num) {
6554
+ return new BN3(num.mul(Decimal.pow(2, 64)).floor().toFixed());
6555
+ }
6545
6556
  function getInitPriceQ64(tokenAAmount, tokenBAmount) {
6546
6557
  const sqrtInitPrice = new Decimal(tokenBAmount.toString()).div(new Decimal(tokenAAmount.toString())).sqrt();
6547
6558
  return new BN3(sqrtInitPrice.mul(Decimal.pow(2, 64)).floor().toFixed());
@@ -6549,6 +6560,7 @@ function getInitPriceQ64(tokenAAmount, tokenBAmount) {
6549
6560
 
6550
6561
  // src/helpers/curve.ts
6551
6562
  import { BN as BN4 } from "@coral-xyz/anchor";
6563
+ import Decimal2 from "decimal.js";
6552
6564
  function getNextSqrtPrice(amount, sqrtPrice, liquidity, aToB) {
6553
6565
  let result;
6554
6566
  if (aToB) {
@@ -6581,25 +6593,35 @@ function getDeltaAmountB(lowerSqrtPrice, upperSqrtPrice, liquidity, rounding) {
6581
6593
  return result;
6582
6594
  }
6583
6595
  function getLiquidityDeltaFromAmountA(maxAmountA, lowerSqrtPrice, upperSqrtPrice) {
6584
- const prod = maxAmountA.mul(upperSqrtPrice.mul(lowerSqrtPrice));
6585
- const delta = upperSqrtPrice.sub(lowerSqrtPrice);
6586
- return prod.div(delta);
6596
+ const prod = new Decimal2(
6597
+ maxAmountA.mul(upperSqrtPrice.mul(lowerSqrtPrice)).toString()
6598
+ );
6599
+ const delta = new Decimal2(upperSqrtPrice.sub(lowerSqrtPrice).toString());
6600
+ return new BN4(prod.div(delta).floor().toFixed());
6587
6601
  }
6588
6602
  function getLiquidityDeltaFromAmountB(maxAmountB, lowerSqrtPrice, upperSqrtPrice) {
6589
- const denominator = upperSqrtPrice.sub(lowerSqrtPrice);
6590
- const result = maxAmountB.shln(SCALE_OFFSET * 2).div(denominator);
6591
- return result;
6603
+ const denominator = new Decimal2(
6604
+ upperSqrtPrice.sub(lowerSqrtPrice).toString()
6605
+ );
6606
+ const prod = new Decimal2(maxAmountB.toString()).mul(
6607
+ Decimal2.pow(2, SCALE_OFFSET * 2)
6608
+ );
6609
+ return new BN4(prod.div(denominator).floor().toFixed());
6592
6610
  }
6593
6611
  function getAmountAFromLiquidityDelta(liquidity, currentSqrtPrice) {
6594
- const prod = liquidity.mul(MAX_SQRT_PRICE.sub(currentSqrtPrice));
6612
+ const prod = new Decimal2(liquidity.toString()).mul(
6613
+ new Decimal2(MAX_SQRT_PRICE.sub(currentSqrtPrice).toString())
6614
+ );
6595
6615
  const denominator = currentSqrtPrice.mul(MAX_SQRT_PRICE);
6596
- const result = shlDiv(prod, denominator, SCALE_OFFSET, 1 /* Down */);
6597
- return result.shrn(SCALE_OFFSET);
6616
+ const result = prod.mul(Decimal2.pow(2, 64)).div(new Decimal2(denominator.toString()));
6617
+ return result.div(Decimal2.pow(2, 64)).floor().toFixed();
6598
6618
  }
6599
6619
  function getAmountBFromLiquidityDelta(liquidity, currentSqrtPrice) {
6600
6620
  const delta = currentSqrtPrice.sub(MIN_SQRT_PRICE);
6601
- const prod = liquidity.mul(delta);
6602
- return prod.shrn(SCALE_OFFSET * 2);
6621
+ const prod = new Decimal2(liquidity.toString()).mul(
6622
+ new Decimal2(delta.toString())
6623
+ );
6624
+ return prod.div(Decimal2.pow(2, 128)).floor().toFixed();
6603
6625
  }
6604
6626
 
6605
6627
  // src/helpers/fee.ts
@@ -6761,7 +6783,7 @@ var getEstimatedComputeUnitIxWithBuffer = (connection, instructions, feePayer, b
6761
6783
 
6762
6784
  // src/helpers/utils.ts
6763
6785
  import { BN as BN6 } from "@coral-xyz/anchor";
6764
- import Decimal2 from "decimal.js";
6786
+ import Decimal3 from "decimal.js";
6765
6787
  var getMaxAmountWithSlippage = (amount, rate) => {
6766
6788
  const slippage = (100 + rate) / 100 * BASIS_POINT_MAX;
6767
6789
  return amount.mul(new BN6(slippage)).div(new BN6(BASIS_POINT_MAX));
@@ -6772,13 +6794,12 @@ var getMinAmountWithSlippage = (amount, rate) => {
6772
6794
  };
6773
6795
  var getPriceImpact = (actualAmount, idealAmount) => {
6774
6796
  const diff = idealAmount.sub(actualAmount);
6775
- return new Decimal2(diff.toString()).div(new Decimal2(idealAmount.toString())).mul(100).toNumber();
6797
+ return new Decimal3(diff.toString()).div(new Decimal3(idealAmount.toString())).mul(100).toNumber();
6776
6798
  };
6777
6799
  var getCurrentPrice = (sqrtPrice, tokenADecimal, tokenBDecimal) => {
6778
- const rawSqrtPrice = sqrtPrice.shrn(SCALE_OFFSET);
6779
- const price = rawSqrtPrice.mul(rawSqrtPrice);
6780
- const expo = __pow(10, tokenADecimal - tokenBDecimal);
6781
- return price.muln(expo);
6800
+ const decimalSqrtPrice = new Decimal3(sqrtPrice.toString());
6801
+ const price = decimalSqrtPrice.mul(decimalSqrtPrice).mul(new Decimal3(__pow(10, tokenADecimal - tokenBDecimal))).div(Decimal3.pow(2, 128)).toString();
6802
+ return price;
6782
6803
  };
6783
6804
  var getUnClaimReward = (positionState) => {
6784
6805
  return {
@@ -8016,9 +8037,11 @@ export {
8016
8037
  MAX_SQRT_PRICE,
8017
8038
  MIN_CU_BUFFER,
8018
8039
  MIN_SQRT_PRICE,
8040
+ PRECISION,
8019
8041
  Rounding,
8020
8042
  SCALE_OFFSET,
8021
8043
  TradeDirection,
8044
+ decimalToQ64,
8022
8045
  index_default as default,
8023
8046
  deriveClaimFeeOperatorAddress,
8024
8047
  deriveConfigAddress,
@@ -8031,6 +8054,7 @@ export {
8031
8054
  deriveRewardVaultAddress,
8032
8055
  deriveTokenBadgeAddress,
8033
8056
  deriveTokenVaultAddress,
8057
+ divCeil,
8034
8058
  getAmountAFromLiquidityDelta,
8035
8059
  getAmountBFromLiquidityDelta,
8036
8060
  getBaseFeeNumerator,
@@ -8042,6 +8066,7 @@ export {
8042
8066
  getEstimatedComputeUnitUsageWithBuffer,
8043
8067
  getFeeNumerator,
8044
8068
  getFirstKey,
8069
+ getInitPriceQ64,
8045
8070
  getLiquidityDeltaFromAmountA,
8046
8071
  getLiquidityDeltaFromAmountB,
8047
8072
  getMaxAmountWithSlippage,
@@ -8056,7 +8081,11 @@ export {
8056
8081
  getTokenDecimals,
8057
8082
  getTokenProgram,
8058
8083
  getUnClaimReward,
8084
+ mulDiv,
8085
+ mulShr,
8059
8086
  positionByPoolFilter,
8087
+ q64ToDecimal,
8088
+ shlDiv,
8060
8089
  unwrapSOLInstruction,
8061
8090
  wrapSOLInstruction
8062
8091
  };