@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.d.mts +14 -4
- package/dist/index.d.ts +14 -4
- package/dist/index.js +45 -16
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +46 -17
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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 =
|
|
6585
|
-
|
|
6586
|
-
|
|
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 =
|
|
6590
|
-
|
|
6591
|
-
|
|
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.
|
|
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 =
|
|
6597
|
-
return result.
|
|
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(
|
|
6602
|
-
|
|
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
|
|
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
|
|
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
|
|
6779
|
-
const price =
|
|
6780
|
-
|
|
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
|
};
|