forgex-cli 1.0.0

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 (275) hide show
  1. package/README.md +479 -0
  2. package/dist/bin/forgex.d.ts +12 -0
  3. package/dist/bin/forgex.d.ts.map +1 -0
  4. package/dist/bin/forgex.js +23 -0
  5. package/dist/bin/forgex.js.map +1 -0
  6. package/dist/src/adapters/codex-adapter.d.ts +238 -0
  7. package/dist/src/adapters/codex-adapter.d.ts.map +1 -0
  8. package/dist/src/adapters/codex-adapter.js +524 -0
  9. package/dist/src/adapters/codex-adapter.js.map +1 -0
  10. package/dist/src/adapters/connection.d.ts +20 -0
  11. package/dist/src/adapters/connection.d.ts.map +1 -0
  12. package/dist/src/adapters/connection.js +43 -0
  13. package/dist/src/adapters/connection.js.map +1 -0
  14. package/dist/src/adapters/ipfs.d.ts +17 -0
  15. package/dist/src/adapters/ipfs.d.ts.map +1 -0
  16. package/dist/src/adapters/ipfs.js +30 -0
  17. package/dist/src/adapters/ipfs.js.map +1 -0
  18. package/dist/src/adapters/jito-adapter.d.ts +194 -0
  19. package/dist/src/adapters/jito-adapter.d.ts.map +1 -0
  20. package/dist/src/adapters/jito-adapter.js +474 -0
  21. package/dist/src/adapters/jito-adapter.js.map +1 -0
  22. package/dist/src/adapters/rpc-adapter.d.ts +148 -0
  23. package/dist/src/adapters/rpc-adapter.d.ts.map +1 -0
  24. package/dist/src/adapters/rpc-adapter.js +410 -0
  25. package/dist/src/adapters/rpc-adapter.js.map +1 -0
  26. package/dist/src/adapters/sdk-adapter.d.ts +148 -0
  27. package/dist/src/adapters/sdk-adapter.d.ts.map +1 -0
  28. package/dist/src/adapters/sdk-adapter.js +554 -0
  29. package/dist/src/adapters/sdk-adapter.js.map +1 -0
  30. package/dist/src/commands/config/index.d.ts +8 -0
  31. package/dist/src/commands/config/index.d.ts.map +1 -0
  32. package/dist/src/commands/config/index.js +91 -0
  33. package/dist/src/commands/config/index.js.map +1 -0
  34. package/dist/src/commands/query/index.d.ts +10 -0
  35. package/dist/src/commands/query/index.d.ts.map +1 -0
  36. package/dist/src/commands/query/index.js +376 -0
  37. package/dist/src/commands/query/index.js.map +1 -0
  38. package/dist/src/commands/sniper/index.d.ts +16 -0
  39. package/dist/src/commands/sniper/index.d.ts.map +1 -0
  40. package/dist/src/commands/sniper/index.js +292 -0
  41. package/dist/src/commands/sniper/index.js.map +1 -0
  42. package/dist/src/commands/token/index.d.ts +16 -0
  43. package/dist/src/commands/token/index.d.ts.map +1 -0
  44. package/dist/src/commands/token/index.js +295 -0
  45. package/dist/src/commands/token/index.js.map +1 -0
  46. package/dist/src/commands/tools/index.d.ts +17 -0
  47. package/dist/src/commands/tools/index.d.ts.map +1 -0
  48. package/dist/src/commands/tools/index.js +626 -0
  49. package/dist/src/commands/tools/index.js.map +1 -0
  50. package/dist/src/commands/trade/index.d.ts +8 -0
  51. package/dist/src/commands/trade/index.d.ts.map +1 -0
  52. package/dist/src/commands/trade/index.js +531 -0
  53. package/dist/src/commands/trade/index.js.map +1 -0
  54. package/dist/src/commands/transfer/index.d.ts +16 -0
  55. package/dist/src/commands/transfer/index.d.ts.map +1 -0
  56. package/dist/src/commands/transfer/index.js +509 -0
  57. package/dist/src/commands/transfer/index.js.map +1 -0
  58. package/dist/src/commands/wallet/index.d.ts +10 -0
  59. package/dist/src/commands/wallet/index.d.ts.map +1 -0
  60. package/dist/src/commands/wallet/index.js +828 -0
  61. package/dist/src/commands/wallet/index.js.map +1 -0
  62. package/dist/src/config.d.ts +74 -0
  63. package/dist/src/config.d.ts.map +1 -0
  64. package/dist/src/config.js +190 -0
  65. package/dist/src/config.js.map +1 -0
  66. package/dist/src/const/IDL/index.d.ts +4 -0
  67. package/dist/src/const/IDL/index.d.ts.map +1 -0
  68. package/dist/src/const/IDL/index.js +2 -0
  69. package/dist/src/const/IDL/index.js.map +1 -0
  70. package/dist/src/const/IDL/meteora-DLMM.d.ts +10249 -0
  71. package/dist/src/const/IDL/meteora-DLMM.d.ts.map +1 -0
  72. package/dist/src/const/IDL/meteora-DLMM.js +4177 -0
  73. package/dist/src/const/IDL/meteora-DLMM.js.map +1 -0
  74. package/dist/src/const/IDL/pump-fun.d.ts +4811 -0
  75. package/dist/src/const/IDL/pump-fun.d.ts.map +1 -0
  76. package/dist/src/const/IDL/pump-fun.js +2954 -0
  77. package/dist/src/const/IDL/pump-fun.js.map +1 -0
  78. package/dist/src/const/IDL/pump-swap-IDL.d.ts +3119 -0
  79. package/dist/src/const/IDL/pump-swap-IDL.d.ts.map +1 -0
  80. package/dist/src/const/IDL/pump-swap-IDL.js +2095 -0
  81. package/dist/src/const/IDL/pump-swap-IDL.js.map +1 -0
  82. package/dist/src/const/IDL/raydium-launchlab-IDL.d.ts +4031 -0
  83. package/dist/src/const/IDL/raydium-launchlab-IDL.d.ts.map +1 -0
  84. package/dist/src/const/IDL/raydium-launchlab-IDL.js +2110 -0
  85. package/dist/src/const/IDL/raydium-launchlab-IDL.js.map +1 -0
  86. package/dist/src/const/index.d.ts +40 -0
  87. package/dist/src/const/index.d.ts.map +1 -0
  88. package/dist/src/const/index.js +57 -0
  89. package/dist/src/const/index.js.map +1 -0
  90. package/dist/src/data-source.d.ts +270 -0
  91. package/dist/src/data-source.d.ts.map +1 -0
  92. package/dist/src/data-source.js +628 -0
  93. package/dist/src/data-source.js.map +1 -0
  94. package/dist/src/data-store/index.d.ts +87 -0
  95. package/dist/src/data-store/index.d.ts.map +1 -0
  96. package/dist/src/data-store/index.js +561 -0
  97. package/dist/src/data-store/index.js.map +1 -0
  98. package/dist/src/data-store/types.d.ts +91 -0
  99. package/dist/src/data-store/types.d.ts.map +1 -0
  100. package/dist/src/data-store/types.js +8 -0
  101. package/dist/src/data-store/types.js.map +1 -0
  102. package/dist/src/index.d.ts +8 -0
  103. package/dist/src/index.d.ts.map +1 -0
  104. package/dist/src/index.js +36 -0
  105. package/dist/src/index.js.map +1 -0
  106. package/dist/src/output.d.ts +52 -0
  107. package/dist/src/output.d.ts.map +1 -0
  108. package/dist/src/output.js +218 -0
  109. package/dist/src/output.js.map +1 -0
  110. package/dist/src/shims/store.d.ts +58 -0
  111. package/dist/src/shims/store.d.ts.map +1 -0
  112. package/dist/src/shims/store.js +55 -0
  113. package/dist/src/shims/store.js.map +1 -0
  114. package/dist/src/sol-sdk/account/index.d.ts +13 -0
  115. package/dist/src/sol-sdk/account/index.d.ts.map +1 -0
  116. package/dist/src/sol-sdk/account/index.js +174 -0
  117. package/dist/src/sol-sdk/account/index.js.map +1 -0
  118. package/dist/src/sol-sdk/account/lookupTable.d.ts +24 -0
  119. package/dist/src/sol-sdk/account/lookupTable.d.ts.map +1 -0
  120. package/dist/src/sol-sdk/account/lookupTable.js +103 -0
  121. package/dist/src/sol-sdk/account/lookupTable.js.map +1 -0
  122. package/dist/src/sol-sdk/batch/create.d.ts +23 -0
  123. package/dist/src/sol-sdk/batch/create.d.ts.map +1 -0
  124. package/dist/src/sol-sdk/batch/create.js +580 -0
  125. package/dist/src/sol-sdk/batch/create.js.map +1 -0
  126. package/dist/src/sol-sdk/batch/external-sniper.d.ts +31 -0
  127. package/dist/src/sol-sdk/batch/external-sniper.d.ts.map +1 -0
  128. package/dist/src/sol-sdk/batch/external-sniper.js +163 -0
  129. package/dist/src/sol-sdk/batch/external-sniper.js.map +1 -0
  130. package/dist/src/sol-sdk/batch/index.d.ts +144 -0
  131. package/dist/src/sol-sdk/batch/index.d.ts.map +1 -0
  132. package/dist/src/sol-sdk/batch/index.js +1573 -0
  133. package/dist/src/sol-sdk/batch/index.js.map +1 -0
  134. package/dist/src/sol-sdk/calc.d.ts +277 -0
  135. package/dist/src/sol-sdk/calc.d.ts.map +1 -0
  136. package/dist/src/sol-sdk/calc.js +590 -0
  137. package/dist/src/sol-sdk/calc.js.map +1 -0
  138. package/dist/src/sol-sdk/index.d.ts +1 -0
  139. package/dist/src/sol-sdk/index.d.ts.map +1 -0
  140. package/dist/src/sol-sdk/index.js +1 -0
  141. package/dist/src/sol-sdk/index.js.map +1 -0
  142. package/dist/src/sol-sdk/jito/index.d.ts +50 -0
  143. package/dist/src/sol-sdk/jito/index.d.ts.map +1 -0
  144. package/dist/src/sol-sdk/jito/index.js +225 -0
  145. package/dist/src/sol-sdk/jito/index.js.map +1 -0
  146. package/dist/src/sol-sdk/launchlab/index.d.ts +32 -0
  147. package/dist/src/sol-sdk/launchlab/index.d.ts.map +1 -0
  148. package/dist/src/sol-sdk/launchlab/index.js +78 -0
  149. package/dist/src/sol-sdk/launchlab/index.js.map +1 -0
  150. package/dist/src/sol-sdk/launchlab/instructions/buy.d.ts +27 -0
  151. package/dist/src/sol-sdk/launchlab/instructions/buy.d.ts.map +1 -0
  152. package/dist/src/sol-sdk/launchlab/instructions/buy.js +124 -0
  153. package/dist/src/sol-sdk/launchlab/instructions/buy.js.map +1 -0
  154. package/dist/src/sol-sdk/launchlab/instructions/create.d.ts +27 -0
  155. package/dist/src/sol-sdk/launchlab/instructions/create.d.ts.map +1 -0
  156. package/dist/src/sol-sdk/launchlab/instructions/create.js +125 -0
  157. package/dist/src/sol-sdk/launchlab/instructions/create.js.map +1 -0
  158. package/dist/src/sol-sdk/launchlab/instructions/sell.d.ts +15 -0
  159. package/dist/src/sol-sdk/launchlab/instructions/sell.d.ts.map +1 -0
  160. package/dist/src/sol-sdk/launchlab/instructions/sell.js +65 -0
  161. package/dist/src/sol-sdk/launchlab/instructions/sell.js.map +1 -0
  162. package/dist/src/sol-sdk/meteora/index.d.ts +32 -0
  163. package/dist/src/sol-sdk/meteora/index.d.ts.map +1 -0
  164. package/dist/src/sol-sdk/meteora/index.js +72 -0
  165. package/dist/src/sol-sdk/meteora/index.js.map +1 -0
  166. package/dist/src/sol-sdk/meteora/instructions/buy.d.ts +46 -0
  167. package/dist/src/sol-sdk/meteora/instructions/buy.d.ts.map +1 -0
  168. package/dist/src/sol-sdk/meteora/instructions/buy.js +153 -0
  169. package/dist/src/sol-sdk/meteora/instructions/buy.js.map +1 -0
  170. package/dist/src/sol-sdk/meteora/instructions/sell.d.ts +24 -0
  171. package/dist/src/sol-sdk/meteora/instructions/sell.d.ts.map +1 -0
  172. package/dist/src/sol-sdk/meteora/instructions/sell.js +98 -0
  173. package/dist/src/sol-sdk/meteora/instructions/sell.js.map +1 -0
  174. package/dist/src/sol-sdk/pump/index.d.ts +22 -0
  175. package/dist/src/sol-sdk/pump/index.d.ts.map +1 -0
  176. package/dist/src/sol-sdk/pump/index.js +101 -0
  177. package/dist/src/sol-sdk/pump/index.js.map +1 -0
  178. package/dist/src/sol-sdk/pump/instructions/buy.d.ts +29 -0
  179. package/dist/src/sol-sdk/pump/instructions/buy.d.ts.map +1 -0
  180. package/dist/src/sol-sdk/pump/instructions/buy.js +131 -0
  181. package/dist/src/sol-sdk/pump/instructions/buy.js.map +1 -0
  182. package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts +36 -0
  183. package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts.map +1 -0
  184. package/dist/src/sol-sdk/pump/instructions/createAndBuy.js +77 -0
  185. package/dist/src/sol-sdk/pump/instructions/createAndBuy.js.map +1 -0
  186. package/dist/src/sol-sdk/pump/instructions/sell.d.ts +7 -0
  187. package/dist/src/sol-sdk/pump/instructions/sell.d.ts.map +1 -0
  188. package/dist/src/sol-sdk/pump/instructions/sell.js +38 -0
  189. package/dist/src/sol-sdk/pump/instructions/sell.js.map +1 -0
  190. package/dist/src/sol-sdk/pumpswap/index.d.ts +9 -0
  191. package/dist/src/sol-sdk/pumpswap/index.d.ts.map +1 -0
  192. package/dist/src/sol-sdk/pumpswap/index.js +27 -0
  193. package/dist/src/sol-sdk/pumpswap/index.js.map +1 -0
  194. package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts +61 -0
  195. package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts.map +1 -0
  196. package/dist/src/sol-sdk/pumpswap/instructions/buy.js +215 -0
  197. package/dist/src/sol-sdk/pumpswap/instructions/buy.js.map +1 -0
  198. package/dist/src/sol-sdk/pumpswap/instructions/migrate.d.ts +3 -0
  199. package/dist/src/sol-sdk/pumpswap/instructions/migrate.d.ts.map +1 -0
  200. package/dist/src/sol-sdk/pumpswap/instructions/migrate.js +33 -0
  201. package/dist/src/sol-sdk/pumpswap/instructions/migrate.js.map +1 -0
  202. package/dist/src/sol-sdk/pumpswap/instructions/sell.d.ts +20 -0
  203. package/dist/src/sol-sdk/pumpswap/instructions/sell.d.ts.map +1 -0
  204. package/dist/src/sol-sdk/pumpswap/instructions/sell.js +107 -0
  205. package/dist/src/sol-sdk/pumpswap/instructions/sell.js.map +1 -0
  206. package/dist/src/sol-sdk/pumpswap/rpc/index.d.ts +28 -0
  207. package/dist/src/sol-sdk/pumpswap/rpc/index.d.ts.map +1 -0
  208. package/dist/src/sol-sdk/pumpswap/rpc/index.js +63 -0
  209. package/dist/src/sol-sdk/pumpswap/rpc/index.js.map +1 -0
  210. package/dist/src/sol-sdk/raydium/index.d.ts +16 -0
  211. package/dist/src/sol-sdk/raydium/index.d.ts.map +1 -0
  212. package/dist/src/sol-sdk/raydium/index.js +47 -0
  213. package/dist/src/sol-sdk/raydium/index.js.map +1 -0
  214. package/dist/src/sol-sdk/raydium/instructions/buy.d.ts +29 -0
  215. package/dist/src/sol-sdk/raydium/instructions/buy.d.ts.map +1 -0
  216. package/dist/src/sol-sdk/raydium/instructions/buy.js +106 -0
  217. package/dist/src/sol-sdk/raydium/instructions/buy.js.map +1 -0
  218. package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.d.ts +29 -0
  219. package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.d.ts.map +1 -0
  220. package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.js +80 -0
  221. package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.js.map +1 -0
  222. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.d.ts +17 -0
  223. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.d.ts.map +1 -0
  224. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js +56 -0
  225. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js.map +1 -0
  226. package/dist/src/sol-sdk/raydium/instructions/sell.d.ts +8558 -0
  227. package/dist/src/sol-sdk/raydium/instructions/sell.d.ts.map +1 -0
  228. package/dist/src/sol-sdk/raydium/instructions/sell.js +70 -0
  229. package/dist/src/sol-sdk/raydium/instructions/sell.js.map +1 -0
  230. package/dist/src/sol-sdk/raydium/rpc/index.d.ts +39 -0
  231. package/dist/src/sol-sdk/raydium/rpc/index.d.ts.map +1 -0
  232. package/dist/src/sol-sdk/raydium/rpc/index.js +82 -0
  233. package/dist/src/sol-sdk/raydium/rpc/index.js.map +1 -0
  234. package/dist/src/sol-sdk/raydium/rpc/raydium.d.ts +5 -0
  235. package/dist/src/sol-sdk/raydium/rpc/raydium.d.ts.map +1 -0
  236. package/dist/src/sol-sdk/raydium/rpc/raydium.js +18 -0
  237. package/dist/src/sol-sdk/raydium/rpc/raydium.js.map +1 -0
  238. package/dist/src/sol-sdk/rpc/index.d.ts +33 -0
  239. package/dist/src/sol-sdk/rpc/index.d.ts.map +1 -0
  240. package/dist/src/sol-sdk/rpc/index.js +128 -0
  241. package/dist/src/sol-sdk/rpc/index.js.map +1 -0
  242. package/dist/src/sol-sdk/transfer/index.d.ts +24 -0
  243. package/dist/src/sol-sdk/transfer/index.d.ts.map +1 -0
  244. package/dist/src/sol-sdk/transfer/index.js +65 -0
  245. package/dist/src/sol-sdk/transfer/index.js.map +1 -0
  246. package/dist/src/sol-sdk/turnover/index.d.ts +84 -0
  247. package/dist/src/sol-sdk/turnover/index.d.ts.map +1 -0
  248. package/dist/src/sol-sdk/turnover/index.js +569 -0
  249. package/dist/src/sol-sdk/turnover/index.js.map +1 -0
  250. package/dist/src/tx-tracker/detail-adapter.d.ts +100 -0
  251. package/dist/src/tx-tracker/detail-adapter.d.ts.map +1 -0
  252. package/dist/src/tx-tracker/detail-adapter.js +215 -0
  253. package/dist/src/tx-tracker/detail-adapter.js.map +1 -0
  254. package/dist/src/tx-tracker/index.d.ts +142 -0
  255. package/dist/src/tx-tracker/index.d.ts.map +1 -0
  256. package/dist/src/tx-tracker/index.js +447 -0
  257. package/dist/src/tx-tracker/index.js.map +1 -0
  258. package/dist/src/types/index.d.ts +76 -0
  259. package/dist/src/types/index.d.ts.map +1 -0
  260. package/dist/src/types/index.js +69 -0
  261. package/dist/src/types/index.js.map +1 -0
  262. package/dist/src/types/websocket.d.ts +15 -0
  263. package/dist/src/types/websocket.d.ts.map +1 -0
  264. package/dist/src/types/websocket.js +18 -0
  265. package/dist/src/types/websocket.js.map +1 -0
  266. package/dist/src/utils/index.d.ts +13 -0
  267. package/dist/src/utils/index.d.ts.map +1 -0
  268. package/dist/src/utils/index.js +174 -0
  269. package/dist/src/utils/index.js.map +1 -0
  270. package/dist/src/wallet-store.d.ts +124 -0
  271. package/dist/src/wallet-store.d.ts.map +1 -0
  272. package/dist/src/wallet-store.js +524 -0
  273. package/dist/src/wallet-store.js.map +1 -0
  274. package/package.json +86 -0
  275. package/scripts/postinstall.js +88 -0
@@ -0,0 +1,554 @@
1
+ /**
2
+ * ForgeX CLI SDK 适配器
3
+ *
4
+ * 桥接 CLI 与前端 sol-sdk,提供完整的交易执行管道。
5
+ * 通过 tsconfig paths 将 @/store 重定向到 CLI 的 shim。
6
+ */
7
+ import { Keypair, PublicKey, LAMPORTS_PER_SOL, Transaction } from '@solana/web3.js';
8
+ import bs58 from 'bs58';
9
+ import { NATIVE_MINT } from '@solana/spl-token';
10
+ import { getConnection } from './connection.js';
11
+ import { loadConfig } from '../config.js';
12
+ import { getDataSource } from '../data-source.js';
13
+ import { getDecryptedPrivateKey } from '../wallet-store.js';
14
+ // ============================================================
15
+ // 导入本地 SDK 模块(sol-sdk 已复制到 cli/src/sol-sdk/)
16
+ // @/store → cli/src/shims/store.ts
17
+ // ============================================================
18
+ import { batchTrade, pumpBatchTrade, launchlabBatchTrade } from '../sol-sdk/batch/index.js';
19
+ import { executeSingleTurnover, executeBatchTurnover, } from '../sol-sdk/turnover/index.js';
20
+ import { transferSOLInstruction, } from '../sol-sdk/transfer/index.js';
21
+ import { getPumpCurveState } from '../sol-sdk/pump/index.js';
22
+ import { pumpSwapGetPoolInfo } from '../sol-sdk/pumpswap/index.js';
23
+ import { raydiumGetPoolInfo, raydiumGetCpmmPoolInfo, raydiumGetPoolKeys, raydiumGetCpmmKeys, } from '../sol-sdk/raydium/index.js';
24
+ import { getLaunchlabReverseInfo } from '../sol-sdk/launchlab/index.js';
25
+ import { getDLMMPoolInfo } from '../sol-sdk/meteora/index.js';
26
+ import { getCU, getNativeBalance, getTokenAccountBalance } from '../sol-sdk/rpc/index.js';
27
+ import JitoJsonRpcClient from '../sol-sdk/jito/index.js';
28
+ // 本地定义 VolumeType(避免跨项目枚举导入问题)
29
+ const VolumeType = {
30
+ ONE_BUY_ONE_SELL: 'one_buy_one_sell',
31
+ ONE_BUY_TWO_SELL: 'one_buy_two_sell',
32
+ ONE_BUY_THREE_SELL: 'one_buy_three_sell',
33
+ TWO_BUY_ONE_SELL: 'two_buy_one_sell',
34
+ THREE_BUY_ONE_SELL: 'three_buy_one_sell',
35
+ };
36
+ // ============================================================
37
+ // 交易上下文获取
38
+ // ============================================================
39
+ /**
40
+ * 获取交易上下文(代币信息、池子数据、DEX 信息、深度数据)
41
+ *
42
+ * 数据源: DataSource -> CodexAdapter (3.0h 迁移)
43
+ */
44
+ export async function fetchTradeContext(tokenCA) {
45
+ const config = loadConfig();
46
+ const connection = getConnection();
47
+ const ds = getDataSource();
48
+ // 1. 获取代币信息和交易对 -- 通过 DataSource -> CodexAdapter
49
+ const [tokenInfo, pairs] = await Promise.all([
50
+ ds.getTokenInfo(tokenCA),
51
+ ds.getPairsForToken(tokenCA, 10),
52
+ ]);
53
+ if (!pairs || pairs.length === 0) {
54
+ throw new Error(`无法获取代币交易对: ${tokenCA}`);
55
+ }
56
+ // 2. 筛选有效交易对(SOL 交易对, 支持的 DEX)
57
+ const validExchanges = ['Pump', 'PumpSwap', 'Raydium', 'Raydium CPMM', 'LaunchLab', 'Meteora'];
58
+ const solMint = NATIVE_MINT.toBase58();
59
+ const solPairs = pairs.filter((p) => validExchanges.includes(p.exchangeName) &&
60
+ (p.token0Address === solMint || p.token1Address === solMint));
61
+ if (solPairs.length === 0) {
62
+ throw new Error('未找到有效的 SOL 交易对');
63
+ }
64
+ const topPair = solPairs[0];
65
+ const exchangeName = topPair.exchangeName;
66
+ const poolId = topPair.pairAddress;
67
+ const decimals = tokenInfo.decimals || 6;
68
+ const creatorAddress = tokenInfo.creatorAddress || '';
69
+ // 构建 poolInfo 兼容格式 (保持 batchTrade 等 SDK 函数的参数兼容性)
70
+ const poolInfo = {
71
+ pairAddress: topPair.pairAddress,
72
+ exchange: { name: exchangeName },
73
+ tokenA: topPair.token0Address,
74
+ tokenB: topPair.token1Address,
75
+ };
76
+ // 3. 获取深度数据
77
+ let pumpfunReverseInfo;
78
+ let ammReverseInfo;
79
+ let launchlabReverseInfo;
80
+ let meteoraDLMMReverseInfo;
81
+ let raydiumV4Keys;
82
+ let raydiumCpmmKeys;
83
+ try {
84
+ if (exchangeName === 'Pump') {
85
+ pumpfunReverseInfo = await getPumpCurveState(connection, tokenCA);
86
+ }
87
+ else if (exchangeName === 'PumpSwap') {
88
+ const poolData = await pumpSwapGetPoolInfo(connection, poolId);
89
+ ammReverseInfo = {
90
+ mintA: poolData.mintA,
91
+ mintB: poolData.mintB,
92
+ poolBaseTokenInfo: poolData.poolBaseTokenInfo,
93
+ poolQuoteTokenInfo: poolData.poolQuoteTokenInfo,
94
+ };
95
+ }
96
+ else if (exchangeName === 'Raydium') {
97
+ const poolData = await raydiumGetPoolInfo(connection, poolId);
98
+ ammReverseInfo = {
99
+ mintA: '',
100
+ mintB: '',
101
+ poolBaseTokenInfo: poolData.poolBaseTokenInfo,
102
+ poolQuoteTokenInfo: poolData.poolQuoteTokenInfo,
103
+ };
104
+ const keysData = await raydiumGetPoolKeys(connection, poolId);
105
+ raydiumV4Keys = keysData.poolKeys;
106
+ }
107
+ else if (exchangeName === 'Raydium CPMM') {
108
+ const poolData = await raydiumGetCpmmPoolInfo(connection, poolId);
109
+ ammReverseInfo = {
110
+ mintA: '',
111
+ mintB: '',
112
+ poolBaseTokenInfo: poolData.poolBaseTokenInfo,
113
+ poolQuoteTokenInfo: poolData.poolQuoteTokenInfo,
114
+ };
115
+ const keysData = await raydiumGetCpmmKeys(connection, poolId);
116
+ raydiumCpmmKeys = keysData.poolKeys;
117
+ }
118
+ else if (exchangeName === 'LaunchLab') {
119
+ launchlabReverseInfo = await getLaunchlabReverseInfo({ connection, poolId });
120
+ }
121
+ else if (exchangeName === 'Meteora') {
122
+ // Bug 4 fix: 添加 Meteora DLMM 深度数据获取
123
+ const dlmmInfo = await getDLMMPoolInfo({ connection, poolId });
124
+ meteoraDLMMReverseInfo = {
125
+ mintA: dlmmInfo.token_x_mint,
126
+ mintB: dlmmInfo.token_y_mint,
127
+ reserveX: dlmmInfo.reserve_x,
128
+ reserveY: dlmmInfo.reserve_y,
129
+ oracle: dlmmInfo.oracle,
130
+ binStep: dlmmInfo.bin_step,
131
+ activeId: dlmmInfo.active_id,
132
+ };
133
+ }
134
+ }
135
+ catch (e) {
136
+ console.error(`获取 ${exchangeName} 深度数据失败:`, e.message);
137
+ }
138
+ // 获取代币价格 -- 通过 DataSource -> CodexAdapter
139
+ let priceInSol = '0';
140
+ let priceUsd = 0;
141
+ try {
142
+ const priceData = await ds.getTokenPrice(tokenCA);
143
+ priceInSol = String(priceData.priceSol);
144
+ priceUsd = priceData.priceUsd;
145
+ }
146
+ catch {
147
+ // 价格获取失败不阻塞交易
148
+ }
149
+ return {
150
+ connection,
151
+ tokenAddress: tokenCA,
152
+ exchangeName,
153
+ poolId,
154
+ poolInfo,
155
+ decimals,
156
+ priceInSol,
157
+ priceUsd,
158
+ creatorAddress,
159
+ pumpfunReverseInfo,
160
+ ammReverseInfo,
161
+ launchlabReverseInfo,
162
+ meteoraDLMMReverseInfo,
163
+ raydiumV4Keys,
164
+ raydiumCpmmKeys,
165
+ commissionWallet: config.feeConfig.tip_address,
166
+ commissionAmount: String(config.feeConfig.trade_fee),
167
+ };
168
+ }
169
+ // ============================================================
170
+ // 交易执行
171
+ // ============================================================
172
+ /**
173
+ * 执行批量买入/卖出交易
174
+ */
175
+ export async function executeTrades(params) {
176
+ const { context, wallets, tradeType, amountPerWallet, slippage, priorityFee, simulate } = params;
177
+ try {
178
+ // 构建 walletAmounts
179
+ const walletAmounts = wallets.map((w, i) => ({
180
+ privateKey: w.privateKey,
181
+ amount: Array.isArray(amountPerWallet)
182
+ ? amountPerWallet[i]
183
+ : amountPerWallet,
184
+ }));
185
+ // 映射 volumeType
186
+ const volumeTypeMap = {
187
+ '1b1s': 'one_buy_one_sell',
188
+ '1b2s': 'one_buy_two_sell',
189
+ '1b3s': 'one_buy_three_sell',
190
+ '2b1s': 'two_buy_one_sell',
191
+ '3b1s': 'three_buy_one_sell',
192
+ };
193
+ const volumeType = params.volumeType
194
+ ? (volumeTypeMap[params.volumeType] || params.volumeType)
195
+ : VolumeType.ONE_BUY_ONE_SELL;
196
+ // Bug 3 fix: 为 Pump/LaunchLab 的 sniperBuy 直接调用子函数传入 snipers 参数
197
+ // 因为顶层 batchTrade 不接受 snipers 参数,而 Pump/LaunchLab 的 sniperBuy 分支要求它
198
+ let base64Txs;
199
+ if (tradeType === 'sniperBuy' && (context.exchangeName === 'Pump' || context.exchangeName === 'LaunchLab')) {
200
+ const snipers = walletAmounts.map(wa => ({
201
+ wallet: wa.privateKey,
202
+ amount: wa.amount,
203
+ }));
204
+ // 需要预处理 slippage(batchTrade 内部会 / 100,这里也要做)
205
+ const adjustedSlippage = slippage / 100;
206
+ if (context.exchangeName === 'Pump') {
207
+ base64Txs = await pumpBatchTrade({
208
+ connection: context.connection,
209
+ walletAmounts,
210
+ snipers,
211
+ tokenAddress: context.tokenAddress,
212
+ poolId: context.poolId,
213
+ tradeType: 'sniperBuy',
214
+ slippage: adjustedSlippage,
215
+ priorityFee,
216
+ priceInSol: context.priceInSol,
217
+ initialPoolData: context.pumpfunReverseInfo,
218
+ commissionWallet: context.commissionWallet,
219
+ commissionAmount: context.commissionAmount,
220
+ creator: new PublicKey(context.creatorAddress),
221
+ volumeType: volumeType,
222
+ simulate: simulate || false,
223
+ });
224
+ }
225
+ else {
226
+ base64Txs = await launchlabBatchTrade({
227
+ connection: context.connection,
228
+ walletAmounts,
229
+ snipers,
230
+ tokenAddress: context.tokenAddress,
231
+ poolId: context.poolId,
232
+ tradeType: 'sniperBuy',
233
+ slippage: adjustedSlippage,
234
+ priorityFee,
235
+ decimals: context.decimals,
236
+ reverseInfo: context.launchlabReverseInfo,
237
+ commissionWallet: context.commissionWallet,
238
+ commissionAmount: context.commissionAmount,
239
+ creator: new PublicKey(context.creatorAddress),
240
+ volumeType: volumeType,
241
+ simulate: simulate || false,
242
+ });
243
+ }
244
+ }
245
+ else {
246
+ // 其他 DEX / 交易类型走标准 batchTrade 路径
247
+ base64Txs = await batchTrade({
248
+ connection: context.connection,
249
+ exchangeName: context.exchangeName,
250
+ tokenAddress: context.tokenAddress,
251
+ poolId: context.poolId,
252
+ tradeType,
253
+ slippage,
254
+ priorityFee,
255
+ priceInSol: context.priceInSol,
256
+ decimals: context.decimals,
257
+ poolInfo: context.poolInfo,
258
+ ammReverseInfo: context.ammReverseInfo,
259
+ pumpfunReverseInfo: context.pumpfunReverseInfo,
260
+ launchlabReverseInfo: context.launchlabReverseInfo,
261
+ meteoraDLMMReverseInfo: context.meteoraDLMMReverseInfo,
262
+ commissionWallet: context.commissionWallet,
263
+ commissionAmount: context.commissionAmount,
264
+ creatorAddress: context.creatorAddress,
265
+ walletAmounts,
266
+ raydiumV4Keys: context.raydiumV4Keys,
267
+ raydiumCpmmKeys: context.raydiumCpmmKeys,
268
+ volumeType: volumeType,
269
+ simulate: simulate || false,
270
+ });
271
+ }
272
+ if (!base64Txs || base64Txs.length === 0) {
273
+ return { success: false, error: '交易构建失败,未生成有效交易' };
274
+ }
275
+ if (simulate) {
276
+ return {
277
+ success: true,
278
+ details: {
279
+ simulate: true,
280
+ transactionCount: base64Txs.length,
281
+ message: '模拟成功,交易可行',
282
+ },
283
+ };
284
+ }
285
+ // 发送交易 -- 通过 DataSource -> JitoAdapter (3.0h 迁移)
286
+ const ds = getDataSource();
287
+ try {
288
+ const bundleResult = await ds.sendBundle(base64Txs);
289
+ if (bundleResult?.bundleId) {
290
+ // 等待确认 -- 通过 DataSource -> JitoAdapter
291
+ const confirmResult = await ds.waitForBundleConfirmation(bundleResult.bundleId, {
292
+ timeoutMs: 20000,
293
+ });
294
+ return {
295
+ success: confirmResult.success,
296
+ bundleId: bundleResult.bundleId,
297
+ txHashes: confirmResult.transactions,
298
+ error: confirmResult.success ? undefined : `Bundle 执行失败: ${confirmResult.status}`,
299
+ details: confirmResult,
300
+ };
301
+ }
302
+ }
303
+ catch (bundleError) {
304
+ // Bundle 发送失败,返回错误
305
+ return {
306
+ success: false,
307
+ error: `Bundle 发送失败: ${bundleError.message}`,
308
+ details: bundleError,
309
+ };
310
+ }
311
+ return {
312
+ success: false,
313
+ error: '交易发送失败:未获取到有效的 Bundle ID',
314
+ };
315
+ }
316
+ catch (e) {
317
+ return {
318
+ success: false,
319
+ error: e.message || '交易执行失败',
320
+ details: e,
321
+ };
322
+ }
323
+ }
324
+ // ============================================================
325
+ // 换手交易执行
326
+ // ============================================================
327
+ /**
328
+ * 执行换手交易
329
+ */
330
+ export async function executeTurnoverTrade(params) {
331
+ const { context, fromWallet, toWallet, tokenAmount, priorityFee, slippage } = params;
332
+ const config = loadConfig();
333
+ return executeSingleTurnover({
334
+ connection: context.connection,
335
+ fromWallet,
336
+ toWallet,
337
+ tokenAddress: context.tokenAddress,
338
+ tokenAmount,
339
+ decimals: context.decimals,
340
+ exchangeName: context.exchangeName,
341
+ poolInfo: context.poolInfo,
342
+ priceInSol: Number(context.priceInSol),
343
+ creatorAddress: context.creatorAddress,
344
+ priorityFee,
345
+ slippage: slippage || 1,
346
+ tipAddress: config.feeConfig.tip_address,
347
+ commissionAmount: config.feeConfig.same_block_shift,
348
+ pumpfunReverseInfo: context.pumpfunReverseInfo,
349
+ ammReverseInfo: context.ammReverseInfo,
350
+ raydiumV4Keys: context.raydiumV4Keys,
351
+ raydiumCpmmKeys: context.raydiumCpmmKeys,
352
+ launchlabReverseInfo: context.launchlabReverseInfo,
353
+ meteoraDLMMReverseInfo: context.meteoraDLMMReverseInfo,
354
+ });
355
+ }
356
+ /**
357
+ * 执行批量换手交易
358
+ */
359
+ export async function executeBatchTurnoverTrade(params) {
360
+ const { context, turnoverItems, priorityFee, slippage, intervalMs } = params;
361
+ const config = loadConfig();
362
+ return executeBatchTurnover({
363
+ connection: context.connection,
364
+ turnoverItems,
365
+ tokenAddress: context.tokenAddress,
366
+ decimals: context.decimals,
367
+ exchangeName: context.exchangeName,
368
+ poolInfo: context.poolInfo,
369
+ priceInSol: Number(context.priceInSol),
370
+ creatorAddress: context.creatorAddress,
371
+ priorityFee,
372
+ slippage: slippage || 1,
373
+ tipAddress: config.feeConfig.tip_address,
374
+ commissionAmount: config.feeConfig.same_block_shift,
375
+ intervalMs: intervalMs || 1000,
376
+ pumpfunReverseInfo: context.pumpfunReverseInfo,
377
+ ammReverseInfo: context.ammReverseInfo,
378
+ raydiumV4Keys: context.raydiumV4Keys,
379
+ raydiumCpmmKeys: context.raydiumCpmmKeys,
380
+ launchlabReverseInfo: context.launchlabReverseInfo,
381
+ meteoraDLMMReverseInfo: context.meteoraDLMMReverseInfo,
382
+ });
383
+ }
384
+ // ============================================================
385
+ // SOL / Token 转账执行
386
+ // ============================================================
387
+ /**
388
+ * 执行 SOL 转账
389
+ */
390
+ export async function executeSOLTransfer(params) {
391
+ const { fromPrivateKey, toAddress, amountSOL, priorityFee } = params;
392
+ const connection = getConnection();
393
+ try {
394
+ const fromKeypair = Keypair.fromSecretKey(bs58.decode(fromPrivateKey));
395
+ const fromAddress = fromKeypair.publicKey.toBase58();
396
+ const toPubkey = new PublicKey(toAddress);
397
+ const lamports = Math.floor(amountSOL * LAMPORTS_PER_SOL);
398
+ // 构建交易
399
+ const tx = new Transaction();
400
+ const { limitIx, priceIx } = getCU(priorityFee);
401
+ tx.add(limitIx);
402
+ tx.add(priceIx);
403
+ tx.add(transferSOLInstruction(fromKeypair.publicKey, toPubkey, lamports));
404
+ // Jito tip
405
+ const jito = new JitoJsonRpcClient();
406
+ tx.add(jito.getTipInstruction(fromKeypair.publicKey, priorityFee));
407
+ const blockhash = (await connection.getLatestBlockhash()).blockhash;
408
+ tx.recentBlockhash = blockhash;
409
+ tx.feePayer = fromKeypair.publicKey;
410
+ tx.sign(fromKeypair);
411
+ const base64Tx = Buffer.from(tx.serialize()).toString('base64');
412
+ // 发送交易 -- 通过 DataSource -> JitoAdapter (3.0h 迁移)
413
+ const ds = getDataSource();
414
+ const bundleResult = await ds.sendBundle([base64Tx]);
415
+ const confirmResult = await ds.waitForBundleConfirmation(bundleResult.bundleId, {
416
+ timeoutMs: 20000,
417
+ });
418
+ return {
419
+ success: confirmResult.success,
420
+ txHash: confirmResult.transactions?.[0] || '',
421
+ from: fromAddress,
422
+ to: toAddress,
423
+ amount: amountSOL,
424
+ token: 'SOL',
425
+ };
426
+ }
427
+ catch (e) {
428
+ return {
429
+ success: false,
430
+ error: e.message,
431
+ from: '',
432
+ to: toAddress,
433
+ amount: amountSOL,
434
+ token: 'SOL',
435
+ };
436
+ }
437
+ }
438
+ /**
439
+ * 批量 SOL 转账(一对多)
440
+ */
441
+ export async function executeBatchSOLTransfer(params) {
442
+ const { fromPrivateKey, targets, priorityFee, batchSize = 20 } = params;
443
+ const results = [];
444
+ for (let i = 0; i < targets.length; i += batchSize) {
445
+ const batch = targets.slice(i, i + batchSize);
446
+ for (const target of batch) {
447
+ const result = await executeSOLTransfer({
448
+ fromPrivateKey,
449
+ toAddress: target.address,
450
+ amountSOL: target.amountSOL,
451
+ priorityFee,
452
+ });
453
+ results.push(result);
454
+ }
455
+ // 批次间等待
456
+ if (i + batchSize < targets.length) {
457
+ await new Promise(resolve => setTimeout(resolve, 500));
458
+ }
459
+ }
460
+ return results;
461
+ }
462
+ /**
463
+ * 批量 SOL 收集(多对一)
464
+ */
465
+ export async function executeCollectSOL(params) {
466
+ const { wallets, toAddress, amountType, fixedAmount, reserveAmount, priorityFee } = params;
467
+ const connection = getConnection();
468
+ const results = [];
469
+ for (const wallet of wallets) {
470
+ try {
471
+ const balance = await connection.getBalance(new PublicKey(wallet.address));
472
+ const balanceSOL = balance / LAMPORTS_PER_SOL;
473
+ let amountSOL;
474
+ if (amountType === 'all') {
475
+ // 保留足够的费用
476
+ amountSOL = Math.max(0, balanceSOL - 0.005 - priorityFee);
477
+ }
478
+ else if (amountType === 'fixed') {
479
+ amountSOL = Math.min(fixedAmount || 0, balanceSOL - 0.005);
480
+ }
481
+ else if (amountType === 'reserve') {
482
+ amountSOL = Math.max(0, balanceSOL - (reserveAmount || 0) - 0.005);
483
+ }
484
+ else {
485
+ amountSOL = 0;
486
+ }
487
+ if (amountSOL <= 0) {
488
+ results.push({
489
+ success: false,
490
+ error: '余额不足',
491
+ from: wallet.address,
492
+ to: toAddress,
493
+ amount: 0,
494
+ token: 'SOL',
495
+ });
496
+ continue;
497
+ }
498
+ const result = await executeSOLTransfer({
499
+ fromPrivateKey: wallet.privateKey,
500
+ toAddress,
501
+ amountSOL,
502
+ priorityFee,
503
+ });
504
+ results.push(result);
505
+ }
506
+ catch (e) {
507
+ results.push({
508
+ success: false,
509
+ error: e.message,
510
+ from: wallet.address,
511
+ to: toAddress,
512
+ amount: 0,
513
+ token: 'SOL',
514
+ });
515
+ }
516
+ }
517
+ return results;
518
+ }
519
+ // ============================================================
520
+ // 余额查询
521
+ // ============================================================
522
+ /**
523
+ * 获取钱包 SOL 余额
524
+ */
525
+ export async function getSOLBalance(address) {
526
+ const connection = getConnection();
527
+ return getNativeBalance(connection, address);
528
+ }
529
+ /**
530
+ * 获取钱包代币余额
531
+ */
532
+ export async function getTokenBalance(address, tokenMint) {
533
+ const connection = getConnection();
534
+ return getTokenAccountBalance(connection, tokenMint, address);
535
+ }
536
+ // ============================================================
537
+ // 辅助函数
538
+ // ============================================================
539
+ /**
540
+ * 从钱包组构建钱包列表
541
+ */
542
+ export function buildWalletList(group) {
543
+ return group.wallets.map(w => ({
544
+ privateKey: getDecryptedPrivateKey(w),
545
+ address: w.walletAddress,
546
+ }));
547
+ }
548
+ /**
549
+ * 等待指定毫秒
550
+ */
551
+ export function sleep(ms) {
552
+ return new Promise(resolve => setTimeout(resolve, ms));
553
+ }
554
+ //# sourceMappingURL=sdk-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-adapter.js","sourceRoot":"","sources":["../../../src/adapters/sdk-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 配置管理命令组
3
+ *
4
+ * forgex config init | set | get | list
5
+ */
6
+ import { Command } from 'commander';
7
+ export declare function registerConfigCommands(program: Command): void;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+E7D"}