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,58 @@
1
+ /**
2
+ * Address Lookup Table (ALT) 管理
3
+ * 用于压缩交易中的地址,突破 32 地址的限制
4
+ * @module sol/utils/alt
5
+ */
6
+ import { Connection, Keypair, PublicKey, TransactionInstruction, VersionedTransaction, AddressLookupTableAccount } from '@solana/web3.js';
7
+ /**
8
+ * 创建 Address Lookup Table
9
+ * @param connection Solana 连接
10
+ * @param payer 支付者
11
+ * @param addresses 要包含的地址列表
12
+ * @returns ALT 地址和创建交易
13
+ */
14
+ export declare function createAddressLookupTable(connection: Connection, payer: Keypair, addresses: PublicKey[]): Promise<{
15
+ altAddress: PublicKey;
16
+ createTx: VersionedTransaction;
17
+ extendTx?: VersionedTransaction;
18
+ }>;
19
+ /**
20
+ * 获取 Address Lookup Table 账户
21
+ * @param connection Solana 连接
22
+ * @param altAddress ALT 地址
23
+ */
24
+ export declare function getAddressLookupTable(connection: Connection, altAddress: PublicKey): Promise<AddressLookupTableAccount | null>;
25
+ /**
26
+ * 等待 ALT 激活
27
+ * ALT 需要等待 1 个 slot 后才能使用
28
+ * @param connection Solana 连接
29
+ * @param altAddress ALT 地址
30
+ * @param maxAttempts 最大尝试次数
31
+ */
32
+ export declare function waitForALTActivation(connection: Connection, altAddress: PublicKey, maxAttempts?: number): Promise<AddressLookupTableAccount>;
33
+ /**
34
+ * 收集交易中涉及的所有地址
35
+ * @param instructions 指令列表
36
+ */
37
+ export declare function collectAddressesFromInstructions(instructions: TransactionInstruction[]): PublicKey[];
38
+ /**
39
+ * 使用 ALT 构建 Versioned Transaction
40
+ * @param connection Solana 连接
41
+ * @param payer 支付者
42
+ * @param instructions 指令列表
43
+ * @param signers 签名者列表
44
+ * @param lookupTableAccounts ALT 账户列表
45
+ */
46
+ export declare function buildVersionedTransaction(connection: Connection, payer: PublicKey, instructions: TransactionInstruction[], signers: Keypair[], lookupTableAccounts?: AddressLookupTableAccount[]): Promise<VersionedTransaction>;
47
+ /**
48
+ * 估算交易大小
49
+ * @param tx Versioned Transaction
50
+ */
51
+ export declare function estimateTransactionSize(tx: VersionedTransaction): number;
52
+ /**
53
+ * 检查交易是否超过大小限制
54
+ * @param tx Versioned Transaction
55
+ * @param maxSize 最大大小 (默认 1232 bytes)
56
+ */
57
+ export declare function isTransactionTooLarge(tx: VersionedTransaction, maxSize?: number): boolean;
58
+ //# sourceMappingURL=alt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alt.d.ts","sourceRoot":"","sources":["../../src/utils/alt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,UAAU,EACV,OAAO,EACP,SAAS,EACT,sBAAsB,EAEtB,oBAAoB,EAEpB,yBAAyB,EAC5B,MAAM,iBAAiB,CAAC;AAEzB;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC1C,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,SAAS,EAAE,GACvB,OAAO,CAAC;IACP,UAAU,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACnC,CAAC,CA0CD;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACvC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,SAAS,GACtB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAG3C;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACtC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,SAAS,EACrB,WAAW,GAAE,MAAW,GACzB,OAAO,CAAC,yBAAyB,CAAC,CAUpC;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC5C,YAAY,EAAE,sBAAsB,EAAE,GACvC,SAAS,EAAE,CAab;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC3C,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,sBAAsB,EAAE,EACtC,OAAO,EAAE,OAAO,EAAE,EAClB,mBAAmB,GAAE,yBAAyB,EAAO,GACtD,OAAO,CAAC,oBAAoB,CAAC,CAa/B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,oBAAoB,GAAG,MAAM,CAExE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACjC,EAAE,EAAE,oBAAoB,EACxB,OAAO,GAAE,MAAa,GACvB,OAAO,CAET"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Address Lookup Table (ALT) 管理
3
+ * 用于压缩交易中的地址,突破 32 地址的限制
4
+ * @module sol/utils/alt
5
+ */
6
+ import { PublicKey, TransactionMessage, VersionedTransaction, AddressLookupTableProgram, } from '@solana/web3.js';
7
+ /**
8
+ * 创建 Address Lookup Table
9
+ * @param connection Solana 连接
10
+ * @param payer 支付者
11
+ * @param addresses 要包含的地址列表
12
+ * @returns ALT 地址和创建交易
13
+ */
14
+ export async function createAddressLookupTable(connection, payer, addresses) {
15
+ const slot = await connection.getSlot();
16
+ // 创建 ALT
17
+ const [createIx, altAddress] = AddressLookupTableProgram.createLookupTable({
18
+ authority: payer.publicKey,
19
+ payer: payer.publicKey,
20
+ recentSlot: slot - 1,
21
+ });
22
+ // 扩展 ALT,添加地址 (每次最多 30 个地址)
23
+ const extendIxs = [];
24
+ const chunkSize = 30;
25
+ for (let i = 0; i < addresses.length; i += chunkSize) {
26
+ const chunk = addresses.slice(i, i + chunkSize);
27
+ extendIxs.push(AddressLookupTableProgram.extendLookupTable({
28
+ payer: payer.publicKey,
29
+ authority: payer.publicKey,
30
+ lookupTable: altAddress,
31
+ addresses: chunk,
32
+ }));
33
+ }
34
+ const { blockhash } = await connection.getLatestBlockhash();
35
+ // 创建交易
36
+ const createMessage = new TransactionMessage({
37
+ payerKey: payer.publicKey,
38
+ recentBlockhash: blockhash,
39
+ instructions: [createIx, ...extendIxs],
40
+ }).compileToV0Message();
41
+ const createTx = new VersionedTransaction(createMessage);
42
+ createTx.sign([payer]);
43
+ return {
44
+ altAddress,
45
+ createTx,
46
+ };
47
+ }
48
+ /**
49
+ * 获取 Address Lookup Table 账户
50
+ * @param connection Solana 连接
51
+ * @param altAddress ALT 地址
52
+ */
53
+ export async function getAddressLookupTable(connection, altAddress) {
54
+ const response = await connection.getAddressLookupTable(altAddress);
55
+ return response.value;
56
+ }
57
+ /**
58
+ * 等待 ALT 激活
59
+ * ALT 需要等待 1 个 slot 后才能使用
60
+ * @param connection Solana 连接
61
+ * @param altAddress ALT 地址
62
+ * @param maxAttempts 最大尝试次数
63
+ */
64
+ export async function waitForALTActivation(connection, altAddress, maxAttempts = 30) {
65
+ for (let i = 0; i < maxAttempts; i++) {
66
+ const alt = await getAddressLookupTable(connection, altAddress);
67
+ if (alt && alt.state.addresses.length > 0) {
68
+ return alt;
69
+ }
70
+ // 等待 400ms (约 1 slot)
71
+ await new Promise(resolve => setTimeout(resolve, 400));
72
+ }
73
+ throw new Error('ALT activation timeout');
74
+ }
75
+ /**
76
+ * 收集交易中涉及的所有地址
77
+ * @param instructions 指令列表
78
+ */
79
+ export function collectAddressesFromInstructions(instructions) {
80
+ const addressSet = new Set();
81
+ for (const ix of instructions) {
82
+ // 添加程序地址
83
+ addressSet.add(ix.programId.toBase58());
84
+ // 添加所有账户地址
85
+ for (const key of ix.keys) {
86
+ addressSet.add(key.pubkey.toBase58());
87
+ }
88
+ }
89
+ return Array.from(addressSet).map(addr => new PublicKey(addr));
90
+ }
91
+ /**
92
+ * 使用 ALT 构建 Versioned Transaction
93
+ * @param connection Solana 连接
94
+ * @param payer 支付者
95
+ * @param instructions 指令列表
96
+ * @param signers 签名者列表
97
+ * @param lookupTableAccounts ALT 账户列表
98
+ */
99
+ export async function buildVersionedTransaction(connection, payer, instructions, signers, lookupTableAccounts = []) {
100
+ const { blockhash } = await connection.getLatestBlockhash();
101
+ const message = new TransactionMessage({
102
+ payerKey: payer,
103
+ recentBlockhash: blockhash,
104
+ instructions,
105
+ }).compileToV0Message(lookupTableAccounts);
106
+ const tx = new VersionedTransaction(message);
107
+ tx.sign(signers);
108
+ return tx;
109
+ }
110
+ /**
111
+ * 估算交易大小
112
+ * @param tx Versioned Transaction
113
+ */
114
+ export function estimateTransactionSize(tx) {
115
+ return tx.serialize().length;
116
+ }
117
+ /**
118
+ * 检查交易是否超过大小限制
119
+ * @param tx Versioned Transaction
120
+ * @param maxSize 最大大小 (默认 1232 bytes)
121
+ */
122
+ export function isTransactionTooLarge(tx, maxSize = 1232) {
123
+ return estimateTransactionSize(tx) > maxSize;
124
+ }
125
+ //# sourceMappingURL=alt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alt.js","sourceRoot":"","sources":["../../src/utils/alt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Solana 余额查询功能
3
+ * 使用批量 RPC 调用优化,减少限流风险
4
+ * @module sol/utils/balance
5
+ */
6
+ import { Connection } from '@solana/web3.js';
7
+ /**
8
+ * SOL 余额结果
9
+ */
10
+ export interface SolBalanceResult {
11
+ address: string;
12
+ lamports: bigint;
13
+ sol: number;
14
+ success: boolean;
15
+ error?: string;
16
+ }
17
+ /**
18
+ * 代币余额结果
19
+ */
20
+ export interface TokenBalanceResult {
21
+ address: string;
22
+ tokenAddress: string;
23
+ balance: bigint;
24
+ decimals: number;
25
+ uiBalance: number;
26
+ success: boolean;
27
+ error?: string;
28
+ }
29
+ /**
30
+ * 批量余额查询结果
31
+ */
32
+ export interface BatchBalanceResult<T> {
33
+ results: T[];
34
+ successCount: number;
35
+ failedCount: number;
36
+ }
37
+ /**
38
+ * 钱包完整余额信息
39
+ */
40
+ export interface WalletBalanceInfo {
41
+ address: string;
42
+ sol: {
43
+ lamports: bigint;
44
+ balance: number;
45
+ };
46
+ tokens: Array<{
47
+ mint: string;
48
+ balance: bigint;
49
+ decimals: number;
50
+ uiBalance: number;
51
+ }>;
52
+ }
53
+ /**
54
+ * 查询单个地址的 SOL 余额
55
+ * @param connection Solana 连接
56
+ * @param address 钱包地址
57
+ */
58
+ export declare function getSolBalance(connection: Connection, address: string): Promise<SolBalanceResult>;
59
+ /**
60
+ * 批量查询 SOL 余额
61
+ * @param connection Solana 连接
62
+ * @param addresses 钱包地址列表
63
+ * @param batchSize 每批查询数量(默认 100)
64
+ */
65
+ export declare function batchGetSolBalance(connection: Connection, addresses: string[], batchSize?: number): Promise<BatchBalanceResult<SolBalanceResult>>;
66
+ /**
67
+ * 查询单个地址的代币余额
68
+ * @param connection Solana 连接
69
+ * @param walletAddress 钱包地址
70
+ * @param tokenMint 代币 Mint 地址
71
+ * @param useToken2022 是否使用 Token-2022 程序(默认 false)
72
+ */
73
+ export declare function getTokenBalance(connection: Connection, walletAddress: string, tokenMint: string, useToken2022?: boolean): Promise<TokenBalanceResult>;
74
+ /**
75
+ * 批量查询代币余额(多个钱包,同一代币)
76
+ * 使用 getMultipleAccountsInfo 优化,单次 RPC 调用查询多个账户
77
+ *
78
+ * @param connection Solana 连接
79
+ * @param walletAddresses 钱包地址列表
80
+ * @param tokenMint 代币 Mint 地址
81
+ * @param useToken2022 是否使用 Token-2022 程序
82
+ */
83
+ export declare function batchGetTokenBalance(connection: Connection, walletAddresses: string[], tokenMint: string, useToken2022?: boolean): Promise<BatchBalanceResult<TokenBalanceResult>>;
84
+ /**
85
+ * 批量查询多个代币余额(单个钱包,多个代币)
86
+ *
87
+ * @param connection Solana 连接
88
+ * @param walletAddress 钱包地址
89
+ * @param tokenMints 代币 Mint 地址列表
90
+ * @param useToken2022 是否使用 Token-2022 程序
91
+ */
92
+ export declare function batchGetMultiTokenBalance(connection: Connection, walletAddress: string, tokenMints: string[], useToken2022?: boolean): Promise<BatchBalanceResult<TokenBalanceResult>>;
93
+ /**
94
+ * 获取钱包持有的所有代币
95
+ * @param connection Solana 连接
96
+ * @param walletAddress 钱包地址
97
+ * @param includeToken2022 是否包含 Token-2022 代币
98
+ */
99
+ export declare function getAllTokenBalances(connection: Connection, walletAddress: string, includeToken2022?: boolean): Promise<WalletBalanceInfo>;
100
+ /**
101
+ * 批量获取钱包完整余额信息
102
+ * @param connection Solana 连接
103
+ * @param walletAddresses 钱包地址列表
104
+ */
105
+ export declare function batchGetAllBalances(connection: Connection, walletAddresses: string[]): Promise<WalletBalanceInfo[]>;
106
+ /**
107
+ * 矩阵查询结果
108
+ */
109
+ export interface MatrixBalanceResult {
110
+ /** 按钱包分组的结果 */
111
+ byWallet: Map<string, Map<string, TokenBalanceResult>>;
112
+ /** 按代币分组的结果 */
113
+ byToken: Map<string, Map<string, TokenBalanceResult>>;
114
+ /** 扁平化结果列表 */
115
+ results: TokenBalanceResult[];
116
+ /** 统计 */
117
+ stats: {
118
+ totalQueries: number;
119
+ successCount: number;
120
+ failedCount: number;
121
+ rpcCalls: number;
122
+ };
123
+ }
124
+ /**
125
+ * 批量查询多个钱包的多个代币余额(矩阵查询)
126
+ * 优化 RPC 调用次数,适合大批量查询
127
+ *
128
+ * @param connection Solana 连接
129
+ * @param walletAddresses 钱包地址列表
130
+ * @param tokenMints 代币 Mint 地址列表
131
+ * @param useToken2022 是否使用 Token-2022 程序
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const result = await batchGetMatrixBalance(
136
+ * connection,
137
+ * ['wallet1', 'wallet2', 'wallet3'],
138
+ * ['tokenA', 'tokenB'],
139
+ * )
140
+ *
141
+ * // 获取某个钱包的某个代币余额
142
+ * const balance = result.byWallet.get('wallet1')?.get('tokenA')
143
+ * ```
144
+ */
145
+ export declare function batchGetMatrixBalance(connection: Connection, walletAddresses: string[], tokenMints: string[], useToken2022?: boolean): Promise<MatrixBalanceResult>;
146
+ /**
147
+ * 清除 decimals 缓存
148
+ * @param mint 可选,指定代币地址;不传则清除全部
149
+ */
150
+ export declare function clearDecimalsCache(mint?: string): void;
151
+ /**
152
+ * 获取缓存的 decimals 数量
153
+ */
154
+ export declare function getDecimalsCacheSize(): number;
155
+ /**
156
+ * 预热 decimals 缓存
157
+ * @param connection Solana 连接
158
+ * @param mints 代币 Mint 地址列表
159
+ */
160
+ export declare function warmupDecimalsCache(connection: Connection, mints: string[]): Promise<void>;
161
+ //# sourceMappingURL=balance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/utils/balance.ts"],"names":[],"mappings":"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"}