solana-meme-sdk 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 (318) hide show
  1. package/README.md +160 -0
  2. package/dist/batch-executor/accounts.d.ts +141 -0
  3. package/dist/batch-executor/accounts.d.ts.map +1 -0
  4. package/dist/batch-executor/accounts.js +98 -0
  5. package/dist/batch-executor/accounts.js.map +1 -0
  6. package/dist/batch-executor/batch-executor.d.ts +27 -0
  7. package/dist/batch-executor/batch-executor.d.ts.map +1 -0
  8. package/dist/batch-executor/batch-executor.js +286 -0
  9. package/dist/batch-executor/batch-executor.js.map +1 -0
  10. package/dist/batch-executor/index.d.ts +4 -0
  11. package/dist/batch-executor/index.d.ts.map +1 -0
  12. package/dist/batch-executor/index.js +6 -0
  13. package/dist/batch-executor/index.js.map +1 -0
  14. package/dist/batch-executor/types.d.ts +87 -0
  15. package/dist/batch-executor/types.d.ts.map +1 -0
  16. package/dist/batch-executor/types.js +42 -0
  17. package/dist/batch-executor/types.js.map +1 -0
  18. package/dist/constants.d.ts +151 -0
  19. package/dist/constants.d.ts.map +1 -0
  20. package/dist/constants.js +189 -0
  21. package/dist/constants.js.map +1 -0
  22. package/dist/dex/blockrazor/client.d.ts +52 -0
  23. package/dist/dex/blockrazor/client.d.ts.map +1 -0
  24. package/dist/dex/blockrazor/client.js +97 -0
  25. package/dist/dex/blockrazor/client.js.map +1 -0
  26. package/dist/dex/blockrazor/constants.d.ts +35 -0
  27. package/dist/dex/blockrazor/constants.d.ts.map +1 -0
  28. package/dist/dex/blockrazor/constants.js +56 -0
  29. package/dist/dex/blockrazor/constants.js.map +1 -0
  30. package/dist/dex/blockrazor/geyser.d.ts +129 -0
  31. package/dist/dex/blockrazor/geyser.d.ts.map +1 -0
  32. package/dist/dex/blockrazor/geyser.js +531 -0
  33. package/dist/dex/blockrazor/geyser.js.map +1 -0
  34. package/dist/dex/blockrazor/index.d.ts +19 -0
  35. package/dist/dex/blockrazor/index.d.ts.map +1 -0
  36. package/dist/dex/blockrazor/index.js +24 -0
  37. package/dist/dex/blockrazor/index.js.map +1 -0
  38. package/dist/dex/blockrazor/send.d.ts +136 -0
  39. package/dist/dex/blockrazor/send.d.ts.map +1 -0
  40. package/dist/dex/blockrazor/send.js +255 -0
  41. package/dist/dex/blockrazor/send.js.map +1 -0
  42. package/dist/dex/blockrazor/types.d.ts +192 -0
  43. package/dist/dex/blockrazor/types.d.ts.map +1 -0
  44. package/dist/dex/blockrazor/types.js +6 -0
  45. package/dist/dex/blockrazor/types.js.map +1 -0
  46. package/dist/dex/index.d.ts +11 -0
  47. package/dist/dex/index.d.ts.map +1 -0
  48. package/dist/dex/index.js +17 -0
  49. package/dist/dex/index.js.map +1 -0
  50. package/dist/dex/jup/client.d.ts +34 -0
  51. package/dist/dex/jup/client.d.ts.map +1 -0
  52. package/dist/dex/jup/client.js +111 -0
  53. package/dist/dex/jup/client.js.map +1 -0
  54. package/dist/dex/jup/index.d.ts +17 -0
  55. package/dist/dex/jup/index.d.ts.map +1 -0
  56. package/dist/dex/jup/index.js +149 -0
  57. package/dist/dex/jup/index.js.map +1 -0
  58. package/dist/dex/jup/legacy.d.ts +624 -0
  59. package/dist/dex/jup/legacy.d.ts.map +1 -0
  60. package/dist/dex/jup/legacy.js +417 -0
  61. package/dist/dex/jup/legacy.js.map +1 -0
  62. package/dist/dex/jup/lend.d.ts +641 -0
  63. package/dist/dex/jup/lend.d.ts.map +1 -0
  64. package/dist/dex/jup/lend.js +604 -0
  65. package/dist/dex/jup/lend.js.map +1 -0
  66. package/dist/dex/jup/portfolio.d.ts +363 -0
  67. package/dist/dex/jup/portfolio.d.ts.map +1 -0
  68. package/dist/dex/jup/portfolio.js +368 -0
  69. package/dist/dex/jup/portfolio.js.map +1 -0
  70. package/dist/dex/jup/price.d.ts +174 -0
  71. package/dist/dex/jup/price.d.ts.map +1 -0
  72. package/dist/dex/jup/price.js +226 -0
  73. package/dist/dex/jup/price.js.map +1 -0
  74. package/dist/dex/jup/recurring.d.ts +438 -0
  75. package/dist/dex/jup/recurring.d.ts.map +1 -0
  76. package/dist/dex/jup/recurring.js +321 -0
  77. package/dist/dex/jup/recurring.js.map +1 -0
  78. package/dist/dex/jup/send.d.ts +283 -0
  79. package/dist/dex/jup/send.d.ts.map +1 -0
  80. package/dist/dex/jup/send.js +296 -0
  81. package/dist/dex/jup/send.js.map +1 -0
  82. package/dist/dex/jup/studio.d.ts +458 -0
  83. package/dist/dex/jup/studio.d.ts.map +1 -0
  84. package/dist/dex/jup/studio.js +489 -0
  85. package/dist/dex/jup/studio.js.map +1 -0
  86. package/dist/dex/jup/tokens.d.ts +768 -0
  87. package/dist/dex/jup/tokens.d.ts.map +1 -0
  88. package/dist/dex/jup/tokens.js +698 -0
  89. package/dist/dex/jup/tokens.js.map +1 -0
  90. package/dist/dex/jup/trigger.d.ts +512 -0
  91. package/dist/dex/jup/trigger.d.ts.map +1 -0
  92. package/dist/dex/jup/trigger.js +398 -0
  93. package/dist/dex/jup/trigger.js.map +1 -0
  94. package/dist/dex/jup/types.d.ts +434 -0
  95. package/dist/dex/jup/types.d.ts.map +1 -0
  96. package/dist/dex/jup/types.js +6 -0
  97. package/dist/dex/jup/types.js.map +1 -0
  98. package/dist/dex/jup/ultra.d.ts +647 -0
  99. package/dist/dex/jup/ultra.d.ts.map +1 -0
  100. package/dist/dex/jup/ultra.js +854 -0
  101. package/dist/dex/jup/ultra.js.map +1 -0
  102. package/dist/dex/meteora/client.d.ts +77 -0
  103. package/dist/dex/meteora/client.d.ts.map +1 -0
  104. package/dist/dex/meteora/client.js +220 -0
  105. package/dist/dex/meteora/client.js.map +1 -0
  106. package/dist/dex/meteora/damm-v1-bundle.d.ts +62 -0
  107. package/dist/dex/meteora/damm-v1-bundle.d.ts.map +1 -0
  108. package/dist/dex/meteora/damm-v1-bundle.js +113 -0
  109. package/dist/dex/meteora/damm-v1-bundle.js.map +1 -0
  110. package/dist/dex/meteora/damm-v1.d.ts +119 -0
  111. package/dist/dex/meteora/damm-v1.d.ts.map +1 -0
  112. package/dist/dex/meteora/damm-v1.js +316 -0
  113. package/dist/dex/meteora/damm-v1.js.map +1 -0
  114. package/dist/dex/meteora/damm-v2-bundle.d.ts +83 -0
  115. package/dist/dex/meteora/damm-v2-bundle.d.ts.map +1 -0
  116. package/dist/dex/meteora/damm-v2-bundle.js +243 -0
  117. package/dist/dex/meteora/damm-v2-bundle.js.map +1 -0
  118. package/dist/dex/meteora/damm-v2.d.ts +173 -0
  119. package/dist/dex/meteora/damm-v2.d.ts.map +1 -0
  120. package/dist/dex/meteora/damm-v2.js +633 -0
  121. package/dist/dex/meteora/damm-v2.js.map +1 -0
  122. package/dist/dex/meteora/dbc-bundle.d.ts +124 -0
  123. package/dist/dex/meteora/dbc-bundle.d.ts.map +1 -0
  124. package/dist/dex/meteora/dbc-bundle.js +305 -0
  125. package/dist/dex/meteora/dbc-bundle.js.map +1 -0
  126. package/dist/dex/meteora/dbc.d.ts +193 -0
  127. package/dist/dex/meteora/dbc.d.ts.map +1 -0
  128. package/dist/dex/meteora/dbc.js +620 -0
  129. package/dist/dex/meteora/dbc.js.map +1 -0
  130. package/dist/dex/meteora/dlmm-bundle.d.ts +40 -0
  131. package/dist/dex/meteora/dlmm-bundle.d.ts.map +1 -0
  132. package/dist/dex/meteora/dlmm-bundle.js +190 -0
  133. package/dist/dex/meteora/dlmm-bundle.js.map +1 -0
  134. package/dist/dex/meteora/dlmm.d.ts +158 -0
  135. package/dist/dex/meteora/dlmm.d.ts.map +1 -0
  136. package/dist/dex/meteora/dlmm.js +672 -0
  137. package/dist/dex/meteora/dlmm.js.map +1 -0
  138. package/dist/dex/meteora/index.d.ts +26 -0
  139. package/dist/dex/meteora/index.d.ts.map +1 -0
  140. package/dist/dex/meteora/index.js +66 -0
  141. package/dist/dex/meteora/index.js.map +1 -0
  142. package/dist/dex/meteora/types.d.ts +788 -0
  143. package/dist/dex/meteora/types.d.ts.map +1 -0
  144. package/dist/dex/meteora/types.js +111 -0
  145. package/dist/dex/meteora/types.js.map +1 -0
  146. package/dist/dex/orca/index.d.ts +11 -0
  147. package/dist/dex/orca/index.d.ts.map +1 -0
  148. package/dist/dex/orca/index.js +17 -0
  149. package/dist/dex/orca/index.js.map +1 -0
  150. package/dist/dex/orca/orca-bundle.d.ts +42 -0
  151. package/dist/dex/orca/orca-bundle.d.ts.map +1 -0
  152. package/dist/dex/orca/orca-bundle.js +174 -0
  153. package/dist/dex/orca/orca-bundle.js.map +1 -0
  154. package/dist/dex/orca/orca.d.ts +66 -0
  155. package/dist/dex/orca/orca.d.ts.map +1 -0
  156. package/dist/dex/orca/orca.js +475 -0
  157. package/dist/dex/orca/orca.js.map +1 -0
  158. package/dist/dex/orca/types.d.ts +264 -0
  159. package/dist/dex/orca/types.d.ts.map +1 -0
  160. package/dist/dex/orca/types.js +39 -0
  161. package/dist/dex/orca/types.js.map +1 -0
  162. package/dist/dex/orca/wavebreak-bundle.d.ts +35 -0
  163. package/dist/dex/orca/wavebreak-bundle.d.ts.map +1 -0
  164. package/dist/dex/orca/wavebreak-bundle.js +199 -0
  165. package/dist/dex/orca/wavebreak-bundle.js.map +1 -0
  166. package/dist/dex/orca/wavebreak-types.d.ts +228 -0
  167. package/dist/dex/orca/wavebreak-types.d.ts.map +1 -0
  168. package/dist/dex/orca/wavebreak-types.js +24 -0
  169. package/dist/dex/orca/wavebreak-types.js.map +1 -0
  170. package/dist/dex/orca/wavebreak.d.ts +79 -0
  171. package/dist/dex/orca/wavebreak.d.ts.map +1 -0
  172. package/dist/dex/orca/wavebreak.js +498 -0
  173. package/dist/dex/orca/wavebreak.js.map +1 -0
  174. package/dist/dex/pump/index.d.ts +10 -0
  175. package/dist/dex/pump/index.d.ts.map +1 -0
  176. package/dist/dex/pump/index.js +15 -0
  177. package/dist/dex/pump/index.js.map +1 -0
  178. package/dist/dex/pump/pump-bundle.d.ts +93 -0
  179. package/dist/dex/pump/pump-bundle.d.ts.map +1 -0
  180. package/dist/dex/pump/pump-bundle.js +384 -0
  181. package/dist/dex/pump/pump-bundle.js.map +1 -0
  182. package/dist/dex/pump/pump-swap-bundle.d.ts +104 -0
  183. package/dist/dex/pump/pump-swap-bundle.d.ts.map +1 -0
  184. package/dist/dex/pump/pump-swap-bundle.js +381 -0
  185. package/dist/dex/pump/pump-swap-bundle.js.map +1 -0
  186. package/dist/dex/pump/pump-swap.d.ts +47 -0
  187. package/dist/dex/pump/pump-swap.d.ts.map +1 -0
  188. package/dist/dex/pump/pump-swap.js +200 -0
  189. package/dist/dex/pump/pump-swap.js.map +1 -0
  190. package/dist/dex/pump/pump.d.ts +36 -0
  191. package/dist/dex/pump/pump.d.ts.map +1 -0
  192. package/dist/dex/pump/pump.js +353 -0
  193. package/dist/dex/pump/pump.js.map +1 -0
  194. package/dist/dex/pump/types.d.ts +216 -0
  195. package/dist/dex/pump/types.d.ts.map +1 -0
  196. package/dist/dex/pump/types.js +6 -0
  197. package/dist/dex/pump/types.js.map +1 -0
  198. package/dist/dex/raydium/index.d.ts +9 -0
  199. package/dist/dex/raydium/index.d.ts.map +1 -0
  200. package/dist/dex/raydium/index.js +13 -0
  201. package/dist/dex/raydium/index.js.map +1 -0
  202. package/dist/dex/raydium/launchlab.d.ts +69 -0
  203. package/dist/dex/raydium/launchlab.d.ts.map +1 -0
  204. package/dist/dex/raydium/launchlab.js +211 -0
  205. package/dist/dex/raydium/launchlab.js.map +1 -0
  206. package/dist/dex/raydium/raydium-bundle.d.ts +65 -0
  207. package/dist/dex/raydium/raydium-bundle.d.ts.map +1 -0
  208. package/dist/dex/raydium/raydium-bundle.js +325 -0
  209. package/dist/dex/raydium/raydium-bundle.js.map +1 -0
  210. package/dist/dex/raydium/raydium.d.ts +41 -0
  211. package/dist/dex/raydium/raydium.d.ts.map +1 -0
  212. package/dist/dex/raydium/raydium.js +367 -0
  213. package/dist/dex/raydium/raydium.js.map +1 -0
  214. package/dist/dex/raydium/types.d.ts +241 -0
  215. package/dist/dex/raydium/types.d.ts.map +1 -0
  216. package/dist/dex/raydium/types.js +6 -0
  217. package/dist/dex/raydium/types.js.map +1 -0
  218. package/dist/index.d.ts +13 -0
  219. package/dist/index.d.ts.map +1 -0
  220. package/dist/index.js +21 -0
  221. package/dist/index.js.map +1 -0
  222. package/dist/jito/bundle.d.ts +91 -0
  223. package/dist/jito/bundle.d.ts.map +1 -0
  224. package/dist/jito/bundle.js +267 -0
  225. package/dist/jito/bundle.js.map +1 -0
  226. package/dist/jito/index.d.ts +8 -0
  227. package/dist/jito/index.d.ts.map +1 -0
  228. package/dist/jito/index.js +8 -0
  229. package/dist/jito/index.js.map +1 -0
  230. package/dist/jito/tip.d.ts +52 -0
  231. package/dist/jito/tip.d.ts.map +1 -0
  232. package/dist/jito/tip.js +84 -0
  233. package/dist/jito/tip.js.map +1 -0
  234. package/dist/jito/types.d.ts +101 -0
  235. package/dist/jito/types.d.ts.map +1 -0
  236. package/dist/jito/types.js +6 -0
  237. package/dist/jito/types.js.map +1 -0
  238. package/dist/nozomi/client.d.ts +64 -0
  239. package/dist/nozomi/client.d.ts.map +1 -0
  240. package/dist/nozomi/client.js +228 -0
  241. package/dist/nozomi/client.js.map +1 -0
  242. package/dist/nozomi/index.d.ts +9 -0
  243. package/dist/nozomi/index.d.ts.map +1 -0
  244. package/dist/nozomi/index.js +9 -0
  245. package/dist/nozomi/index.js.map +1 -0
  246. package/dist/nozomi/tip.d.ts +51 -0
  247. package/dist/nozomi/tip.d.ts.map +1 -0
  248. package/dist/nozomi/tip.js +81 -0
  249. package/dist/nozomi/tip.js.map +1 -0
  250. package/dist/nozomi/types.d.ts +97 -0
  251. package/dist/nozomi/types.d.ts.map +1 -0
  252. package/dist/nozomi/types.js +6 -0
  253. package/dist/nozomi/types.js.map +1 -0
  254. package/dist/token/create-complete.d.ts +116 -0
  255. package/dist/token/create-complete.d.ts.map +1 -0
  256. package/dist/token/create-complete.js +236 -0
  257. package/dist/token/create-complete.js.map +1 -0
  258. package/dist/token/create-token.d.ts +58 -0
  259. package/dist/token/create-token.d.ts.map +1 -0
  260. package/dist/token/create-token.js +231 -0
  261. package/dist/token/create-token.js.map +1 -0
  262. package/dist/token/index.d.ts +10 -0
  263. package/dist/token/index.d.ts.map +1 -0
  264. package/dist/token/index.js +15 -0
  265. package/dist/token/index.js.map +1 -0
  266. package/dist/token/metadata-upload.d.ts +87 -0
  267. package/dist/token/metadata-upload.d.ts.map +1 -0
  268. package/dist/token/metadata-upload.js +176 -0
  269. package/dist/token/metadata-upload.js.map +1 -0
  270. package/dist/token/metadata.d.ts +93 -0
  271. package/dist/token/metadata.d.ts.map +1 -0
  272. package/dist/token/metadata.js +275 -0
  273. package/dist/token/metadata.js.map +1 -0
  274. package/dist/token/types.d.ts +154 -0
  275. package/dist/token/types.d.ts.map +1 -0
  276. package/dist/token/types.js +6 -0
  277. package/dist/token/types.js.map +1 -0
  278. package/dist/types.d.ts +177 -0
  279. package/dist/types.d.ts.map +1 -0
  280. package/dist/types.js +8 -0
  281. package/dist/types.js.map +1 -0
  282. package/dist/utils/alt.d.ts +58 -0
  283. package/dist/utils/alt.d.ts.map +1 -0
  284. package/dist/utils/alt.js +125 -0
  285. package/dist/utils/alt.js.map +1 -0
  286. package/dist/utils/balance.d.ts +161 -0
  287. package/dist/utils/balance.d.ts.map +1 -0
  288. package/dist/utils/balance.js +639 -0
  289. package/dist/utils/balance.js.map +1 -0
  290. package/dist/utils/batch-swap.d.ts +52 -0
  291. package/dist/utils/batch-swap.d.ts.map +1 -0
  292. package/dist/utils/batch-swap.js +286 -0
  293. package/dist/utils/batch-swap.js.map +1 -0
  294. package/dist/utils/batch-types.d.ts +90 -0
  295. package/dist/utils/batch-types.d.ts.map +1 -0
  296. package/dist/utils/batch-types.js +7 -0
  297. package/dist/utils/batch-types.js.map +1 -0
  298. package/dist/utils/connection.d.ts +79 -0
  299. package/dist/utils/connection.d.ts.map +1 -0
  300. package/dist/utils/connection.js +169 -0
  301. package/dist/utils/connection.js.map +1 -0
  302. package/dist/utils/index.d.ts +13 -0
  303. package/dist/utils/index.d.ts.map +1 -0
  304. package/dist/utils/index.js +14 -0
  305. package/dist/utils/index.js.map +1 -0
  306. package/dist/utils/lp-inspect.d.ts +81 -0
  307. package/dist/utils/lp-inspect.d.ts.map +1 -0
  308. package/dist/utils/lp-inspect.js +265 -0
  309. package/dist/utils/lp-inspect.js.map +1 -0
  310. package/dist/utils/transfer.d.ts +197 -0
  311. package/dist/utils/transfer.d.ts.map +1 -0
  312. package/dist/utils/transfer.js +308 -0
  313. package/dist/utils/transfer.js.map +1 -0
  314. package/dist/utils/wallet.d.ts +108 -0
  315. package/dist/utils/wallet.d.ts.map +1 -0
  316. package/dist/utils/wallet.js +211 -0
  317. package/dist/utils/wallet.js.map +1 -0
  318. package/package.json +92 -0
@@ -0,0 +1,286 @@
1
+ import { PublicKey, TransactionInstruction, TransactionMessage, VersionedTransaction, } from '@solana/web3.js';
2
+ import { getAssociatedTokenAddressSync } from '@solana/spl-token';
3
+ import { BATCH_EXECUTOR_PROGRAM_ID, serializeSwapInputs, } from './types.js';
4
+ import { getPumpBuyAccounts, getPumpSellAccounts, buildRemainingAccounts, } from './accounts.js';
5
+ // ==================== Anchor Discriminator ====================
6
+ /**
7
+ * 计算 Anchor 指令的 discriminator
8
+ * SHA256("global:<instruction_name>")[0..8]
9
+ */
10
+ async function getDiscriminator(instructionName) {
11
+ const data = `global:${instructionName}`;
12
+ const encoder = new TextEncoder();
13
+ const hashBuffer = await crypto.subtle.digest('SHA-256', encoder.encode(data));
14
+ return Buffer.from(new Uint8Array(hashBuffer).slice(0, 8));
15
+ }
16
+ // ==================== BatchExecutor Class ====================
17
+ export class BatchExecutor {
18
+ connection;
19
+ payer;
20
+ constructor(connection, payer) {
21
+ this.connection = connection;
22
+ this.payer = payer;
23
+ }
24
+ async createVersionedTx(instructions, signers) {
25
+ const { blockhash } = await this.connection.getLatestBlockhash('confirmed');
26
+ const message = new TransactionMessage({
27
+ payerKey: this.payer.publicKey,
28
+ recentBlockhash: blockhash,
29
+ instructions,
30
+ }).compileToV0Message();
31
+ const tx = new VersionedTransaction(message);
32
+ tx.sign(signers);
33
+ return tx;
34
+ }
35
+ buildSwapInputs(wallets) {
36
+ return wallets.map((w, i) => ({
37
+ walletIndex: i,
38
+ amount: w.amount,
39
+ minAmountOut: w.minAmountOut,
40
+ }));
41
+ }
42
+ // ==================== Pump.fun Bonding Curve ====================
43
+ async buildBatchPumpBuyTx(params) {
44
+ const { tokenMint, wallets } = params;
45
+ const accounts = getPumpBuyAccounts(tokenMint);
46
+ const swapInputs = this.buildSwapInputs(wallets);
47
+ const discriminator = await getDiscriminator('batch_pump_buy');
48
+ const data = Buffer.concat([discriminator, tokenMint.toBuffer(), serializeSwapInputs(swapInputs)]);
49
+ const keys = [
50
+ { pubkey: accounts.pumpGlobal, isSigner: false, isWritable: false },
51
+ { pubkey: accounts.pumpFeeRecipient, isSigner: false, isWritable: true },
52
+ { pubkey: accounts.tokenMint, isSigner: false, isWritable: false },
53
+ { pubkey: accounts.bondingCurve, isSigner: false, isWritable: true },
54
+ { pubkey: accounts.bondingCurveTokenAccount, isSigner: false, isWritable: true },
55
+ { pubkey: accounts.pumpProgram, isSigner: false, isWritable: false },
56
+ { pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
57
+ { pubkey: accounts.systemProgram, isSigner: false, isWritable: false },
58
+ { pubkey: accounts.associatedTokenProgram, isSigner: false, isWritable: false },
59
+ { pubkey: accounts.rent, isSigner: false, isWritable: false },
60
+ { pubkey: accounts.eventAuthority, isSigner: false, isWritable: false },
61
+ ];
62
+ const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), tokenMint, null, 2);
63
+ keys.push(...remainingAccounts);
64
+ return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
65
+ }
66
+ async buildBatchPumpSellTx(params) {
67
+ const { tokenMint, wallets } = params;
68
+ const accounts = getPumpSellAccounts(tokenMint);
69
+ const swapInputs = this.buildSwapInputs(wallets);
70
+ const discriminator = await getDiscriminator('batch_pump_sell');
71
+ const data = Buffer.concat([discriminator, tokenMint.toBuffer(), serializeSwapInputs(swapInputs)]);
72
+ const keys = [
73
+ { pubkey: accounts.pumpGlobal, isSigner: false, isWritable: false },
74
+ { pubkey: accounts.pumpFeeRecipient, isSigner: false, isWritable: true },
75
+ { pubkey: accounts.tokenMint, isSigner: false, isWritable: false },
76
+ { pubkey: accounts.bondingCurve, isSigner: false, isWritable: true },
77
+ { pubkey: accounts.bondingCurveTokenAccount, isSigner: false, isWritable: true },
78
+ { pubkey: accounts.pumpProgram, isSigner: false, isWritable: false },
79
+ { pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
80
+ { pubkey: accounts.eventAuthority, isSigner: false, isWritable: false },
81
+ ];
82
+ const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), tokenMint, null, 2);
83
+ keys.push(...remainingAccounts);
84
+ return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
85
+ }
86
+ // ==================== PumpSwap (AMM) ====================
87
+ async buildBatchPumpSwapBuyTx(params, accounts) {
88
+ const { wallets, tokenMint } = params;
89
+ const swapInputs = this.buildSwapInputs(wallets);
90
+ const discriminator = await getDiscriminator('batch_pump_swap_buy');
91
+ const data = Buffer.concat([discriminator, tokenMint.toBuffer(), serializeSwapInputs(swapInputs)]);
92
+ const keys = [
93
+ { pubkey: accounts.globalConfig, isSigner: false, isWritable: false },
94
+ { pubkey: accounts.feeRecipient, isSigner: false, isWritable: true },
95
+ { pubkey: accounts.pool, isSigner: false, isWritable: true },
96
+ { pubkey: accounts.poolBaseVault, isSigner: false, isWritable: true },
97
+ { pubkey: accounts.poolQuoteVault, isSigner: false, isWritable: true },
98
+ { pubkey: accounts.baseMint, isSigner: false, isWritable: false },
99
+ { pubkey: accounts.quoteMint, isSigner: false, isWritable: false },
100
+ { pubkey: accounts.pumpSwapProgram, isSigner: false, isWritable: false },
101
+ { pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
102
+ { pubkey: accounts.token2022Program, isSigner: false, isWritable: false },
103
+ { pubkey: accounts.systemProgram, isSigner: false, isWritable: false },
104
+ { pubkey: accounts.associatedTokenProgram, isSigner: false, isWritable: false },
105
+ ];
106
+ const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), accounts.baseMint, accounts.quoteMint, 3);
107
+ keys.push(...remainingAccounts);
108
+ return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
109
+ }
110
+ async buildBatchPumpSwapSellTx(params, accounts) {
111
+ const { wallets, tokenMint } = params;
112
+ const swapInputs = this.buildSwapInputs(wallets);
113
+ const discriminator = await getDiscriminator('batch_pump_swap_sell');
114
+ const data = Buffer.concat([discriminator, tokenMint.toBuffer(), serializeSwapInputs(swapInputs)]);
115
+ const keys = [
116
+ { pubkey: accounts.globalConfig, isSigner: false, isWritable: false },
117
+ { pubkey: accounts.feeRecipient, isSigner: false, isWritable: true },
118
+ { pubkey: accounts.pool, isSigner: false, isWritable: true },
119
+ { pubkey: accounts.poolBaseVault, isSigner: false, isWritable: true },
120
+ { pubkey: accounts.poolQuoteVault, isSigner: false, isWritable: true },
121
+ { pubkey: accounts.baseMint, isSigner: false, isWritable: false },
122
+ { pubkey: accounts.quoteMint, isSigner: false, isWritable: false },
123
+ { pubkey: accounts.pumpSwapProgram, isSigner: false, isWritable: false },
124
+ { pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
125
+ { pubkey: accounts.token2022Program, isSigner: false, isWritable: false },
126
+ { pubkey: accounts.systemProgram, isSigner: false, isWritable: false },
127
+ { pubkey: accounts.associatedTokenProgram, isSigner: false, isWritable: false },
128
+ ];
129
+ const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), accounts.quoteMint, accounts.baseMint, 3);
130
+ keys.push(...remainingAccounts);
131
+ return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
132
+ }
133
+ // ==================== Raydium AMM V4 ====================
134
+ async buildBatchRaydiumSwapTx(params, accounts) {
135
+ const { wallets, swapBaseIn } = params;
136
+ const swapInputs = this.buildSwapInputs(wallets);
137
+ const discriminator = await getDiscriminator('batch_raydium_swap');
138
+ const swapBaseInBuf = Buffer.alloc(1);
139
+ swapBaseInBuf.writeUInt8(swapBaseIn ? 1 : 0, 0);
140
+ const data = Buffer.concat([discriminator, serializeSwapInputs(swapInputs), swapBaseInBuf]);
141
+ const keys = [
142
+ { pubkey: accounts.ammId, isSigner: false, isWritable: true },
143
+ { pubkey: accounts.ammAuthority, isSigner: false, isWritable: false },
144
+ { pubkey: accounts.ammOpenOrders, isSigner: false, isWritable: true },
145
+ { pubkey: accounts.ammTargetOrders, isSigner: false, isWritable: true },
146
+ { pubkey: accounts.poolCoinVault, isSigner: false, isWritable: true },
147
+ { pubkey: accounts.poolPcVault, isSigner: false, isWritable: true },
148
+ { pubkey: accounts.serumProgram, isSigner: false, isWritable: false },
149
+ { pubkey: accounts.serumMarket, isSigner: false, isWritable: true },
150
+ { pubkey: accounts.serumBids, isSigner: false, isWritable: true },
151
+ { pubkey: accounts.serumAsks, isSigner: false, isWritable: true },
152
+ { pubkey: accounts.serumEventQueue, isSigner: false, isWritable: true },
153
+ { pubkey: accounts.serumCoinVault, isSigner: false, isWritable: true },
154
+ { pubkey: accounts.serumPcVault, isSigner: false, isWritable: true },
155
+ { pubkey: accounts.serumVaultSigner, isSigner: false, isWritable: false },
156
+ { pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
157
+ { pubkey: accounts.raydiumProgram, isSigner: false, isWritable: false },
158
+ ];
159
+ const sourceMint = swapBaseIn ? accounts.poolCoinVault : accounts.poolPcVault;
160
+ const destMint = swapBaseIn ? accounts.poolPcVault : accounts.poolCoinVault;
161
+ const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), sourceMint, destMint, 3);
162
+ keys.push(...remainingAccounts);
163
+ return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
164
+ }
165
+ // ==================== Meteora DLMM ====================
166
+ async buildBatchMeteoraSwapTx(params, accounts, binArrays) {
167
+ const { wallets, swapForY } = params;
168
+ const swapInputs = this.buildSwapInputs(wallets);
169
+ const discriminator = await getDiscriminator('batch_meteora_swap');
170
+ const swapForYBuf = Buffer.alloc(1);
171
+ swapForYBuf.writeUInt8(swapForY ? 1 : 0, 0);
172
+ const data = Buffer.concat([discriminator, serializeSwapInputs(swapInputs), swapForYBuf]);
173
+ const keys = [
174
+ { pubkey: accounts.lbPair, isSigner: false, isWritable: true },
175
+ { pubkey: accounts.binArrayBitmapExtension || accounts.meteoraProgram, isSigner: false, isWritable: false },
176
+ { pubkey: accounts.reserveX, isSigner: false, isWritable: true },
177
+ { pubkey: accounts.reserveY, isSigner: false, isWritable: true },
178
+ { pubkey: accounts.tokenXMint, isSigner: false, isWritable: false },
179
+ { pubkey: accounts.tokenYMint, isSigner: false, isWritable: false },
180
+ { pubkey: accounts.oracle, isSigner: false, isWritable: true },
181
+ { pubkey: accounts.hostFeeIn || accounts.meteoraProgram, isSigner: false, isWritable: true },
182
+ { pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
183
+ { pubkey: accounts.eventAuthority, isSigner: false, isWritable: false },
184
+ { pubkey: accounts.meteoraProgram, isSigner: false, isWritable: false },
185
+ ];
186
+ const sourceMint = swapForY ? accounts.reserveX : accounts.reserveY; // Should be user token account mint
187
+ const destMint = swapForY ? accounts.reserveY : accounts.reserveX;
188
+ const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), accounts.tokenXMint, // Actually we need to know if we're swapping X for Y
189
+ accounts.tokenYMint, 4, (wallet) => [
190
+ getAssociatedTokenAddressSync(swapForY ? accounts.tokenXMint : accounts.tokenYMint, wallet),
191
+ getAssociatedTokenAddressSync(swapForY ? accounts.tokenYMint : accounts.tokenXMint, wallet),
192
+ binArrays[0] // Simplified
193
+ ]);
194
+ keys.push(...remainingAccounts);
195
+ return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
196
+ }
197
+ // ==================== Orca Whirlpool ====================
198
+ async buildBatchOrcaSwapTx(params, accounts, aToB, sqrtPriceLimit) {
199
+ const { wallets } = params;
200
+ const swapInputs = this.buildSwapInputs(wallets);
201
+ const discriminator = await getDiscriminator('batch_orca_swap');
202
+ const aToBBuf = Buffer.alloc(1);
203
+ aToBBuf.writeUInt8(aToB ? 1 : 0, 0);
204
+ const priceLimitBuf = Buffer.alloc(16); // u128
205
+ priceLimitBuf.writeBigUInt64LE(sqrtPriceLimit & BigInt('0xFFFFFFFFFFFFFFFF'), 0);
206
+ priceLimitBuf.writeBigUInt64LE(sqrtPriceLimit >> BigInt(64), 8);
207
+ const data = Buffer.concat([discriminator, serializeSwapInputs(swapInputs), aToBBuf, priceLimitBuf]);
208
+ const keys = [
209
+ { pubkey: accounts.whirlpool, isSigner: false, isWritable: true },
210
+ { pubkey: accounts.tokenVaultA, isSigner: false, isWritable: true },
211
+ { pubkey: accounts.tokenVaultB, isSigner: false, isWritable: true },
212
+ { pubkey: accounts.tickArray0, isSigner: false, isWritable: true },
213
+ { pubkey: accounts.tickArray1, isSigner: false, isWritable: true },
214
+ { pubkey: accounts.tickArray2, isSigner: false, isWritable: true },
215
+ { pubkey: accounts.oracle, isSigner: false, isWritable: false },
216
+ { pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
217
+ { pubkey: accounts.orcaProgram, isSigner: false, isWritable: false },
218
+ ];
219
+ const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), accounts.tokenVaultA, accounts.tokenVaultB, 3);
220
+ keys.push(...remainingAccounts);
221
+ return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
222
+ }
223
+ // ==================== Raydium LaunchLab ====================
224
+ async buildBatchLaunchLabBuyTx(params, accounts) {
225
+ const { wallets } = params;
226
+ const swapInputs = this.buildSwapInputs(wallets);
227
+ const discriminator = await getDiscriminator('batch_launchlab_buy');
228
+ const data = Buffer.concat([discriminator, serializeSwapInputs(swapInputs)]);
229
+ const keys = [
230
+ { pubkey: accounts.globalConfig, isSigner: false, isWritable: false },
231
+ { pubkey: accounts.feeConfig || accounts.launchlabProgram, isSigner: false, isWritable: false },
232
+ { pubkey: accounts.poolState, isSigner: false, isWritable: true },
233
+ { pubkey: accounts.baseMint, isSigner: false, isWritable: false },
234
+ { pubkey: accounts.quoteMint, isSigner: false, isWritable: false },
235
+ { pubkey: accounts.baseVault, isSigner: false, isWritable: true },
236
+ { pubkey: accounts.quoteVault, isSigner: false, isWritable: true },
237
+ { pubkey: accounts.protocolFeeRecipient, isSigner: false, isWritable: true },
238
+ { pubkey: accounts.tokenProgram, isSigner: false, isWritable: false },
239
+ { pubkey: accounts.token2022Program, isSigner: false, isWritable: false },
240
+ { pubkey: accounts.systemProgram, isSigner: false, isWritable: false },
241
+ { pubkey: accounts.launchlabProgram, isSigner: false, isWritable: false },
242
+ ];
243
+ const remainingAccounts = buildRemainingAccounts(wallets.map(w => w.wallet), accounts.baseMint, accounts.quoteMint, 3);
244
+ keys.push(...remainingAccounts);
245
+ return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
246
+ }
247
+ // ==================== Jupiter Aggregator ====================
248
+ async buildBatchJupiterSwapTx(wallets, jupAccounts) {
249
+ const discriminator = await getDiscriminator('batch_jupiter_swap');
250
+ const buffers = [discriminator];
251
+ const countBuf = Buffer.alloc(4);
252
+ countBuf.writeUInt32LE(wallets.length, 0);
253
+ buffers.push(countBuf);
254
+ for (let i = 0; i < wallets.length; i++) {
255
+ const idxBuf = Buffer.alloc(1);
256
+ idxBuf.writeUInt8(i, 0);
257
+ const lenBuf = Buffer.alloc(4);
258
+ lenBuf.writeUInt32LE(wallets[i].instructionData.length, 0);
259
+ buffers.push(idxBuf, lenBuf, wallets[i].instructionData);
260
+ }
261
+ const data = Buffer.concat(buffers);
262
+ const keys = [
263
+ { pubkey: new PublicKey('JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4'), isSigner: false, isWritable: false },
264
+ ...jupAccounts,
265
+ ];
266
+ return this.createVersionedTx([new TransactionInstruction({ programId: BATCH_EXECUTOR_PROGRAM_ID, keys, data })], [this.payer, ...wallets.map(w => w.wallet)]);
267
+ }
268
+ // ==================== Shortcuts ====================
269
+ async executeBatchPumpBuy(params) {
270
+ return this.sendAndConfirm(await this.buildBatchPumpBuyTx(params));
271
+ }
272
+ async executeBatchPumpSell(params) {
273
+ return this.sendAndConfirm(await this.buildBatchPumpSellTx(params));
274
+ }
275
+ // ==================== Utility Methods ====================
276
+ async sendAndConfirm(tx) {
277
+ const signature = await this.connection.sendTransaction(tx, {
278
+ skipPreflight: false,
279
+ maxRetries: 3,
280
+ });
281
+ await this.connection.confirmTransaction(signature, 'confirmed');
282
+ return signature;
283
+ }
284
+ }
285
+ export default BatchExecutor;
286
+ //# sourceMappingURL=batch-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-executor.js","sourceRoot":"","sources":["../../src/batch-executor/batch-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './accounts.js';
3
+ export { BatchExecutor, default } from './batch-executor.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/batch-executor/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // Batch Executor SDK
2
+ // 用于调用已部署的 Batch Executor Program (7xVAbH6ooYpPyKWDpbggGYo6ngo9yK9tJnauGTofDU3H)
3
+ export * from './types.js';
4
+ export * from './accounts.js';
5
+ export { BatchExecutor, default } from './batch-executor.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/batch-executor/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,iFAAiF;AAEjF,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ export declare const BATCH_EXECUTOR_PROGRAM_ID: PublicKey;
3
+ export declare const BATCH_PUMP_PROGRAM_ID: PublicKey;
4
+ export declare const BATCH_PUMP_SWAP_PROGRAM_ID: PublicKey;
5
+ export declare const BATCH_RAYDIUM_AMM_PROGRAM_ID: PublicKey;
6
+ export declare const BATCH_METEORA_DLMM_PROGRAM_ID: PublicKey;
7
+ export declare const BATCH_ORCA_WHIRLPOOL_PROGRAM_ID: PublicKey;
8
+ export declare const BATCH_JUPITER_PROGRAM_ID: PublicKey;
9
+ export declare const BATCH_RAYDIUM_LAUNCHLAB_PROGRAM_ID: PublicKey;
10
+ /**
11
+ * 紧凑的 Swap 输入结构 (17 bytes)
12
+ * 与链上 SwapInput 结构对应
13
+ */
14
+ export interface SwapInput {
15
+ /** 钱包在 remaining_accounts 中的起始 index */
16
+ walletIndex: number;
17
+ /** 交易金额 (lamports for buy, token units for sell) */
18
+ amount: bigint;
19
+ /** 最小输出金额 (滑点保护) */
20
+ minAmountOut: bigint;
21
+ }
22
+ /**
23
+ * 序列化 SwapInput 为 17 bytes Buffer
24
+ */
25
+ export declare function serializeSwapInput(input: SwapInput): Buffer;
26
+ /**
27
+ * 序列化 SwapInput 数组
28
+ * 格式: [len: u32 LE] + [SwapInput × N]
29
+ */
30
+ export declare function serializeSwapInputs(inputs: SwapInput[]): Buffer;
31
+ export interface WalletSwapInfo {
32
+ /** 钱包 Keypair */
33
+ wallet: import('@solana/web3.js').Keypair;
34
+ /** 交易金额 */
35
+ amount: bigint;
36
+ /** 滑点保护 (最小输出) */
37
+ minAmountOut: bigint;
38
+ }
39
+ export interface BatchPumpBuyParams {
40
+ tokenMint: PublicKey;
41
+ wallets: WalletSwapInfo[];
42
+ }
43
+ export interface BatchPumpSellParams {
44
+ tokenMint: PublicKey;
45
+ wallets: WalletSwapInfo[];
46
+ }
47
+ export interface BatchPumpSwapBuyParams {
48
+ tokenMint: PublicKey;
49
+ poolAddress: PublicKey;
50
+ wallets: WalletSwapInfo[];
51
+ }
52
+ export interface BatchPumpSwapSellParams {
53
+ tokenMint: PublicKey;
54
+ poolAddress: PublicKey;
55
+ wallets: WalletSwapInfo[];
56
+ }
57
+ export interface BatchRaydiumSwapParams {
58
+ ammId: PublicKey;
59
+ swapBaseIn: boolean;
60
+ wallets: WalletSwapInfo[];
61
+ }
62
+ export interface BatchMeteoraSwapParams {
63
+ lbPair: PublicKey;
64
+ swapForY: boolean;
65
+ wallets: WalletSwapInfo[];
66
+ }
67
+ export interface BatchOrcaSwapParams {
68
+ whirlpool: PublicKey;
69
+ aToB: boolean;
70
+ wallets: WalletSwapInfo[];
71
+ }
72
+ export interface BatchLaunchLabBuyParams {
73
+ wallets: WalletSwapInfo[];
74
+ }
75
+ /**
76
+ * Jupiter 专用的输入结构
77
+ */
78
+ export interface JupiterSwapInputSnapshot {
79
+ walletIndex: number;
80
+ /** 预先构建好的 Jupiter 指令数据 (opaque buffer) */
81
+ instructionData: Buffer;
82
+ }
83
+ /**
84
+ * 序列化 JupiterSwapInputSnapshot
85
+ */
86
+ export declare function serializeJupiterSwapInput(input: JupiterSwapInputSnapshot): Buffer;
87
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/batch-executor/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,eAAO,MAAM,yBAAyB,WAAgE,CAAC;AAGvG,eAAO,MAAM,qBAAqB,WAA+D,CAAC;AAClG,eAAO,MAAM,0BAA0B,WAA+D,CAAC;AACvG,eAAO,MAAM,4BAA4B,WAAgE,CAAC;AAC1G,eAAO,MAAM,6BAA6B,WAA+D,CAAC;AAC1G,eAAO,MAAM,+BAA+B,WAA+D,CAAC;AAC5G,eAAO,MAAM,wBAAwB,WAA+D,CAAC;AACrG,eAAO,MAAM,kCAAkC,WAA+D,CAAC;AAI/G;;;GAGG;AACH,MAAM,WAAW,SAAS;IACtB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAM3D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAM/D;AAID,MAAM,WAAW,cAAc;IAC3B,iBAAiB;IACjB,MAAM,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC;IAC1C,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACpC,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAID;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CAMjF"}
@@ -0,0 +1,42 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ // ==================== Program IDs ====================
3
+ export const BATCH_EXECUTOR_PROGRAM_ID = new PublicKey('7xVAbH6ooYpPyKWDpbggGYo6ngo9yK9tJnauGTofDU3H');
4
+ // DEX Program IDs used in CPI (with BATCH_ prefix to avoid conflicts)
5
+ export const BATCH_PUMP_PROGRAM_ID = new PublicKey('6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P');
6
+ export const BATCH_PUMP_SWAP_PROGRAM_ID = new PublicKey('pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA');
7
+ export const BATCH_RAYDIUM_AMM_PROGRAM_ID = new PublicKey('675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8');
8
+ export const BATCH_METEORA_DLMM_PROGRAM_ID = new PublicKey('LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo');
9
+ export const BATCH_ORCA_WHIRLPOOL_PROGRAM_ID = new PublicKey('whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc');
10
+ export const BATCH_JUPITER_PROGRAM_ID = new PublicKey('JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4');
11
+ export const BATCH_RAYDIUM_LAUNCHLAB_PROGRAM_ID = new PublicKey('LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj');
12
+ /**
13
+ * 序列化 SwapInput 为 17 bytes Buffer
14
+ */
15
+ export function serializeSwapInput(input) {
16
+ const buffer = Buffer.alloc(17);
17
+ buffer.writeUInt8(input.walletIndex, 0);
18
+ buffer.writeBigUInt64LE(input.amount, 1);
19
+ buffer.writeBigUInt64LE(input.minAmountOut, 9);
20
+ return buffer;
21
+ }
22
+ /**
23
+ * 序列化 SwapInput 数组
24
+ * 格式: [len: u32 LE] + [SwapInput × N]
25
+ */
26
+ export function serializeSwapInputs(inputs) {
27
+ const lenBuffer = Buffer.alloc(4);
28
+ lenBuffer.writeUInt32LE(inputs.length, 0);
29
+ const dataBuffers = inputs.map(serializeSwapInput);
30
+ return Buffer.concat([lenBuffer, ...dataBuffers]);
31
+ }
32
+ /**
33
+ * 序列化 JupiterSwapInputSnapshot
34
+ */
35
+ export function serializeJupiterSwapInput(input) {
36
+ const idxBuf = Buffer.alloc(1);
37
+ idxBuf.writeUInt8(input.walletIndex, 0);
38
+ const lenBuf = Buffer.alloc(4);
39
+ lenBuf.writeUInt32LE(input.instructionData.length, 0);
40
+ return Buffer.concat([idxBuf, lenBuf, input.instructionData]);
41
+ }
42
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/batch-executor/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,wDAAwD;AAExD,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAEvG,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAClG,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AACvG,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAC1G,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAC1G,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAC5G,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AACrG,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAiB/G;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;AACtD,CAAC;AAoED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAA+B;IACrE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Solana SDK 常量配置
3
+ * @module sol/constants
4
+ */
5
+ /**
6
+ * Nozomi 配置
7
+ * Temporal Nozomi 交易加速服务
8
+ */
9
+ export declare const NOZOMI_CONFIG: {
10
+ /** Tip 账户列表(随机选择一个) */
11
+ readonly TIP_ACCOUNTS: readonly ["TEMPaMeCRFAS9EKF53Jd6KpHxgL47uWLcpFArU1Fanq", "noz3jAjPiHuBPqiSPkkugaJDkJscPuRhYnSpbi8UvC4", "noz3str9KXfpKknefHji8L1mPgimezaiUyCHYMDv1GE", "noz6uoYCDijhu1V7cutCpwxNiSovEwLdRHPwmgCGDNo", "noz9EPNcT7WH6Sou3sr3GGjHQYVkN3DNirpbvDkv9YJ", "nozc5yT15LazbLTFVZzoNZCwjh3yUtW86LoUyqsBu4L", "nozFrhfnNGoyqwVuwPAW4aaGqempx4PU6g6D9CJMv7Z", "nozievPk7HyK1Rqy1MPJwVQ7qQg2QoJGyP71oeDwbsu", "noznbgwYnBLDHu8wcQVCEw6kDrXkPdKkydGJGNXGvL7", "nozNVWs5N8mgzuD3qigrCG2UoKxZttxzZ85pvAQVrbP", "nozpEGbwx4BcGp6pvEdAh1JoC2CQGZdU6HbNP1v2p6P", "nozrhjhkCr3zXT3BiT4WCodYCUFeQvcdUkM7MqhKqge", "nozrwQtWhEdrA6W8dkbt9gnUaMs52PdAv5byipnadq3", "nozUacTVWub3cL4mJmGCYjKZTnE9RbdY5AP46iQgbPJ", "nozWCyTPppJjRuw2fpzDhhWbW355fzosWSzrrMYB1Qk", "nozWNju6dY353eMkMqURqwQEoM3SFgEKC6psLCSfUne", "nozxNBgWohjR75vdspfxR5H9ceC7XXH99xpxhVGt3Bb"];
12
+ /** 最小 Tip(lamports)- 0.001 SOL */
13
+ readonly MIN_TIP_LAMPORTS: 1000000;
14
+ /** 默认 Tip(lamports)- 0.001 SOL */
15
+ readonly DEFAULT_TIP_LAMPORTS: 1000000;
16
+ /** 建议的 Priority Fee(microlamports) */
17
+ readonly RECOMMENDED_PRIORITY_FEE: 1000000;
18
+ /** 区域端点 */
19
+ readonly REGIONS: {
20
+ readonly auto: "nozomi.temporal.xyz";
21
+ readonly pit: "pit1.nozomi.temporal.xyz";
22
+ readonly tyo: "tyo1.nozomi.temporal.xyz";
23
+ readonly sgp: "sgp1.nozomi.temporal.xyz";
24
+ readonly ewr: "ewr1.nozomi.temporal.xyz";
25
+ readonly ams: "ams1.nozomi.temporal.xyz";
26
+ readonly fra: "fra2.nozomi.temporal.xyz";
27
+ };
28
+ };
29
+ /**
30
+ * Jito 配置
31
+ *
32
+ * 注意:BLOCK_ENGINE_URL 需要由前端传入,不在 SDK 中写死
33
+ */
34
+ export declare const JITO_CONFIG: {
35
+ /** Tip 账户列表(随机选择一个)- 这些是 Jito 官方账户,固定不变 */
36
+ readonly TIP_ACCOUNTS: readonly ["96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5", "HFqU5x63VTqvQss8hp11i4bVmkzdNaVB6PYjYgNd4W5U", "Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY", "ADaUMid9yfUytqMBgopwjb2DTLSokTSzL1zt6iGPaS49", "DfXygSm4jCyNCybVYYK6DwvWqjKee8pbDmJGcLWNDXjh", "ADuUkR4vqLUMWXxW9gh6D6L8pMSawimctcNZ5pGwDcEt", "DttWaMuVvTiduZRnguLF7jNxTgiMBZ1hyAumKUiL2KRL", "3AVi9Tg9Uo68tJfuvoKvqKNWKkC5wPdSSdeBnizKZ6jT"];
37
+ /** 最小 Tip(lamports) */
38
+ readonly MIN_TIP_LAMPORTS: 1000;
39
+ /** 默认 Tip(lamports)- 0.00001 SOL */
40
+ readonly DEFAULT_TIP_LAMPORTS: 10000;
41
+ };
42
+ /**
43
+ * Solana 系统程序地址
44
+ */
45
+ export declare const SYSTEM_PROGRAMS: {
46
+ /** Token Program */
47
+ readonly TOKEN_PROGRAM: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
48
+ /** Token-2022 Program */
49
+ readonly TOKEN_2022_PROGRAM: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
50
+ /** Associated Token Account Program */
51
+ readonly ATA_PROGRAM: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
52
+ /** Metaplex Token Metadata Program */
53
+ readonly METADATA_PROGRAM: "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s";
54
+ /** System Program */
55
+ readonly SYSTEM_PROGRAM: "11111111111111111111111111111111";
56
+ /** Rent Sysvar */
57
+ readonly RENT_SYSVAR: "SysvarRent111111111111111111111111111111111";
58
+ };
59
+ /**
60
+ * Pump.fun 程序地址
61
+ */
62
+ export declare const PUMP_PROGRAMS: {
63
+ /** Pump Program ID */
64
+ readonly PUMP_PROGRAM: "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P";
65
+ /** Pump Swap Program ID */
66
+ readonly PUMP_SWAP_PROGRAM: "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA";
67
+ /** Global Config */
68
+ readonly GLOBAL_CONFIG: "4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf";
69
+ };
70
+ /**
71
+ * Raydium 程序地址
72
+ */
73
+ export declare const RAYDIUM_PROGRAMS: {
74
+ /** AMM Program ID */
75
+ readonly AMM_PROGRAM: "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8";
76
+ /** CLMM Program ID */
77
+ readonly CLMM_PROGRAM: "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK";
78
+ /** LaunchLab Program ID */
79
+ readonly LAUNCHLAB_PROGRAM: "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj";
80
+ };
81
+ /**
82
+ * Orca 程序地址
83
+ */
84
+ export declare const ORCA_PROGRAMS: {
85
+ /** Whirlpool Program ID */
86
+ readonly WHIRLPOOL_PROGRAM: "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc";
87
+ };
88
+ /**
89
+ * Meteora 程序地址
90
+ */
91
+ export declare const METEORA_PROGRAMS: {
92
+ /** DLMM Program ID */
93
+ readonly DLMM_PROGRAM: "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo";
94
+ /** DAMM v2 Program ID */
95
+ readonly DAMM_V2_PROGRAM: "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG";
96
+ /** DBC Program ID */
97
+ readonly DBC_PROGRAM: "dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN";
98
+ };
99
+ /**
100
+ * 常用代币地址
101
+ */
102
+ export declare const TOKENS: {
103
+ /** Wrapped SOL */
104
+ readonly SOL: "So11111111111111111111111111111111111111112";
105
+ /** USDC */
106
+ readonly USDC: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
107
+ /** USDT */
108
+ readonly USDT: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB";
109
+ };
110
+ /**
111
+ * 交易默认配置
112
+ */
113
+ export declare const TX_CONFIG: {
114
+ /** 默认滑点 1% */
115
+ readonly DEFAULT_SLIPPAGE: 1;
116
+ /** 最大滑点 50% */
117
+ readonly MAX_SLIPPAGE: 50;
118
+ /** 计算单元限制 */
119
+ readonly COMPUTE_UNIT_LIMIT: 200000;
120
+ /** 计算单元价格(microlamports) */
121
+ readonly COMPUTE_UNIT_PRICE: 50000;
122
+ /** 确认超时(毫秒) */
123
+ readonly CONFIRMATION_TIMEOUT: 60000;
124
+ /** 默认 commitment */
125
+ readonly DEFAULT_COMMITMENT: "confirmed";
126
+ };
127
+ /**
128
+ * 账户大小(用于计算租金)
129
+ */
130
+ export declare const ACCOUNT_SIZE: {
131
+ /** Mint 账户大小 */
132
+ readonly MINT: 82;
133
+ /** Token 账户大小 */
134
+ readonly TOKEN_ACCOUNT: 165;
135
+ /** Metadata 账户大小(近似值) */
136
+ readonly METADATA: 679;
137
+ };
138
+ /**
139
+ * SOL 单位换算
140
+ */
141
+ export declare const SOL_DECIMALS = 9;
142
+ export declare const LAMPORTS_PER_SOL = 1000000000;
143
+ /**
144
+ * 将 SOL 转换为 lamports
145
+ */
146
+ export declare function solToLamports(sol: number): bigint;
147
+ /**
148
+ * 将 lamports 转换为 SOL
149
+ */
150
+ export declare function lamportsToSol(lamports: bigint): number;
151
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,eAAO,MAAM,aAAa;IACxB,uBAAuB;;IAqBvB,kCAAkC;;IAGlC,kCAAkC;;IAGlC,sCAAsC;;IAGtC,WAAW;;;;;;;;;;CAUH,CAAC;AAIX;;;;GAIG;AACH,eAAO,MAAM,WAAW;IACtB,2CAA2C;;IAY3C,uBAAuB;;IAGvB,oCAAoC;;CAE5B,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,eAAe;IAC1B,oBAAoB;;IAEpB,yBAAyB;;IAEzB,uCAAuC;;IAEvC,sCAAsC;;IAEtC,qBAAqB;;IAErB,kBAAkB;;CAEV,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB,sBAAsB;;IAEtB,2BAA2B;;IAE3B,oBAAoB;;CAEZ,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B,qBAAqB;;IAErB,sBAAsB;;IAEtB,2BAA2B;;CAEnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB,2BAA2B;;CAEnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B,sBAAsB;;IAEtB,yBAAyB;;IAEzB,qBAAqB;;CAEb,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB,kBAAkB;;IAElB,WAAW;;IAEX,WAAW;;CAEH,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB,cAAc;;IAEd,eAAe;;IAEf,aAAa;;IAEb,4BAA4B;;IAE5B,eAAe;;IAEf,oBAAoB;;CAEZ,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB,gBAAgB;;IAEhB,iBAAiB;;IAEjB,yBAAyB;;CAEjB,CAAC;AAIX;;GAEG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,gBAAgB,aAAgB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD"}