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.
Files changed (158) hide show
  1. package/README.md +375 -368
  2. package/dist/bin/forgex.d.ts +5 -5
  3. package/dist/bin/forgex.js +14 -14
  4. package/dist/bin/forgex.js.map +1 -1
  5. package/dist/src/adapters/codex-adapter.d.ts +90 -90
  6. package/dist/src/adapters/codex-adapter.d.ts.map +1 -1
  7. package/dist/src/adapters/codex-adapter.js +76 -76
  8. package/dist/src/adapters/codex-adapter.js.map +1 -1
  9. package/dist/src/adapters/connection.d.ts +6 -6
  10. package/dist/src/adapters/connection.js +8 -8
  11. package/dist/src/adapters/connection.js.map +1 -1
  12. package/dist/src/adapters/ipfs.d.ts +3 -3
  13. package/dist/src/adapters/ipfs.js +3 -3
  14. package/dist/src/adapters/jito-adapter.d.ts +85 -85
  15. package/dist/src/adapters/jito-adapter.d.ts.map +1 -1
  16. package/dist/src/adapters/jito-adapter.js +111 -111
  17. package/dist/src/adapters/jito-adapter.js.map +1 -1
  18. package/dist/src/adapters/rpc-adapter.d.ts +53 -53
  19. package/dist/src/adapters/rpc-adapter.d.ts.map +1 -1
  20. package/dist/src/adapters/rpc-adapter.js +69 -69
  21. package/dist/src/adapters/rpc-adapter.js.map +1 -1
  22. package/dist/src/adapters/sdk-adapter.d.ts +21 -21
  23. package/dist/src/adapters/sdk-adapter.d.ts.map +1 -1
  24. package/dist/src/adapters/sdk-adapter.js +79 -79
  25. package/dist/src/adapters/sdk-adapter.js.map +1 -1
  26. package/dist/src/commands/config/index.d.ts +1 -1
  27. package/dist/src/commands/config/index.js +15 -15
  28. package/dist/src/commands/config/index.js.map +1 -1
  29. package/dist/src/commands/query/index.d.ts +2 -2
  30. package/dist/src/commands/query/index.js +82 -82
  31. package/dist/src/commands/query/index.js.map +1 -1
  32. package/dist/src/commands/token/index.d.ts +8 -8
  33. package/dist/src/commands/token/index.js +73 -73
  34. package/dist/src/commands/token/index.js.map +1 -1
  35. package/dist/src/commands/tools/index.d.ts +9 -9
  36. package/dist/src/commands/tools/index.js +137 -137
  37. package/dist/src/commands/tools/index.js.map +1 -1
  38. package/dist/src/commands/trade/index.d.ts +2 -2
  39. package/dist/src/commands/trade/index.js +82 -82
  40. package/dist/src/commands/trade/index.js.map +1 -1
  41. package/dist/src/commands/transfer/index.d.ts +8 -8
  42. package/dist/src/commands/transfer/index.js +106 -106
  43. package/dist/src/commands/transfer/index.js.map +1 -1
  44. package/dist/src/commands/wallet/index.d.ts +1 -1
  45. package/dist/src/commands/wallet/index.js +175 -175
  46. package/dist/src/commands/wallet/index.js.map +1 -1
  47. package/dist/src/config.d.ts +26 -26
  48. package/dist/src/config.d.ts.map +1 -1
  49. package/dist/src/config.js +28 -28
  50. package/dist/src/config.js.map +1 -1
  51. package/dist/src/const/index.js +1 -1
  52. package/dist/src/const/index.js.map +1 -1
  53. package/dist/src/data-source.d.ts +81 -81
  54. package/dist/src/data-source.d.ts.map +1 -1
  55. package/dist/src/data-source.js +149 -149
  56. package/dist/src/data-source.js.map +1 -1
  57. package/dist/src/data-store/index.d.ts +22 -22
  58. package/dist/src/data-store/index.d.ts.map +1 -1
  59. package/dist/src/data-store/index.js +46 -46
  60. package/dist/src/data-store/index.js.map +1 -1
  61. package/dist/src/data-store/types.d.ts +3 -3
  62. package/dist/src/data-store/types.js +3 -3
  63. package/dist/src/index.d.ts +2 -2
  64. package/dist/src/index.js +10 -10
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/output.d.ts +18 -18
  67. package/dist/src/output.d.ts.map +1 -1
  68. package/dist/src/output.js +34 -34
  69. package/dist/src/output.js.map +1 -1
  70. package/dist/src/shims/store.d.ts +3 -2
  71. package/dist/src/shims/store.d.ts.map +1 -1
  72. package/dist/src/shims/store.js +6 -5
  73. package/dist/src/shims/store.js.map +1 -1
  74. package/dist/src/sol-sdk/batch/create.d.ts +4 -1
  75. package/dist/src/sol-sdk/batch/create.d.ts.map +1 -1
  76. package/dist/src/sol-sdk/batch/create.js +44 -44
  77. package/dist/src/sol-sdk/batch/create.js.map +1 -1
  78. package/dist/src/sol-sdk/batch/index.js +135 -135
  79. package/dist/src/sol-sdk/batch/index.js.map +1 -1
  80. package/dist/src/sol-sdk/calc.d.ts +63 -63
  81. package/dist/src/sol-sdk/calc.d.ts.map +1 -1
  82. package/dist/src/sol-sdk/calc.js +120 -120
  83. package/dist/src/sol-sdk/calc.js.map +1 -1
  84. package/dist/src/sol-sdk/jito/index.js +12 -12
  85. package/dist/src/sol-sdk/jito/index.js.map +1 -1
  86. package/dist/src/sol-sdk/launchlab/instructions/create.js +10 -10
  87. package/dist/src/sol-sdk/launchlab/instructions/create.js.map +1 -1
  88. package/dist/src/sol-sdk/meteora/index.d.ts +5 -5
  89. package/dist/src/sol-sdk/meteora/index.js +11 -11
  90. package/dist/src/sol-sdk/meteora/index.js.map +1 -1
  91. package/dist/src/sol-sdk/meteora/instructions/buy.js +8 -8
  92. package/dist/src/sol-sdk/meteora/instructions/buy.js.map +1 -1
  93. package/dist/src/sol-sdk/meteora/instructions/sell.js +6 -6
  94. package/dist/src/sol-sdk/meteora/instructions/sell.js.map +1 -1
  95. package/dist/src/sol-sdk/pump/index.js +3 -3
  96. package/dist/src/sol-sdk/pump/index.js.map +1 -1
  97. package/dist/src/sol-sdk/pump/instructions/buy.d.ts +12 -12
  98. package/dist/src/sol-sdk/pump/instructions/buy.d.ts.map +1 -1
  99. package/dist/src/sol-sdk/pump/instructions/buy.js +26 -26
  100. package/dist/src/sol-sdk/pump/instructions/buy.js.map +1 -1
  101. package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts +13 -13
  102. package/dist/src/sol-sdk/pump/instructions/createAndBuy.js +17 -17
  103. package/dist/src/sol-sdk/pump/instructions/createAndBuy.js.map +1 -1
  104. package/dist/src/sol-sdk/pump/instructions/sell.d.ts +2 -2
  105. package/dist/src/sol-sdk/pump/instructions/sell.d.ts.map +1 -1
  106. package/dist/src/sol-sdk/pump/instructions/sell.js +7 -7
  107. package/dist/src/sol-sdk/pump/instructions/sell.js.map +1 -1
  108. package/dist/src/sol-sdk/pumpswap/index.d.ts +4 -4
  109. package/dist/src/sol-sdk/pumpswap/index.js +5 -5
  110. package/dist/src/sol-sdk/pumpswap/index.js.map +1 -1
  111. package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts +8 -8
  112. package/dist/src/sol-sdk/pumpswap/instructions/buy.js +19 -19
  113. package/dist/src/sol-sdk/pumpswap/instructions/buy.js.map +1 -1
  114. package/dist/src/sol-sdk/pumpswap/instructions/migrate.js +2 -2
  115. package/dist/src/sol-sdk/pumpswap/instructions/migrate.js.map +1 -1
  116. package/dist/src/sol-sdk/pumpswap/instructions/sell.js +4 -4
  117. package/dist/src/sol-sdk/pumpswap/instructions/sell.js.map +1 -1
  118. package/dist/src/sol-sdk/pumpswap/rpc/index.js +1 -1
  119. package/dist/src/sol-sdk/pumpswap/rpc/index.js.map +1 -1
  120. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js +3 -3
  121. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js.map +1 -1
  122. package/dist/src/sol-sdk/raydium/instructions/sell.d.ts +40 -8520
  123. package/dist/src/sol-sdk/raydium/instructions/sell.d.ts.map +1 -1
  124. package/dist/src/sol-sdk/raydium/instructions/sell.js +6 -6
  125. package/dist/src/sol-sdk/raydium/instructions/sell.js.map +1 -1
  126. package/dist/src/sol-sdk/raydium/rpc/index.d.ts +4 -4
  127. package/dist/src/sol-sdk/rpc/index.d.ts +14 -14
  128. package/dist/src/sol-sdk/rpc/index.d.ts.map +1 -1
  129. package/dist/src/sol-sdk/rpc/index.js +17 -17
  130. package/dist/src/sol-sdk/rpc/index.js.map +1 -1
  131. package/dist/src/sol-sdk/transfer/index.js +5 -5
  132. package/dist/src/sol-sdk/transfer/index.js.map +1 -1
  133. package/dist/src/sol-sdk/turnover/index.d.ts +3 -3
  134. package/dist/src/sol-sdk/turnover/index.js +56 -56
  135. package/dist/src/sol-sdk/turnover/index.js.map +1 -1
  136. package/dist/src/telemetry.d.ts +8 -8
  137. package/dist/src/telemetry.d.ts.map +1 -1
  138. package/dist/src/telemetry.js +28 -27
  139. package/dist/src/telemetry.js.map +1 -1
  140. package/dist/src/tx-tracker/detail-adapter.d.ts +53 -53
  141. package/dist/src/tx-tracker/detail-adapter.d.ts.map +1 -1
  142. package/dist/src/tx-tracker/detail-adapter.js +68 -68
  143. package/dist/src/tx-tracker/detail-adapter.js.map +1 -1
  144. package/dist/src/tx-tracker/index.d.ts +67 -67
  145. package/dist/src/tx-tracker/index.d.ts.map +1 -1
  146. package/dist/src/tx-tracker/index.js +103 -103
  147. package/dist/src/tx-tracker/index.js.map +1 -1
  148. package/dist/src/types/index.d.ts +10 -10
  149. package/dist/src/types/index.d.ts.map +1 -1
  150. package/dist/src/types/websocket.js +1 -1
  151. package/dist/src/types/websocket.js.map +1 -1
  152. package/dist/src/utils/index.js +20 -20
  153. package/dist/src/utils/index.js.map +1 -1
  154. package/dist/src/wallet-store.d.ts +51 -51
  155. package/dist/src/wallet-store.d.ts.map +1 -1
  156. package/dist/src/wallet-store.js +104 -104
  157. package/dist/src/wallet-store.js.map +1 -1
  158. package/package.json +1 -1
@@ -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
- * 根据 CPMM 恒定乘积公式计算输出数量
27
- * @param amountIn 输入数量(bigint
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; // 假设 fee 为 0.3%,即 997/1000,可改为参数
35
- const denominator = reserveIn + amountInWithFee; // 假设 fee 0.3%,即 997/1000,可改为参数
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->quotefalse = quote->base
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; // BNlamports
102
- const realSolReserves = this.initialRealSolReserves; // BNlamports
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; // 返回最小单位,前端展示时 / 1e6
118
+ return tokensToBuy; // returns min units, divide by 1e6 for display
119
119
  }
120
120
  /**
121
- * 计算购买固定数量token需要的SOL数量
122
- * @param tokenAmount 想要购买的token数量(最小单位字符串)
123
- * @returns 需要的SOL数量(lamports
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; // BNlamports
129
- const realSolReserves = this.initialRealSolReserves; // BNlamports
130
- const realTokenReserves = this.initialRealTokenReserves; // BN,最小单位
131
- // 检查是否有足够的token可购买
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('购买数量超过可用token储备');
133
+ throw new Error('Purchase amount exceeds available token reserves');
134
134
  }
135
135
  if (tokensWanted.lte(new BN(0))) {
136
- throw new Error('购买数量必须大于0');
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
- // 计算购买后的新虚拟token储备
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
- // 根据恒定乘积公式计算新的虚拟SOL储备
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
- // 计算需要的SOL数量
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('计算出的SOL数量异常');
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; // 返回lamports,前端展示时 / 1e9 得到 SOL
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
- // 最多只能取出现实真实sol储备
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
- // 返回 lamports,前端再 / 1e9 得到 SOL
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; // 虚拟SOL储备
195
- realBase; // 真实代币储备
196
- realQuote; // 真实SOL储备
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'); // 初始真实代币储备为0
208
- this.realQuote = props.realQuote ?? new BN('0'); // 初始真实SOL储备为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
- * 获取当前价格 (SOL/Token)
229
+ * Get current price (SOL/Token)
230
230
  */
231
231
  getPrice() {
232
232
  const totalQuoteReserves = this.realQuote.add(this.virtualQuote);
233
- // 修复:realBase代表已卖出的代币,所以可用base储备 = virtualBase - realBase
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数量(lamports字符串)
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
- // 修复:realBase代表已卖出的代币,所以可用base储备 = virtualBase - realBase
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
- // 使用恒定乘积公式: k = (virtual_base - real_base) * (virtual_quote + real_quote)
256
+ // Constant product formula: k = (virtual_base - real_base) * (virtual_quote + real_quote)
257
257
  const k = totalBase.mul(totalQuote);
258
- // 计算新的quote储备
258
+ // Calculate new quote reserves
259
259
  const newQuoteReserves = totalQuote.add(quoteAmountIn);
260
- // 计算新的虚拟base储备: new_base = k / new_quote_reserves
260
+ // Calculate new virtual base reserves: new_base = k / new_quote_reserves
261
261
  const newBase = k.div(newQuoteReserves);
262
- // 计算能买到的代币数量: tokens_out = totalBase - new_base
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
- * 计算卖出获得的SOL数量
278
- * @param tokenAmount 代币数量(最小单位字符串)
279
- * @returns 能获得的SOL数量(lamports
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
- // 修复:realBase代表已卖出的代币,所以可用base储备 = virtualBase - realBase
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
- // 使用恒定乘积公式: k = (virtual_base - real_base) * (virtual_quote + real_quote)
291
+ // Constant product formula: k = (virtual_base - real_base) * (virtual_quote + real_quote)
292
292
  const k = totalBase.mul(totalQuote);
293
- // 计算新的base储备
293
+ // Calculate new base reserves
294
294
  const newBaseReserves = totalBase.add(baseAmountIn);
295
- // 计算新的quote储备: new_quote_reserves = k / new_base_reserves
295
+ // Calculate new quote reserves: new_quote_reserves = k / new_base_reserves
296
296
  const newQuoteReserves = k.div(newBaseReserves);
297
- // 计算能获得的SOL数量: sol_out = (virtual_quote + real_quote) - new_quote_reserves
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
- // 检查是否有足够的SOL可售
301
+ // Check if enough SOL available
302
302
  if (solOut.lte(new BN(0))) {
303
- throw new Error('卖出数量异常:没有足够的SOL可售');
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
- * 获取资金筹集进度 (0-100)
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所有bin的流动性与价格(需外部组装好,按binId升序排列)
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; // 默认6
374
- quoteDecimals = 9; // 默认9
373
+ baseDecimals = 6; // Default 6 decimals
374
+ quoteDecimals = 9; // Default 9 decimals
375
375
  /**
376
- * 构造函数支持传入allBins
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
- * 获取DLMM当前价格
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
- * 计算基础手续费率 base_fee_rate
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
- * 计算浮动手续费率 variable_fee_rate
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
- * 计算总手续费率 total_fee_rate
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
- * 计算复合手续费 composition_fee
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 最大价格冲击bps
449
- * @param direction 'sellX' | 'sellY' X还是卖Y
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
- * 辅助函数:跳跃查找下一个有流动性的bin索引(买入方向)
466
- * @param flatBins 扁平化bin数组
467
- * @param startIdx 起始索引
468
- * @returns 下一个有amountY流动性的bin索引,找不到则返回-1
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
- * 辅助函数:跳跃查找下一个有流动性的bin索引(卖出方向)
480
- * @param flatBins 扁平化bin数组
481
- * @param startIdx 起始索引
482
- * @returns 下一个有amountX流动性的bin索引,找不到则返回-1
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
- * 真实DLMM买入:遍历activeId及右侧bins,消耗quoteIn,返回能买到的base数量和涉及的binArray pubkey
503
- * 优化:跳跃查找有流动性的bin,提升性能
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
- * 真实DLMM卖出:遍历activeId及左侧bins,消耗baseIn,返回能换到的quote数量和涉及的binArray pubkey
548
- * 优化:跳跃查找有流动性的bin,提升性能
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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"}