@metaplex-foundation/genesis 0.26.1 → 0.26.2
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BondingCurveBucketV2, SwapDirection } from './generated';
|
|
2
2
|
/**
|
|
3
3
|
* Calculate the output amount for a given input amount on a bonding curve.
|
|
4
4
|
* This function determines how much of the output asset you'll receive for a given input amount.
|
|
@@ -10,7 +10,7 @@ import { BondingCurveBucketV1, SwapDirection } from './generated';
|
|
|
10
10
|
* @returns The output amount you'll receive from the swap
|
|
11
11
|
* @throws Error if the bonding curve type is unsupported or calculation errors occur
|
|
12
12
|
*/
|
|
13
|
-
export declare function getSwapAmountOutForIn(bucket:
|
|
13
|
+
export declare function getSwapAmountOutForIn(bucket: BondingCurveBucketV2, amountIn: bigint, direction: SwapDirection): bigint;
|
|
14
14
|
/**
|
|
15
15
|
* Calculate the input amount needed to receive a desired output amount on a bonding curve.
|
|
16
16
|
* This function determines how much of the input asset you need to provide to get a specific output amount.
|
|
@@ -22,7 +22,7 @@ export declare function getSwapAmountOutForIn(bucket: BondingCurveBucketV1, amou
|
|
|
22
22
|
* @returns The input amount required to achieve the desired output
|
|
23
23
|
* @throws Error if the bonding curve type is unsupported or calculation errors occur
|
|
24
24
|
*/
|
|
25
|
-
export declare function getSwapAmountInForOut(bucket:
|
|
25
|
+
export declare function getSwapAmountInForOut(bucket: BondingCurveBucketV2, amountOut: bigint, direction: SwapDirection): bigint;
|
|
26
26
|
/**
|
|
27
27
|
* Calculates the complete swap result including fees for a bonding curve swap.
|
|
28
28
|
*
|
|
@@ -32,7 +32,7 @@ export declare function getSwapAmountInForOut(bucket: BondingCurveBucketV1, amou
|
|
|
32
32
|
* @returns An object containing the actual input amount, fee, and output amount
|
|
33
33
|
* @throws Error if the bucket has insufficient reserves or calculation errors occur
|
|
34
34
|
*/
|
|
35
|
-
export declare function getSwapResult(bucket:
|
|
35
|
+
export declare function getSwapResult(bucket: BondingCurveBucketV2, amountIn: bigint, swapDirection: SwapDirection): {
|
|
36
36
|
amountIn: bigint;
|
|
37
37
|
fee: bigint;
|
|
38
38
|
amountOut: bigint;
|
|
@@ -43,4 +43,4 @@ export declare function getSwapResult(bucket: BondingCurveBucketV1, amountIn: bi
|
|
|
43
43
|
* @param bucket - The bonding curve bucket
|
|
44
44
|
* @returns The current price
|
|
45
45
|
*/
|
|
46
|
-
export declare function getCurrentPrice(bucket:
|
|
46
|
+
export declare function getCurrentPrice(bucket: BondingCurveBucketV2): bigint;
|
|
@@ -18,7 +18,7 @@ const bigInt_1 = require("./utils/bigInt");
|
|
|
18
18
|
function getSwapAmountOutForIn(bucket, amountIn, direction) {
|
|
19
19
|
switch (bucket.bondingCurveType) {
|
|
20
20
|
case generated_1.BondingCurveType.ConstantProduct:
|
|
21
|
-
return getConstantProductSwapAmountOutForIn(amountIn, bucket.
|
|
21
|
+
return getConstantProductSwapAmountOutForIn(amountIn, bucket.constantProductParams.virtualSol, bucket.constantProductParams.virtualTokens, bucket.quoteTokenDepositTotal, bucket.bucket.baseTokenBalance, direction);
|
|
22
22
|
default:
|
|
23
23
|
throw new Error(`Unsupported bonding curve type: ${bucket.bondingCurveType}`);
|
|
24
24
|
}
|
|
@@ -38,7 +38,7 @@ exports.getSwapAmountOutForIn = getSwapAmountOutForIn;
|
|
|
38
38
|
function getSwapAmountInForOut(bucket, amountOut, direction) {
|
|
39
39
|
switch (bucket.bondingCurveType) {
|
|
40
40
|
case generated_1.BondingCurveType.ConstantProduct:
|
|
41
|
-
return getConstantProductSwapAmountInForOut(amountOut, bucket.
|
|
41
|
+
return getConstantProductSwapAmountInForOut(amountOut, bucket.constantProductParams.virtualSol, bucket.constantProductParams.virtualTokens, bucket.quoteTokenDepositTotal, bucket.bucket.baseTokenBalance, direction);
|
|
42
42
|
default:
|
|
43
43
|
throw new Error(`Unsupported bonding curve type: ${bucket.bondingCurveType}`);
|
|
44
44
|
}
|
|
@@ -83,8 +83,8 @@ function getSwapResult(bucket, amountIn, swapDirection) {
|
|
|
83
83
|
}
|
|
84
84
|
// Check if we have enough reserves for the swap
|
|
85
85
|
const reservesOut = swapDirection === generated_1.SwapDirection.Buy
|
|
86
|
-
? bucket.
|
|
87
|
-
: bucket.
|
|
86
|
+
? bucket.bucket.baseTokenBalance
|
|
87
|
+
: bucket.quoteTokenDepositTotal;
|
|
88
88
|
if (reservesOut === 0n) {
|
|
89
89
|
throw new Error('Insufficient liquidity: no reserves available');
|
|
90
90
|
}
|
|
@@ -106,8 +106,11 @@ function getSwapResult(bucket, amountIn, swapDirection) {
|
|
|
106
106
|
amountOut = reservesOut;
|
|
107
107
|
feeOut = 0n;
|
|
108
108
|
}
|
|
109
|
-
// Recalculate the
|
|
110
|
-
|
|
109
|
+
// Recalculate amountIn based on the gross amount leaving the pool
|
|
110
|
+
// (reservesOut = amountOut + feeOut), not just the net (amountOut),
|
|
111
|
+
// to maintain the constant product invariant. The AMM produces the
|
|
112
|
+
// gross output; fees are subtracted afterward.
|
|
113
|
+
amountInAfterFee = getSwapAmountInForOut(bucket, swapDirection === generated_1.SwapDirection.Sell ? amountOut + feeOut : amountOut, swapDirection);
|
|
111
114
|
// No need to remove feeIn from amountIn, as we are adding SOL from the payer to the bucket in the buy case
|
|
112
115
|
if (swapDirection === generated_1.SwapDirection.Buy) {
|
|
113
116
|
feeIn = (0, fees_1.calculateFee)(amountInAfterFee, bucket.depositFeeType, bucket.depositFee);
|
|
@@ -136,10 +139,11 @@ exports.getSwapResult = getSwapResult;
|
|
|
136
139
|
function getCurrentPrice(bucket) {
|
|
137
140
|
switch (bucket.bondingCurveType) {
|
|
138
141
|
case generated_1.BondingCurveType.ConstantProduct:
|
|
139
|
-
return bucket.
|
|
140
|
-
? (bucket.
|
|
141
|
-
|
|
142
|
-
|
|
142
|
+
return bucket.constantProductParams.virtualSol > 0n
|
|
143
|
+
? (bucket.constantProductParams.virtualTokens +
|
|
144
|
+
bucket.bucket.baseTokenBalance) /
|
|
145
|
+
(bucket.constantProductParams.virtualSol +
|
|
146
|
+
bucket.quoteTokenDepositTotal)
|
|
143
147
|
: 0n;
|
|
144
148
|
default:
|
|
145
149
|
throw new Error(`Unsupported bonding curve type: ${bucket.bondingCurveType}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bondingCurveHelpers.js","sourceRoot":"","sources":["../../src/bondingCurveHelpers.ts"],"names":[],"mappings":";;;AAAA,iCAAsC;AACtC,2CAIqB;AACrB,2CAA2C;AAE3C;;;;;;;;;;GAUG;AACH,SAAgB,qBAAqB,CACnC,MAA4B,EAC5B,QAAgB,EAChB,SAAwB;IAExB,QAAQ,MAAM,CAAC,gBAAgB,EAAE;QAC/B,KAAK,4BAAgB,CAAC,eAAe;YACnC,OAAO,oCAAoC,CACzC,QAAQ,EACR,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"bondingCurveHelpers.js","sourceRoot":"","sources":["../../src/bondingCurveHelpers.ts"],"names":[],"mappings":"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"}
|