forgex-cli 1.0.58 → 1.0.61
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/README.md +375 -368
- package/dist/bin/forgex.d.ts +5 -5
- package/dist/bin/forgex.js +14 -14
- package/dist/bin/forgex.js.map +1 -1
- package/dist/src/adapters/codex-adapter.d.ts +90 -90
- package/dist/src/adapters/codex-adapter.d.ts.map +1 -1
- package/dist/src/adapters/codex-adapter.js +76 -76
- package/dist/src/adapters/codex-adapter.js.map +1 -1
- package/dist/src/adapters/connection.d.ts +6 -6
- package/dist/src/adapters/connection.js +8 -8
- package/dist/src/adapters/connection.js.map +1 -1
- package/dist/src/adapters/ipfs.d.ts +3 -3
- package/dist/src/adapters/ipfs.js +3 -3
- package/dist/src/adapters/jito-adapter.d.ts +85 -85
- package/dist/src/adapters/jito-adapter.d.ts.map +1 -1
- package/dist/src/adapters/jito-adapter.js +111 -111
- package/dist/src/adapters/jito-adapter.js.map +1 -1
- package/dist/src/adapters/rpc-adapter.d.ts +53 -53
- package/dist/src/adapters/rpc-adapter.d.ts.map +1 -1
- package/dist/src/adapters/rpc-adapter.js +69 -69
- package/dist/src/adapters/rpc-adapter.js.map +1 -1
- package/dist/src/adapters/sdk-adapter.d.ts +21 -21
- package/dist/src/adapters/sdk-adapter.d.ts.map +1 -1
- package/dist/src/adapters/sdk-adapter.js +79 -79
- package/dist/src/adapters/sdk-adapter.js.map +1 -1
- package/dist/src/commands/config/index.d.ts +1 -1
- package/dist/src/commands/config/index.js +15 -15
- package/dist/src/commands/config/index.js.map +1 -1
- package/dist/src/commands/query/index.d.ts +2 -2
- package/dist/src/commands/query/index.js +82 -82
- package/dist/src/commands/query/index.js.map +1 -1
- package/dist/src/commands/token/index.d.ts +8 -8
- package/dist/src/commands/token/index.js +73 -73
- package/dist/src/commands/token/index.js.map +1 -1
- package/dist/src/commands/tools/index.d.ts +9 -9
- package/dist/src/commands/tools/index.js +137 -137
- package/dist/src/commands/tools/index.js.map +1 -1
- package/dist/src/commands/trade/index.d.ts +2 -2
- package/dist/src/commands/trade/index.js +82 -82
- package/dist/src/commands/trade/index.js.map +1 -1
- package/dist/src/commands/transfer/index.d.ts +8 -8
- package/dist/src/commands/transfer/index.js +106 -106
- package/dist/src/commands/transfer/index.js.map +1 -1
- package/dist/src/commands/wallet/index.d.ts +1 -1
- package/dist/src/commands/wallet/index.js +175 -175
- package/dist/src/commands/wallet/index.js.map +1 -1
- package/dist/src/config.d.ts +26 -26
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +28 -28
- package/dist/src/config.js.map +1 -1
- package/dist/src/const/index.js +1 -1
- package/dist/src/const/index.js.map +1 -1
- package/dist/src/data-source.d.ts +81 -81
- package/dist/src/data-source.d.ts.map +1 -1
- package/dist/src/data-source.js +149 -149
- package/dist/src/data-source.js.map +1 -1
- package/dist/src/data-store/index.d.ts +22 -22
- package/dist/src/data-store/index.d.ts.map +1 -1
- package/dist/src/data-store/index.js +46 -46
- package/dist/src/data-store/index.js.map +1 -1
- package/dist/src/data-store/types.d.ts +3 -3
- package/dist/src/data-store/types.js +3 -3
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.js +10 -10
- package/dist/src/index.js.map +1 -1
- package/dist/src/output.d.ts +18 -18
- package/dist/src/output.d.ts.map +1 -1
- package/dist/src/output.js +34 -34
- package/dist/src/output.js.map +1 -1
- package/dist/src/shims/store.d.ts +3 -2
- package/dist/src/shims/store.d.ts.map +1 -1
- package/dist/src/shims/store.js +6 -5
- package/dist/src/shims/store.js.map +1 -1
- package/dist/src/sol-sdk/batch/create.d.ts +4 -1
- package/dist/src/sol-sdk/batch/create.d.ts.map +1 -1
- package/dist/src/sol-sdk/batch/create.js +44 -44
- package/dist/src/sol-sdk/batch/create.js.map +1 -1
- package/dist/src/sol-sdk/batch/index.js +135 -135
- package/dist/src/sol-sdk/batch/index.js.map +1 -1
- package/dist/src/sol-sdk/calc.d.ts +63 -63
- package/dist/src/sol-sdk/calc.d.ts.map +1 -1
- package/dist/src/sol-sdk/calc.js +120 -120
- package/dist/src/sol-sdk/calc.js.map +1 -1
- package/dist/src/sol-sdk/jito/index.js +12 -12
- package/dist/src/sol-sdk/jito/index.js.map +1 -1
- package/dist/src/sol-sdk/launchlab/instructions/create.js +10 -10
- package/dist/src/sol-sdk/launchlab/instructions/create.js.map +1 -1
- package/dist/src/sol-sdk/meteora/index.d.ts +5 -5
- package/dist/src/sol-sdk/meteora/index.js +11 -11
- package/dist/src/sol-sdk/meteora/index.js.map +1 -1
- package/dist/src/sol-sdk/meteora/instructions/buy.js +8 -8
- package/dist/src/sol-sdk/meteora/instructions/buy.js.map +1 -1
- package/dist/src/sol-sdk/meteora/instructions/sell.js +6 -6
- package/dist/src/sol-sdk/meteora/instructions/sell.js.map +1 -1
- package/dist/src/sol-sdk/pump/index.js +3 -3
- package/dist/src/sol-sdk/pump/index.js.map +1 -1
- package/dist/src/sol-sdk/pump/instructions/buy.d.ts +12 -12
- package/dist/src/sol-sdk/pump/instructions/buy.d.ts.map +1 -1
- package/dist/src/sol-sdk/pump/instructions/buy.js +26 -26
- package/dist/src/sol-sdk/pump/instructions/buy.js.map +1 -1
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts +13 -13
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.js +17 -17
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.js.map +1 -1
- package/dist/src/sol-sdk/pump/instructions/sell.d.ts +2 -2
- package/dist/src/sol-sdk/pump/instructions/sell.d.ts.map +1 -1
- package/dist/src/sol-sdk/pump/instructions/sell.js +7 -7
- package/dist/src/sol-sdk/pump/instructions/sell.js.map +1 -1
- package/dist/src/sol-sdk/pumpswap/index.d.ts +4 -4
- package/dist/src/sol-sdk/pumpswap/index.js +5 -5
- package/dist/src/sol-sdk/pumpswap/index.js.map +1 -1
- package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts +8 -8
- package/dist/src/sol-sdk/pumpswap/instructions/buy.js +19 -19
- package/dist/src/sol-sdk/pumpswap/instructions/buy.js.map +1 -1
- package/dist/src/sol-sdk/pumpswap/instructions/migrate.js +2 -2
- package/dist/src/sol-sdk/pumpswap/instructions/migrate.js.map +1 -1
- package/dist/src/sol-sdk/pumpswap/instructions/sell.js +4 -4
- package/dist/src/sol-sdk/pumpswap/instructions/sell.js.map +1 -1
- package/dist/src/sol-sdk/pumpswap/rpc/index.js +1 -1
- package/dist/src/sol-sdk/pumpswap/rpc/index.js.map +1 -1
- package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js +3 -3
- package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js.map +1 -1
- package/dist/src/sol-sdk/raydium/instructions/sell.d.ts +40 -8520
- package/dist/src/sol-sdk/raydium/instructions/sell.d.ts.map +1 -1
- package/dist/src/sol-sdk/raydium/instructions/sell.js +6 -6
- package/dist/src/sol-sdk/raydium/instructions/sell.js.map +1 -1
- package/dist/src/sol-sdk/raydium/rpc/index.d.ts +4 -4
- package/dist/src/sol-sdk/rpc/index.d.ts +14 -14
- package/dist/src/sol-sdk/rpc/index.d.ts.map +1 -1
- package/dist/src/sol-sdk/rpc/index.js +17 -17
- package/dist/src/sol-sdk/rpc/index.js.map +1 -1
- package/dist/src/sol-sdk/transfer/index.js +5 -5
- package/dist/src/sol-sdk/transfer/index.js.map +1 -1
- package/dist/src/sol-sdk/turnover/index.d.ts +3 -3
- package/dist/src/sol-sdk/turnover/index.js +56 -56
- package/dist/src/sol-sdk/turnover/index.js.map +1 -1
- package/dist/src/telemetry.d.ts +8 -8
- package/dist/src/telemetry.d.ts.map +1 -1
- package/dist/src/telemetry.js +28 -27
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/tx-tracker/detail-adapter.d.ts +53 -53
- package/dist/src/tx-tracker/detail-adapter.d.ts.map +1 -1
- package/dist/src/tx-tracker/detail-adapter.js +68 -68
- package/dist/src/tx-tracker/detail-adapter.js.map +1 -1
- package/dist/src/tx-tracker/index.d.ts +67 -67
- package/dist/src/tx-tracker/index.d.ts.map +1 -1
- package/dist/src/tx-tracker/index.js +103 -103
- package/dist/src/tx-tracker/index.js.map +1 -1
- package/dist/src/types/index.d.ts +10 -10
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/websocket.js +1 -1
- package/dist/src/types/websocket.js.map +1 -1
- package/dist/src/utils/index.js +20 -20
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/wallet-store.d.ts +51 -51
- package/dist/src/wallet-store.d.ts.map +1 -1
- package/dist/src/wallet-store.js +104 -104
- package/dist/src/wallet-store.js.map +1 -1
- package/package.json +1 -1
package/dist/src/sol-sdk/calc.js
CHANGED
|
@@ -14,7 +14,7 @@ export default class AmmCalc {
|
|
|
14
14
|
this.quoteDecimals = props.quoteDecimals;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Get current reserves
|
|
18
18
|
*/
|
|
19
19
|
getReserves() {
|
|
20
20
|
return {
|
|
@@ -23,22 +23,22 @@ export default class AmmCalc {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
27
|
-
* @param amountIn
|
|
28
|
-
* @param reserveIn
|
|
29
|
-
* @param reserveOut
|
|
26
|
+
* Calculate output amount based on CPMM constant product formula
|
|
27
|
+
* @param amountIn input amount (bigint)
|
|
28
|
+
* @param reserveIn input reserve
|
|
29
|
+
* @param reserveOut output reserve
|
|
30
30
|
*/
|
|
31
31
|
calculateAmountOut(amountIn, reserveIn, reserveOut) {
|
|
32
|
-
const amountInWithFee = amountIn; //
|
|
32
|
+
const amountInWithFee = amountIn; // fee logic can be added
|
|
33
33
|
const numerator = amountInWithFee * reserveOut;
|
|
34
|
-
// const denominator = reserveIn * BigInt(1000) + amountInWithFee; //
|
|
35
|
-
const denominator = reserveIn + amountInWithFee; //
|
|
34
|
+
// const denominator = reserveIn * BigInt(1000) + amountInWithFee; // assuming 0.3% fee, i.e. 997/1000, can be made configurable
|
|
35
|
+
const denominator = reserveIn + amountInWithFee; // assume fee is 0.3%, i.e. 997/1000, can be made configurable
|
|
36
36
|
return numerator / denominator;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
40
|
-
* @param amountIn
|
|
41
|
-
* @param isBaseToQuote true = base->quote
|
|
39
|
+
* Perform swap
|
|
40
|
+
* @param amountIn input amount (string)
|
|
41
|
+
* @param isBaseToQuote true = base->quote, false = quote->base
|
|
42
42
|
*/
|
|
43
43
|
swap(amountIn, isBaseToQuote) {
|
|
44
44
|
const inAmount = BigInt(amountIn);
|
|
@@ -79,7 +79,7 @@ export class PumpAmmCalc {
|
|
|
79
79
|
this.initialRealTokenReserves = props.initialRealTokenReserves ?? this.initialRealTokenReserves;
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
|
-
*
|
|
82
|
+
* Get current reserves
|
|
83
83
|
*/
|
|
84
84
|
getReserves() {
|
|
85
85
|
return {
|
|
@@ -97,10 +97,10 @@ export class PumpAmmCalc {
|
|
|
97
97
|
}
|
|
98
98
|
calculateBuyAmountOut(amount) {
|
|
99
99
|
const solAmount = new BN(amount);
|
|
100
|
-
const virtualTokenReserves = this.initialVirtualTokenReserves; // BN
|
|
101
|
-
const virtualSolReserves = this.initialVirtualSolReserves; // BN
|
|
102
|
-
const realSolReserves = this.initialRealSolReserves; // BN
|
|
103
|
-
const realTokenReserves = this.initialRealTokenReserves; // BN
|
|
100
|
+
const virtualTokenReserves = this.initialVirtualTokenReserves; // BN, min units
|
|
101
|
+
const virtualSolReserves = this.initialVirtualSolReserves; // BN, lamports
|
|
102
|
+
const realSolReserves = this.initialRealSolReserves; // BN, lamports
|
|
103
|
+
const realTokenReserves = this.initialRealTokenReserves; // BN, min units
|
|
104
104
|
// k = virtual_token * (virtual_sol)
|
|
105
105
|
const k = virtualTokenReserves.mul(virtualSolReserves); // BN
|
|
106
106
|
// new_virtual_token = k / (virtual_sol + delta_sol)
|
|
@@ -108,54 +108,54 @@ export class PumpAmmCalc {
|
|
|
108
108
|
const newVirtualTokenReserves = k.div(denominator); // BN
|
|
109
109
|
// tokens_bought = virtual_token - new_virtual_token
|
|
110
110
|
let tokensToBuy = virtualTokenReserves.sub(newVirtualTokenReserves); // BN
|
|
111
|
-
//
|
|
111
|
+
// can only buy up to remaining real reserves
|
|
112
112
|
tokensToBuy = BN.min(tokensToBuy, realTokenReserves);
|
|
113
|
-
//
|
|
113
|
+
// update reserves (real part)
|
|
114
114
|
this.initialRealSolReserves = this.initialRealSolReserves.add(solAmount);
|
|
115
115
|
this.initialRealTokenReserves = this.initialRealTokenReserves.sub(tokensToBuy);
|
|
116
|
-
//
|
|
116
|
+
// whether virtual reserves change depends on actual logic (most projects unchanged)
|
|
117
117
|
this.initialVirtualTokenReserves = newVirtualTokenReserves;
|
|
118
|
-
return tokensToBuy; //
|
|
118
|
+
return tokensToBuy; // returns min units, divide by 1e6 for display
|
|
119
119
|
}
|
|
120
120
|
/**
|
|
121
|
-
*
|
|
122
|
-
* @param tokenAmount
|
|
123
|
-
* @returns
|
|
121
|
+
* Calculate SOL amount needed to buy exact token amount
|
|
122
|
+
* @param tokenAmount amount of tokens to buy (string in min units)
|
|
123
|
+
* @returns SOL amount needed (lamports)
|
|
124
124
|
*/
|
|
125
125
|
calculateBuyExactAmountOut(tokenAmount) {
|
|
126
126
|
const tokensWanted = new BN(tokenAmount);
|
|
127
|
-
const virtualTokenReserves = this.initialVirtualTokenReserves; // BN
|
|
128
|
-
const virtualSolReserves = this.initialVirtualSolReserves; // BN
|
|
129
|
-
const realSolReserves = this.initialRealSolReserves; // BN
|
|
130
|
-
const realTokenReserves = this.initialRealTokenReserves; // BN
|
|
131
|
-
//
|
|
127
|
+
const virtualTokenReserves = this.initialVirtualTokenReserves; // BN, min units
|
|
128
|
+
const virtualSolReserves = this.initialVirtualSolReserves; // BN, lamports
|
|
129
|
+
const realSolReserves = this.initialRealSolReserves; // BN, lamports
|
|
130
|
+
const realTokenReserves = this.initialRealTokenReserves; // BN, min units
|
|
131
|
+
// check if enough tokens available for purchase
|
|
132
132
|
if (tokensWanted.gt(realTokenReserves)) {
|
|
133
|
-
throw new Error('
|
|
133
|
+
throw new Error('Purchase amount exceeds available token reserves');
|
|
134
134
|
}
|
|
135
135
|
if (tokensWanted.lte(new BN(0))) {
|
|
136
|
-
throw new Error('
|
|
136
|
+
throw new Error('Purchase amount must be greater than 0');
|
|
137
137
|
}
|
|
138
138
|
// k = virtual_token * virtual_sol
|
|
139
139
|
const k = virtualTokenReserves.mul(virtualSolReserves);
|
|
140
|
-
//
|
|
140
|
+
// calculate new virtual token reserves after purchase
|
|
141
141
|
// new_virtual_token = virtual_token - tokens_wanted
|
|
142
142
|
const newVirtualTokenReserves = virtualTokenReserves.sub(tokensWanted);
|
|
143
|
-
//
|
|
143
|
+
// calculate new virtual SOL reserves from constant product formula
|
|
144
144
|
// new_virtual_sol = k / new_virtual_token
|
|
145
145
|
const newVirtualSolReserves = k.div(newVirtualTokenReserves);
|
|
146
|
-
//
|
|
146
|
+
// calculate SOL amount needed
|
|
147
147
|
// sol_needed = new_virtual_sol - virtual_sol
|
|
148
148
|
const solNeeded = newVirtualSolReserves.sub(virtualSolReserves);
|
|
149
|
-
//
|
|
149
|
+
// validate calculation result
|
|
150
150
|
if (solNeeded.lte(new BN(0))) {
|
|
151
|
-
throw new Error('
|
|
151
|
+
throw new Error('Calculated SOL amount is invalid');
|
|
152
152
|
}
|
|
153
|
-
//
|
|
153
|
+
// update reserves (real part)
|
|
154
154
|
this.initialRealSolReserves = this.initialRealSolReserves.add(solNeeded);
|
|
155
155
|
this.initialRealTokenReserves = this.initialRealTokenReserves.sub(tokensWanted);
|
|
156
|
-
//
|
|
156
|
+
// update virtual reserves
|
|
157
157
|
this.initialVirtualTokenReserves = newVirtualTokenReserves;
|
|
158
|
-
return solNeeded; //
|
|
158
|
+
return solNeeded; // returns lamports, divide by 1e9 for display as SOL
|
|
159
159
|
}
|
|
160
160
|
calculateSellAmountOut(amount) {
|
|
161
161
|
const tokenAmount = new BN(amount);
|
|
@@ -171,32 +171,32 @@ export class PumpAmmCalc {
|
|
|
171
171
|
const newSolReserves = k.div(newVirtualTokenReserves);
|
|
172
172
|
// solToReturn = (virtual_sol + real_sol) - new_sol_reserves
|
|
173
173
|
let solToReturn = virtualSolReserves.add(realSolReserves).sub(newSolReserves);
|
|
174
|
-
//
|
|
174
|
+
// Can only withdraw up to real SOL reserves
|
|
175
175
|
solToReturn = BN.min(solToReturn, realSolReserves);
|
|
176
|
-
//
|
|
176
|
+
// Check if sufficient
|
|
177
177
|
if (solToReturn.lte(new BN(0)))
|
|
178
|
-
throw new Error('
|
|
179
|
-
//
|
|
178
|
+
throw new Error('Sell amount is invalid');
|
|
179
|
+
// Update reserves
|
|
180
180
|
this.initialRealSolReserves = this.initialRealSolReserves.sub(solToReturn);
|
|
181
181
|
this.initialRealTokenReserves = this.initialRealTokenReserves.add(tokenAmount);
|
|
182
182
|
this.initialVirtualTokenReserves = newVirtualTokenReserves;
|
|
183
|
-
//
|
|
183
|
+
// Returns lamports; divide by 1e9 on frontend to get SOL
|
|
184
184
|
return solToReturn.toString();
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
187
|
export class LaunchlabAmmCalc {
|
|
188
|
-
baseDecimals = 6; //
|
|
189
|
-
quoteDecimals = 9; // SOL
|
|
188
|
+
baseDecimals = 6; // Token decimals
|
|
189
|
+
quoteDecimals = 9; // SOL decimals
|
|
190
190
|
migrateType = 1;
|
|
191
|
-
supply; //
|
|
192
|
-
totalBaseSell; //
|
|
193
|
-
virtualBase; //
|
|
194
|
-
virtualQuote; //
|
|
195
|
-
realBase; //
|
|
196
|
-
realQuote; //
|
|
197
|
-
totalQuoteFundRaising; //
|
|
191
|
+
supply; // Total supply
|
|
192
|
+
totalBaseSell; // Tokens available for sale
|
|
193
|
+
virtualBase; // Virtual token reserves
|
|
194
|
+
virtualQuote; // Virtual SOL reserves
|
|
195
|
+
realBase; // Real token reserves
|
|
196
|
+
realQuote; // Real SOL reserves
|
|
197
|
+
totalQuoteFundRaising; // Fundraising target
|
|
198
198
|
constructor(props) {
|
|
199
|
-
//
|
|
199
|
+
// Use provided parameters or defaults
|
|
200
200
|
this.baseDecimals = props.baseDecimals ?? 6;
|
|
201
201
|
this.quoteDecimals = props.quoteDecimals ?? 9;
|
|
202
202
|
this.migrateType = props.migrateType ?? 1;
|
|
@@ -204,12 +204,12 @@ export class LaunchlabAmmCalc {
|
|
|
204
204
|
this.totalBaseSell = props.totalBaseSell ?? new BN('793100000000000'); // 793,100,000,000,000
|
|
205
205
|
this.virtualBase = props.virtualBase ?? new BN('1073025605596382'); // 1,073,025,605,596,382
|
|
206
206
|
this.virtualQuote = props.virtualQuote ?? new BN('30000852951'); // 30,000,852,951
|
|
207
|
-
this.realBase = props.realBase ?? new BN('0'); //
|
|
208
|
-
this.realQuote = props.realQuote ?? new BN('0'); //
|
|
207
|
+
this.realBase = props.realBase ?? new BN('0'); // Initial real token reserves = 0
|
|
208
|
+
this.realQuote = props.realQuote ?? new BN('0'); // Initial real SOL reserves = 0
|
|
209
209
|
this.totalQuoteFundRaising = props.totalQuoteFundRaising ?? new BN('85000000000'); // 85,000,000,000
|
|
210
210
|
}
|
|
211
211
|
/**
|
|
212
|
-
*
|
|
212
|
+
* Get current reserves
|
|
213
213
|
*/
|
|
214
214
|
getReserves() {
|
|
215
215
|
return {
|
|
@@ -226,22 +226,22 @@ export class LaunchlabAmmCalc {
|
|
|
226
226
|
};
|
|
227
227
|
}
|
|
228
228
|
/**
|
|
229
|
-
*
|
|
229
|
+
* Get current price (SOL/Token)
|
|
230
230
|
*/
|
|
231
231
|
getPrice() {
|
|
232
232
|
const totalQuoteReserves = this.realQuote.add(this.virtualQuote);
|
|
233
|
-
//
|
|
233
|
+
// Fix: realBase represents tokens already sold, so available base reserves = virtualBase - realBase
|
|
234
234
|
const totalBaseReserves = this.virtualBase.sub(this.realBase);
|
|
235
235
|
return totalQuoteReserves.div(totalBaseReserves);
|
|
236
236
|
}
|
|
237
237
|
/**
|
|
238
|
-
*
|
|
239
|
-
* @param solAmount SOL
|
|
240
|
-
* @returns
|
|
238
|
+
* Calculate token amount received from a buy
|
|
239
|
+
* @param solAmount SOL amount (lamports string)
|
|
240
|
+
* @returns Token amount purchasable (in min units)
|
|
241
241
|
*/
|
|
242
242
|
calculateBuyAmountOut(solAmount) {
|
|
243
243
|
const quoteAmountIn = new BN(solAmount);
|
|
244
|
-
//
|
|
244
|
+
// Calculate total reserves
|
|
245
245
|
const totalVirtualBase = this.virtualBase;
|
|
246
246
|
const totalVirtualQuote = this.virtualQuote;
|
|
247
247
|
const totalRealQuote = this.realQuote;
|
|
@@ -250,75 +250,75 @@ export class LaunchlabAmmCalc {
|
|
|
250
250
|
console.log('totalVirtualQuote: ', totalVirtualQuote.toString());
|
|
251
251
|
console.log('totalRealQuote: ', totalRealQuote.toString());
|
|
252
252
|
console.log('totalRealBase: ', totalRealBase.toString());
|
|
253
|
-
//
|
|
253
|
+
// Fix: realBase represents tokens already sold, so available base reserves = virtualBase - realBase
|
|
254
254
|
const totalBase = totalVirtualBase.sub(totalRealBase);
|
|
255
255
|
const totalQuote = totalVirtualQuote.add(totalRealQuote);
|
|
256
|
-
//
|
|
256
|
+
// Constant product formula: k = (virtual_base - real_base) * (virtual_quote + real_quote)
|
|
257
257
|
const k = totalBase.mul(totalQuote);
|
|
258
|
-
//
|
|
258
|
+
// Calculate new quote reserves
|
|
259
259
|
const newQuoteReserves = totalQuote.add(quoteAmountIn);
|
|
260
|
-
//
|
|
260
|
+
// Calculate new virtual base reserves: new_base = k / new_quote_reserves
|
|
261
261
|
const newBase = k.div(newQuoteReserves);
|
|
262
|
-
//
|
|
262
|
+
// Calculate tokens purchasable: tokens_out = totalBase - new_base
|
|
263
263
|
let tokensOut = totalBase.sub(newBase);
|
|
264
|
-
//
|
|
264
|
+
// Check if exceeds total tokens available for sale
|
|
265
265
|
const remainingTokensForSale = this.totalBaseSell.sub(totalRealBase);
|
|
266
266
|
tokensOut = BN.min(tokensOut, remainingTokensForSale);
|
|
267
|
-
//
|
|
267
|
+
// Check if enough tokens available for sale
|
|
268
268
|
if (tokensOut.lte(new BN(0))) {
|
|
269
|
-
throw new Error('
|
|
269
|
+
throw new Error('Buy amount invalid: not enough tokens available for sale');
|
|
270
270
|
}
|
|
271
|
-
//
|
|
271
|
+
// Update reserve state (only update real reserves; virtual reserves unchanged)
|
|
272
272
|
this.realQuote = this.realQuote.add(quoteAmountIn);
|
|
273
|
-
this.realBase = this.realBase.add(tokensOut); // realBase
|
|
273
|
+
this.realBase = this.realBase.add(tokensOut); // realBase represents tokens sold, should increase
|
|
274
274
|
return tokensOut;
|
|
275
275
|
}
|
|
276
276
|
/**
|
|
277
|
-
*
|
|
278
|
-
* @param tokenAmount
|
|
279
|
-
* @returns
|
|
277
|
+
* Calculate SOL received from a sell
|
|
278
|
+
* @param tokenAmount Token amount (min units string)
|
|
279
|
+
* @returns SOL amount received (lamports)
|
|
280
280
|
*/
|
|
281
281
|
calculateSellAmountOut(tokenAmount) {
|
|
282
282
|
const baseAmountIn = new BN(tokenAmount);
|
|
283
|
-
//
|
|
283
|
+
// Calculate total reserves
|
|
284
284
|
const totalVirtualBase = this.virtualBase;
|
|
285
285
|
const totalVirtualQuote = this.virtualQuote;
|
|
286
286
|
const totalRealQuote = this.realQuote;
|
|
287
287
|
const totalRealBase = this.realBase;
|
|
288
|
-
//
|
|
288
|
+
// Fix: realBase represents tokens already sold, so available base reserves = virtualBase - realBase
|
|
289
289
|
const totalBase = totalVirtualBase.sub(totalRealBase);
|
|
290
290
|
const totalQuote = totalVirtualQuote.add(totalRealQuote);
|
|
291
|
-
//
|
|
291
|
+
// Constant product formula: k = (virtual_base - real_base) * (virtual_quote + real_quote)
|
|
292
292
|
const k = totalBase.mul(totalQuote);
|
|
293
|
-
//
|
|
293
|
+
// Calculate new base reserves
|
|
294
294
|
const newBaseReserves = totalBase.add(baseAmountIn);
|
|
295
|
-
//
|
|
295
|
+
// Calculate new quote reserves: new_quote_reserves = k / new_base_reserves
|
|
296
296
|
const newQuoteReserves = k.div(newBaseReserves);
|
|
297
|
-
//
|
|
297
|
+
// Calculate SOL received: sol_out = (virtual_quote + real_quote) - new_quote_reserves
|
|
298
298
|
let solOut = totalQuote.sub(newQuoteReserves);
|
|
299
|
-
//
|
|
299
|
+
// Ensure does not exceed real available reserves
|
|
300
300
|
solOut = BN.min(solOut, totalRealQuote);
|
|
301
|
-
//
|
|
301
|
+
// Check if enough SOL available
|
|
302
302
|
if (solOut.lte(new BN(0))) {
|
|
303
|
-
throw new Error('
|
|
303
|
+
throw new Error('Sell amount invalid: not enough SOL available');
|
|
304
304
|
}
|
|
305
|
-
//
|
|
305
|
+
// Check if enough sold tokens can be reclaimed
|
|
306
306
|
if (baseAmountIn.gt(totalRealBase)) {
|
|
307
|
-
throw new Error('
|
|
307
|
+
throw new Error('Sell amount invalid: exceeds tokens already sold');
|
|
308
308
|
}
|
|
309
|
-
//
|
|
310
|
-
this.realBase = this.realBase.sub(baseAmountIn); // realBase
|
|
309
|
+
// Update reserve state (only update real reserves; virtual reserves unchanged)
|
|
310
|
+
this.realBase = this.realBase.sub(baseAmountIn); // realBase represents tokens sold, should decrease on sell
|
|
311
311
|
this.realQuote = this.realQuote.sub(solOut);
|
|
312
312
|
return solOut.toString();
|
|
313
313
|
}
|
|
314
314
|
/**
|
|
315
|
-
*
|
|
315
|
+
* Check if migration conditions are met
|
|
316
316
|
*/
|
|
317
317
|
canMigrate() {
|
|
318
318
|
return this.realQuote.gte(this.totalQuoteFundRaising);
|
|
319
319
|
}
|
|
320
320
|
/**
|
|
321
|
-
*
|
|
321
|
+
* Get fundraising progress (0-100)
|
|
322
322
|
*/
|
|
323
323
|
getFundingProgress() {
|
|
324
324
|
const current = this.realQuote.toNumber();
|
|
@@ -326,13 +326,13 @@ export class LaunchlabAmmCalc {
|
|
|
326
326
|
return Math.min((current / target) * 100, 100);
|
|
327
327
|
}
|
|
328
328
|
/**
|
|
329
|
-
*
|
|
329
|
+
* Get remaining tokens available for sale
|
|
330
330
|
*/
|
|
331
331
|
getRemainingTokensForSale() {
|
|
332
332
|
return this.totalBaseSell.sub(this.realBase);
|
|
333
333
|
}
|
|
334
334
|
/**
|
|
335
|
-
*
|
|
335
|
+
* Get market cap (based on current price)
|
|
336
336
|
*/
|
|
337
337
|
getMarketCap() {
|
|
338
338
|
const price = this.getPrice();
|
|
@@ -340,7 +340,7 @@ export class LaunchlabAmmCalc {
|
|
|
340
340
|
return price.mul(totalSupplyInBase);
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
|
-
// Q64.64
|
|
343
|
+
// Q64.64 decoding utility
|
|
344
344
|
function decodeQ64_64(priceBN) {
|
|
345
345
|
return new BigNumber(priceBN.toString()).div('18446744073709551616');
|
|
346
346
|
}
|
|
@@ -349,7 +349,7 @@ const MAX_BIN_ARRAY_SIZE = new BN(CONSTANTS.find(([k, v]) => v.name == 'MAX_BIN_
|
|
|
349
349
|
const BIN_ARRAY_BITMAP_SIZE = new BN(CONSTANTS.find(([k, v]) => v.name == 'BIN_ARRAY_BITMAP_SIZE')?.[1].value ?? 0);
|
|
350
350
|
export class MeteoraDLMMCalc {
|
|
351
351
|
/**
|
|
352
|
-
* DLMM
|
|
352
|
+
* DLMM core parameters
|
|
353
353
|
*/
|
|
354
354
|
reserveX;
|
|
355
355
|
reserveY;
|
|
@@ -361,19 +361,19 @@ export class MeteoraDLMMCalc {
|
|
|
361
361
|
activeId;
|
|
362
362
|
vParameters;
|
|
363
363
|
/**
|
|
364
|
-
* DLMM
|
|
364
|
+
* All DLMM bin liquidity and prices (must be pre-assembled externally, sorted by binId ascending)
|
|
365
365
|
*/
|
|
366
366
|
allBins = [];
|
|
367
|
-
//
|
|
367
|
+
// Formula constants
|
|
368
368
|
static BASIS_POINT_MAX = 10000;
|
|
369
369
|
static MAX_FEE_RATE = 100_000_000;
|
|
370
370
|
static FEE_PRECISION = 100_000_000;
|
|
371
371
|
static OFFSET = 99_999_999_999;
|
|
372
372
|
static SCALE = 100_000_000_000;
|
|
373
|
-
baseDecimals = 6; //
|
|
374
|
-
quoteDecimals = 9; //
|
|
373
|
+
baseDecimals = 6; // Default 6 decimals
|
|
374
|
+
quoteDecimals = 9; // Default 9 decimals
|
|
375
375
|
/**
|
|
376
|
-
*
|
|
376
|
+
* Constructor supports passing allBins
|
|
377
377
|
*/
|
|
378
378
|
constructor(info) {
|
|
379
379
|
this.reserveX = info.reserveX;
|
|
@@ -395,7 +395,7 @@ export class MeteoraDLMMCalc {
|
|
|
395
395
|
this.binArrayBitmap = info.binArrayBitmap;
|
|
396
396
|
}
|
|
397
397
|
/**
|
|
398
|
-
*
|
|
398
|
+
* Get DLMM current price
|
|
399
399
|
* price = (1 + bin_step/BASIS_POINT_MAX) ^ active_id
|
|
400
400
|
* @returns number
|
|
401
401
|
*/
|
|
@@ -403,7 +403,7 @@ export class MeteoraDLMMCalc {
|
|
|
403
403
|
return Math.pow(1 + this.binStep / MeteoraDLMMCalc.BASIS_POINT_MAX, this.activeId);
|
|
404
404
|
}
|
|
405
405
|
/**
|
|
406
|
-
*
|
|
406
|
+
* Calculate base fee rate
|
|
407
407
|
* base_fee_rate = base_factor * bin_step * 10 * 10^base_fee_power_factor
|
|
408
408
|
* @param baseFactor number
|
|
409
409
|
* @param baseFeePowerFactor number
|
|
@@ -412,7 +412,7 @@ export class MeteoraDLMMCalc {
|
|
|
412
412
|
return baseFactor * this.binStep * 10 * Math.pow(10, baseFeePowerFactor);
|
|
413
413
|
}
|
|
414
414
|
/**
|
|
415
|
-
*
|
|
415
|
+
* Calculate variable fee rate
|
|
416
416
|
* variable_fee_rate = ((volatility_accumulator * bin_step)^2 * variable_fee_control + OFFSET) / SCALE
|
|
417
417
|
* @param variableFeeControl number
|
|
418
418
|
*/
|
|
@@ -422,7 +422,7 @@ export class MeteoraDLMMCalc {
|
|
|
422
422
|
return (t * t * variableFeeControl + MeteoraDLMMCalc.OFFSET) / MeteoraDLMMCalc.SCALE;
|
|
423
423
|
}
|
|
424
424
|
/**
|
|
425
|
-
*
|
|
425
|
+
* Calculate total fee rate
|
|
426
426
|
* total_fee_rate = min(base_fee_rate + variable_fee_rate, MAX_FEE_RATE)
|
|
427
427
|
* @param baseFactor number
|
|
428
428
|
* @param baseFeePowerFactor number
|
|
@@ -434,7 +434,7 @@ export class MeteoraDLMMCalc {
|
|
|
434
434
|
return Math.min(baseFee + variableFee, MeteoraDLMMCalc.MAX_FEE_RATE);
|
|
435
435
|
}
|
|
436
436
|
/**
|
|
437
|
-
*
|
|
437
|
+
* Calculate composition fee
|
|
438
438
|
* composition_fee = swap_amount * total_fee_rate * (1 + total_fee_rate) / FEE_PRECISION^2
|
|
439
439
|
* @param swapAmount number
|
|
440
440
|
* @param totalFeeRate number
|
|
@@ -443,10 +443,10 @@ export class MeteoraDLMMCalc {
|
|
|
443
443
|
return (swapAmount * totalFeeRate * (1 + totalFeeRate)) / MeteoraDLMMCalc.FEE_PRECISION ** 2;
|
|
444
444
|
}
|
|
445
445
|
/**
|
|
446
|
-
*
|
|
447
|
-
* @param spotPrice number
|
|
448
|
-
* @param maxPriceImpactBps number
|
|
449
|
-
* @param direction 'sellX' | 'sellY'
|
|
446
|
+
* Calculate price impact / slippage
|
|
447
|
+
* @param spotPrice number Current price
|
|
448
|
+
* @param maxPriceImpactBps number Max price impact in bps
|
|
449
|
+
* @param direction 'sellX' | 'sellY' Selling X or Y
|
|
450
450
|
* @returns minPrice
|
|
451
451
|
*/
|
|
452
452
|
getMinPrice(spotPrice, maxPriceImpactBps, direction) {
|
|
@@ -462,10 +462,10 @@ export class MeteoraDLMMCalc {
|
|
|
462
462
|
}
|
|
463
463
|
}
|
|
464
464
|
/**
|
|
465
|
-
*
|
|
466
|
-
* @param flatBins
|
|
467
|
-
* @param startIdx
|
|
468
|
-
* @returns
|
|
465
|
+
* Helper: jump-search for next bin index with liquidity (buy direction)
|
|
466
|
+
* @param flatBins Flattened bin array
|
|
467
|
+
* @param startIdx Start index
|
|
468
|
+
* @returns Next bin index with amountY liquidity, or -1 if not found
|
|
469
469
|
*/
|
|
470
470
|
findNextBinIndexWithLiquidityY(flatBins, startIdx) {
|
|
471
471
|
for (let i = startIdx; i < flatBins.length; i++) {
|
|
@@ -476,10 +476,10 @@ export class MeteoraDLMMCalc {
|
|
|
476
476
|
return -1;
|
|
477
477
|
}
|
|
478
478
|
/**
|
|
479
|
-
*
|
|
480
|
-
* @param flatBins
|
|
481
|
-
* @param startIdx
|
|
482
|
-
* @returns
|
|
479
|
+
* Helper: jump-search for next bin index with liquidity (sell direction)
|
|
480
|
+
* @param flatBins Flattened bin array
|
|
481
|
+
* @param startIdx Start index
|
|
482
|
+
* @returns Next bin index with amountX liquidity, or -1 if not found
|
|
483
483
|
*/
|
|
484
484
|
findNextBinIndexWithLiquidityX(flatBins, startIdx) {
|
|
485
485
|
for (let i = startIdx; i >= 0; i--) {
|
|
@@ -499,8 +499,8 @@ export class MeteoraDLMMCalc {
|
|
|
499
499
|
return [lowerBinArrayIndex, upperBinArrayIndex];
|
|
500
500
|
}
|
|
501
501
|
/**
|
|
502
|
-
*
|
|
503
|
-
*
|
|
502
|
+
* DLMM buy: iterate activeId and right-side bins, consume quoteIn, return purchasable base amount and involved binArray pubkeys
|
|
503
|
+
* Optimized: jump-search for bins with liquidity for better performance
|
|
504
504
|
*/
|
|
505
505
|
calculateBuyAmountOut(quoteIn) {
|
|
506
506
|
let remainQuote = new BigNumber(quoteIn.toString());
|
|
@@ -544,8 +544,8 @@ export class MeteoraDLMMCalc {
|
|
|
544
544
|
};
|
|
545
545
|
}
|
|
546
546
|
/**
|
|
547
|
-
*
|
|
548
|
-
*
|
|
547
|
+
* DLMM sell: iterate activeId and left-side bins, consume baseIn, return quote amount received and involved binArray pubkeys
|
|
548
|
+
* Optimized: jump-search for bins with liquidity for better performance
|
|
549
549
|
*/
|
|
550
550
|
calculateSellAmountOut(baseIn) {
|
|
551
551
|
let remainBase = new BigNumber(baseIn.toString());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calc.js","sourceRoot":"","sources":["../../../src/sol-sdk/calc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"calc.js","sourceRoot":"","sources":["../../../src/sol-sdk/calc.ts"],"names":[],"mappings":"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"}
|