four-flap-meme-sdk 1.9.49 → 2.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 (530) hide show
  1. package/README.en.md +41 -6
  2. package/README.md +31 -0
  3. package/README.zh-CN.md +41 -6
  4. package/dist/abis/common.js +74 -68
  5. package/dist/abis/flap/vault.js +9 -7
  6. package/dist/abis/index.d.ts +3 -4
  7. package/dist/abis/index.js +3 -4
  8. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  9. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  10. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
  11. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  12. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
  13. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  14. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  15. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  16. package/dist/bundle-core/config-helpers.d.ts +36 -0
  17. package/dist/bundle-core/config-helpers.js +57 -0
  18. package/dist/bundle-core/errors.d.ts +50 -0
  19. package/dist/bundle-core/errors.js +34 -0
  20. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  21. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  22. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  23. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  24. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  25. package/dist/bundle-core/four-meme/core.js +515 -0
  26. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  27. package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
  28. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  29. package/dist/bundle-core/four-meme/private.js +465 -0
  30. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  31. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  32. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  33. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  34. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  35. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  36. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  37. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  38. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  39. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  40. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  41. package/dist/bundle-core/four-meme/swap.js +505 -0
  42. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  43. package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
  44. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  45. package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
  46. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  47. package/dist/bundle-core/four-meme/types/index.js +1 -0
  48. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  49. package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
  50. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  51. package/dist/bundle-core/four-meme/types.js +1 -0
  52. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  53. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  54. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  55. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  56. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  57. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  58. package/dist/bundle-core/index.d.ts +8 -0
  59. package/dist/bundle-core/index.js +8 -0
  60. package/dist/bundle-core/internal.d.ts +21 -0
  61. package/dist/bundle-core/internal.js +182 -0
  62. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  63. package/dist/bundle-core/sign-context-helpers.js +67 -0
  64. package/dist/bundle-core/submit.d.ts +293 -0
  65. package/dist/bundle-core/submit.js +727 -0
  66. package/dist/bundle-core/types/index.d.ts +8 -0
  67. package/dist/bundle-core/types/index.js +1 -0
  68. package/dist/bundle-core/types.d.ts +1 -0
  69. package/dist/bundle-core/types.js +1 -0
  70. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  71. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -116
  72. package/dist/chains/bsc/four/config.d.ts +5 -70
  73. package/dist/chains/bsc/four/config.js +2 -115
  74. package/dist/chains/bsc/four/core.d.ts +1 -4
  75. package/dist/chains/bsc/four/core.js +1 -589
  76. package/dist/chains/bsc/four/disperse.d.ts +12 -0
  77. package/dist/chains/bsc/four/disperse.js +470 -0
  78. package/dist/chains/bsc/four/index.d.ts +6 -6
  79. package/dist/chains/bsc/four/index.js +6 -6
  80. package/dist/chains/bsc/four/internal.d.ts +2 -50
  81. package/dist/chains/bsc/four/internal.js +2 -237
  82. package/dist/chains/bsc/four/pairwise.d.ts +7 -0
  83. package/dist/chains/bsc/four/pairwise.js +308 -0
  84. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  85. package/dist/chains/bsc/four/pancake-proxy.js +1 -688
  86. package/dist/chains/bsc/four/private.d.ts +1 -27
  87. package/dist/chains/bsc/four/private.js +1 -477
  88. package/dist/chains/bsc/four/submit.d.ts +2 -315
  89. package/dist/chains/bsc/four/submit.js +2 -746
  90. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  91. package/dist/chains/bsc/four/swap-buy-first.js +2 -506
  92. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  93. package/dist/chains/bsc/four/swap-internal.js +1 -18
  94. package/dist/chains/bsc/four/swap.d.ts +2 -144
  95. package/dist/chains/bsc/four/swap.js +2 -760
  96. package/dist/chains/bsc/four/sweep.d.ts +13 -0
  97. package/dist/chains/bsc/four/sweep.js +788 -0
  98. package/dist/chains/bsc/four/types.d.ts +1 -476
  99. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  100. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  101. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  102. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  103. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  104. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  105. package/dist/chains/bsc/four/utils.d.ts +5 -18
  106. package/dist/chains/bsc/four/utils.js +5 -1534
  107. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  108. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  109. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  110. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -207
  111. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  112. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  113. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  114. package/dist/chains/bsc/pancake/bundle-swap.js +111 -686
  115. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  116. package/dist/chains/bsc/pancake/index.js +1 -3
  117. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  118. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  119. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  120. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  121. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  122. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  123. package/dist/chains/eni/batch-router/transfer.js +54 -23
  124. package/dist/chains/eni/batch-router/utils.js +32 -6
  125. package/dist/chains/eni/bundler/sign.js +4 -4
  126. package/dist/chains/eni/bundler/submit.js +1 -4
  127. package/dist/chains/eni/constants.js +1 -1
  128. package/dist/chains/eni/index.d.ts +1 -1
  129. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  130. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  131. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  132. package/dist/chains/eni/platforms/daoaas/meta.js +8 -4
  133. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -43
  134. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  135. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  136. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  137. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  138. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -47
  139. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  140. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  141. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  142. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  143. package/dist/chains/eni/platforms/iro/index.js +4 -4
  144. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  145. package/dist/chains/eni/platforms/iro/token.js +107 -31
  146. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  147. package/dist/chains/eni/submit.js +5 -13
  148. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  149. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -20
  150. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  151. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  152. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -56
  153. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  154. package/dist/chains/xlayer/eip7702/bundle-sell.js +26 -74
  155. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  156. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -68
  157. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  158. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  159. package/dist/chains/xlayer/eip7702/index.d.ts +27 -46
  160. package/dist/chains/xlayer/eip7702/index.js +27 -81
  161. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  162. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  163. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  164. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +58 -291
  165. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  166. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  167. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  168. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  169. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  170. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  171. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  172. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  173. package/dist/chains/xlayer/eip7702/volume.js +83 -158
  174. package/dist/chains/xlayer/eoa/constants.js +1 -1
  175. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  176. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  177. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  178. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  179. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +64 -276
  180. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  181. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +14 -14
  182. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  183. package/dist/chains/xlayer/eoa/index.js +8 -23
  184. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  185. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  186. package/dist/chains/xlayer/eoa/types-core.d.ts +363 -0
  187. package/dist/chains/xlayer/eoa/types-core.js +53 -0
  188. package/dist/chains/xlayer/eoa/types-create.d.ts +413 -0
  189. package/dist/chains/xlayer/eoa/types-create.js +9 -0
  190. package/dist/chains/xlayer/eoa/types-volume.d.ts +209 -0
  191. package/dist/chains/xlayer/eoa/types-volume.js +13 -0
  192. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  193. package/dist/chains/xlayer/eoa/types.js +1 -3
  194. package/dist/contracts/helper3.d.ts +20 -17
  195. package/dist/contracts/helper3.js +56 -20
  196. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  197. package/dist/contracts/tm-bundle-helpers.js +72 -0
  198. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  199. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -117
  200. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -70
  201. package/dist/contracts/tm-bundle-merkle/config.js +2 -115
  202. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  203. package/dist/contracts/tm-bundle-merkle/core.js +1 -588
  204. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  205. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  206. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -50
  207. package/dist/contracts/tm-bundle-merkle/internal.js +2 -236
  208. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  209. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -687
  210. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  211. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  212. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  213. package/dist/contracts/tm-bundle-merkle/submit.js +3 -919
  214. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  215. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -505
  216. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  217. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  218. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  219. package/dist/contracts/tm-bundle-merkle/swap.js +2 -757
  220. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  221. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  222. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  223. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  224. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  225. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  226. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  227. package/dist/contracts/tm-bundle-merkle/utils.d.ts +5 -6
  228. package/dist/contracts/tm-bundle-merkle/utils.js +5 -6
  229. package/dist/contracts/tm-bundle.d.ts +3 -51
  230. package/dist/contracts/tm-bundle.js +102 -142
  231. package/dist/contracts/tm.d.ts +3 -2
  232. package/dist/contracts/tm.js +36 -32
  233. package/dist/contracts/tm1.js +9 -4
  234. package/dist/contracts/tm2.js +9 -4
  235. package/dist/dex/direct-router-helpers.d.ts +264 -0
  236. package/dist/dex/direct-router-helpers.js +539 -0
  237. package/dist/dex/direct-router.d.ts +3 -125
  238. package/dist/dex/direct-router.js +237 -652
  239. package/dist/dex/types.d.ts +81 -0
  240. package/dist/dex/types.js +1 -0
  241. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  242. package/dist/exports/root-bundle-and-tooling.js +30 -0
  243. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  244. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  245. package/dist/exports/root-foundations.d.ts +35 -0
  246. package/dist/exports/root-foundations.js +70 -0
  247. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  248. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  249. package/dist/flows/create.d.ts +2 -2
  250. package/dist/flows/create.js +6 -6
  251. package/dist/flows/index.d.ts +1 -0
  252. package/dist/flows/index.js +1 -0
  253. package/dist/index.d.ts +20 -91
  254. package/dist/index.js +20 -215
  255. package/dist/shared/abis/common.d.ts +2 -83
  256. package/dist/shared/abis/common.js +2 -252
  257. package/dist/shared/abis/index.d.ts +5 -6
  258. package/dist/shared/abis/index.js +5 -7
  259. package/dist/shared/clients/blockrazor.js +41 -24
  260. package/dist/shared/clients/club48.js +30 -26
  261. package/dist/shared/clients/emitservice.js +2 -0
  262. package/dist/shared/clients/four.js +23 -18
  263. package/dist/shared/clients/index.d.ts +8 -0
  264. package/dist/shared/clients/index.js +8 -0
  265. package/dist/shared/clients/merkle.js +26 -30
  266. package/dist/shared/constants/addresses.d.ts +1 -1
  267. package/dist/shared/constants/addresses.js +11 -2
  268. package/dist/shared/constants/chains.d.ts +1 -1
  269. package/dist/shared/constants/chains.js +1 -1
  270. package/dist/shared/constants/gas.d.ts +1 -1
  271. package/dist/shared/constants/gas.js +2 -6
  272. package/dist/shared/constants/index.d.ts +1 -0
  273. package/dist/shared/constants/index.js +1 -0
  274. package/dist/shared/constants/quote.d.ts +30 -0
  275. package/dist/shared/constants/quote.js +37 -0
  276. package/dist/shared/flap/__tests__/curve.test.js +3 -3
  277. package/dist/shared/flap/abi.js +1 -1
  278. package/dist/shared/flap/constants.d.ts +1 -1
  279. package/dist/shared/flap/constants.js +2 -2
  280. package/dist/shared/flap/curve.js +3 -0
  281. package/dist/shared/flap/errors.d.ts +1 -4
  282. package/dist/shared/flap/errors.js +21 -3
  283. package/dist/shared/flap/index.d.ts +2 -2
  284. package/dist/shared/flap/index.js +2 -2
  285. package/dist/shared/flap/meta.d.ts +16 -18
  286. package/dist/shared/flap/meta.js +14 -26
  287. package/dist/shared/flap/permit.js +6 -5
  288. package/dist/shared/flap/pinata.d.ts +9 -2
  289. package/dist/shared/flap/pinata.js +20 -18
  290. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  291. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  292. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  293. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  294. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  295. package/dist/shared/flap/portal-bundle-merkle/core.js +66 -156
  296. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +81 -86
  297. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  298. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  299. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  300. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  301. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  302. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  303. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  304. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  305. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  306. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  307. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  308. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  309. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  310. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +73 -3
  311. package/dist/shared/flap/portal-bundle-merkle/utils-helpers.d.ts +100 -0
  312. package/dist/shared/flap/portal-bundle-merkle/utils-helpers.js +133 -0
  313. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  314. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  315. package/dist/shared/flap/portal-bundle.js +54 -42
  316. package/dist/shared/flap/portal.js +32 -10
  317. package/dist/shared/flap/vanity.js +4 -7
  318. package/dist/shared/flap/vault.d.ts +1 -1
  319. package/dist/shared/flap/vault.js +54 -48
  320. package/dist/shared/flap 2/__tests__/curve.test.d.ts +1 -0
  321. package/dist/shared/flap 2/portal-bundle-merkle/types.js +1 -0
  322. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  323. package/dist/shared/foundation/dex/v3-path.js +35 -0
  324. package/dist/shared/foundation/gas/bundle-gas.d.ts +39 -0
  325. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  326. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  327. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  328. package/dist/shared/foundation/index.d.ts +13 -0
  329. package/dist/shared/foundation/index.js +12 -0
  330. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  331. package/dist/shared/foundation/nonce/nonce-manager.js +180 -0
  332. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  333. package/dist/shared/foundation/normalize-unknown.js +29 -0
  334. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  335. package/dist/shared/foundation/sdk-logger.js +12 -0
  336. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  337. package/dist/shared/foundation/tx/build-request.js +25 -0
  338. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  339. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  340. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
  341. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  342. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  343. package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
  344. package/dist/shared/foundation/types/erc20.d.ts +65 -0
  345. package/dist/shared/foundation/types/erc20.js +1 -0
  346. package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
  347. package/dist/shared/foundation/types/holders-maker.js +1 -0
  348. package/dist/shared/foundation/types/index.d.ts +7 -0
  349. package/dist/shared/foundation/types/index.js +1 -0
  350. package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
  351. package/dist/shared/foundation/types/lp-inspect.js +1 -0
  352. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  353. package/dist/shared/foundation/types/multicall.js +1 -0
  354. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  355. package/dist/shared/foundation/types/private-sale.js +1 -0
  356. package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
  357. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  358. package/dist/shared/four/tax-token.d.ts +1 -1
  359. package/dist/shared/four/tax-token.js +27 -7
  360. package/dist/shared/index.d.ts +4 -0
  361. package/dist/shared/index.js +4 -0
  362. package/dist/types/distribute.d.ts +72 -0
  363. package/dist/types/distribute.js +1 -0
  364. package/dist/types 2/errors.d.ts +27 -0
  365. package/dist/types 2/errors.js +34 -0
  366. package/dist/utils/airdrop-sweep-types.d.ts +1 -0
  367. package/dist/utils/airdrop-sweep-types.js +1 -0
  368. package/dist/utils/airdrop-sweep.d.ts +4 -76
  369. package/dist/utils/airdrop-sweep.js +38 -52
  370. package/dist/utils/bundle-helpers.d.ts +9 -243
  371. package/dist/utils/bundle-helpers.js +10 -584
  372. package/dist/utils/constants.d.ts +5 -61
  373. package/dist/utils/constants.js +5 -80
  374. package/dist/utils/contract-factory.d.ts +2 -4
  375. package/dist/utils/contract-factory.js +25 -18
  376. package/dist/utils/erc20-types.d.ts +1 -0
  377. package/dist/utils/erc20-types.js +1 -0
  378. package/dist/utils/erc20.d.ts +8 -90
  379. package/dist/utils/erc20.js +94 -153
  380. package/dist/utils/errors.d.ts +10 -22
  381. package/dist/utils/errors.js +61 -79
  382. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  383. package/dist/utils/holders-maker/addresses.js +15 -0
  384. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  385. package/dist/utils/holders-maker/buy-tx.js +278 -0
  386. package/dist/utils/holders-maker/constants.d.ts +6 -0
  387. package/dist/utils/holders-maker/constants.js +7 -0
  388. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  389. package/dist/utils/holders-maker/disperse.js +90 -0
  390. package/dist/utils/holders-maker/routing.d.ts +4 -0
  391. package/dist/utils/holders-maker/routing.js +45 -0
  392. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  393. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  394. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  395. package/dist/utils/holders-maker-helpers.js +9 -0
  396. package/dist/utils/holders-maker-types.d.ts +1 -0
  397. package/dist/utils/holders-maker-types.js +1 -0
  398. package/dist/utils/holders-maker.d.ts +2 -138
  399. package/dist/utils/holders-maker.js +23 -651
  400. package/dist/utils/hop-chains.d.ts +35 -0
  401. package/dist/utils/hop-chains.js +215 -0
  402. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  403. package/dist/utils/lp-inspect-helpers.js +109 -0
  404. package/dist/utils/lp-inspect-types.d.ts +1 -0
  405. package/dist/utils/lp-inspect-types.js +1 -0
  406. package/dist/utils/lp-inspect.d.ts +2 -112
  407. package/dist/utils/lp-inspect.js +63 -195
  408. package/dist/utils/mpcExclusive.d.ts +2 -5
  409. package/dist/utils/mpcExclusive.js +4 -3
  410. package/dist/utils/private-sale-types.d.ts +1 -0
  411. package/dist/utils/private-sale-types.js +1 -0
  412. package/dist/utils/private-sale.d.ts +2 -58
  413. package/dist/utils/private-sale.js +2 -7
  414. package/dist/utils/provider-factory.d.ts +4 -0
  415. package/dist/utils/provider-factory.js +10 -0
  416. package/dist/utils/quote-helpers-types.d.ts +1 -0
  417. package/dist/utils/quote-helpers-types.js +1 -0
  418. package/dist/utils/quote-helpers.d.ts +4 -45
  419. package/dist/utils/quote-helpers.js +15 -65
  420. package/dist/utils/stealth-transfer.d.ts +2 -28
  421. package/dist/utils/stealth-transfer.js +30 -14
  422. package/dist/utils/swap-helpers.d.ts +0 -3
  423. package/dist/utils/swap-helpers.js +6 -9
  424. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  425. package/dist/utils/types/airdrop-sweep.js +1 -0
  426. package/dist/utils/types/contract-factory.d.ts +1 -0
  427. package/dist/utils/types/contract-factory.js +1 -0
  428. package/dist/utils/types/erc20.d.ts +1 -0
  429. package/dist/utils/types/erc20.js +1 -0
  430. package/dist/utils/types/errors.d.ts +1 -0
  431. package/dist/utils/types/errors.js +1 -0
  432. package/dist/utils/types/holders-maker.d.ts +1 -0
  433. package/dist/utils/types/holders-maker.js +1 -0
  434. package/dist/utils/types/hop-chains.d.ts +8 -0
  435. package/dist/utils/types/hop-chains.js +1 -0
  436. package/dist/utils/types/index.d.ts +13 -0
  437. package/dist/utils/types/index.js +1 -0
  438. package/dist/utils/types/lp-inspect.d.ts +1 -0
  439. package/dist/utils/types/lp-inspect.js +1 -0
  440. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  441. package/dist/utils/types/mpc-exclusive.js +1 -0
  442. package/dist/utils/types/private-sale.d.ts +1 -0
  443. package/dist/utils/types/private-sale.js +1 -0
  444. package/dist/utils/types/quote-helpers.d.ts +1 -0
  445. package/dist/utils/types/quote-helpers.js +1 -0
  446. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  447. package/dist/utils/types/stealth-transfer.js +1 -0
  448. package/dist/utils/types/wallet.d.ts +25 -0
  449. package/dist/utils/types/wallet.js +1 -0
  450. package/dist/utils/wallet.d.ts +2 -25
  451. package/dist/utils/wallet.js +9 -10
  452. package/package.json +55 -2
  453. package/src/abis/contracts/TaxToken.json +969 -0
  454. package/src/abis/contracts/TokenManager.json +836 -0
  455. package/src/abis/contracts/TokenManager2.json +136 -0
  456. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  457. /package/dist/{shared 2/flap/__tests__/curve.test.d.ts → bundle-core/__tests__/config-helpers.test.d.ts} +0 -0
  458. /package/dist/{shared 2/flap/portal-bundle-merkle/types.js → bundle-core/__tests__/facade-parity.test.d.ts} +0 -0
  459. /package/dist/{shared 2/abis → shared/abis 2}/TaxToken.json +0 -0
  460. /package/dist/{shared 2/abis → shared/abis 2}/TokenManager.json +0 -0
  461. /package/dist/{shared 2/abis → shared/abis 2}/TokenManager2.json +0 -0
  462. /package/dist/{shared 2/abis → shared/abis 2}/TokenManagerHelper3.json +0 -0
  463. /package/dist/{shared 2/abis → shared/abis 2}/common.d.ts +0 -0
  464. /package/dist/{shared 2/abis → shared/abis 2}/common.js +0 -0
  465. /package/dist/{shared 2/abis → shared/abis 2}/index.d.ts +0 -0
  466. /package/dist/{shared 2/abis → shared/abis 2}/index.js +0 -0
  467. /package/dist/{shared 2/clients → shared/clients 2}/blockrazor.d.ts +0 -0
  468. /package/dist/{shared 2/clients → shared/clients 2}/blockrazor.js +0 -0
  469. /package/dist/{shared 2/clients → shared/clients 2}/club48.d.ts +0 -0
  470. /package/dist/{shared 2/clients → shared/clients 2}/club48.js +0 -0
  471. /package/dist/{shared 2/clients → shared/clients 2}/emitservice.d.ts +0 -0
  472. /package/dist/{shared 2/clients → shared/clients 2}/emitservice.js +0 -0
  473. /package/dist/{shared 2/clients → shared/clients 2}/four.d.ts +0 -0
  474. /package/dist/{shared 2/clients → shared/clients 2}/four.js +0 -0
  475. /package/dist/{shared 2/clients → shared/clients 2}/merkle.d.ts +0 -0
  476. /package/dist/{shared 2/clients → shared/clients 2}/merkle.js +0 -0
  477. /package/dist/{shared 2/flap → shared/flap 2}/__tests__/curve.test.js +0 -0
  478. /package/dist/{shared 2/flap → shared/flap 2}/abi.d.ts +0 -0
  479. /package/dist/{shared 2/flap → shared/flap 2}/abi.js +0 -0
  480. /package/dist/{shared 2/flap → shared/flap 2}/constants.d.ts +0 -0
  481. /package/dist/{shared 2/flap → shared/flap 2}/constants.js +0 -0
  482. /package/dist/{shared 2/flap → shared/flap 2}/curve.d.ts +0 -0
  483. /package/dist/{shared 2/flap → shared/flap 2}/curve.js +0 -0
  484. /package/dist/{shared 2/flap → shared/flap 2}/errors.d.ts +0 -0
  485. /package/dist/{shared 2/flap → shared/flap 2}/errors.js +0 -0
  486. /package/dist/{shared 2/flap → shared/flap 2}/index.d.ts +0 -0
  487. /package/dist/{shared 2/flap → shared/flap 2}/index.js +0 -0
  488. /package/dist/{shared 2/flap → shared/flap 2}/ipfs.d.ts +0 -0
  489. /package/dist/{shared 2/flap → shared/flap 2}/ipfs.js +0 -0
  490. /package/dist/{shared 2/flap → shared/flap 2}/meta.d.ts +0 -0
  491. /package/dist/{shared 2/flap → shared/flap 2}/meta.js +0 -0
  492. /package/dist/{shared 2/flap → shared/flap 2}/permit.d.ts +0 -0
  493. /package/dist/{shared 2/flap → shared/flap 2}/permit.js +0 -0
  494. /package/dist/{shared 2/flap → shared/flap 2}/pinata.d.ts +0 -0
  495. /package/dist/{shared 2/flap → shared/flap 2}/pinata.js +0 -0
  496. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/config.d.ts +0 -0
  497. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/config.js +0 -0
  498. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/core.d.ts +0 -0
  499. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/core.js +0 -0
  500. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/create-to-dex.d.ts +0 -0
  501. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/create-to-dex.js +0 -0
  502. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/curve-to-dex.d.ts +0 -0
  503. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/curve-to-dex.js +0 -0
  504. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/index.d.ts +0 -0
  505. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/index.js +0 -0
  506. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/pancake-proxy.d.ts +0 -0
  507. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/pancake-proxy.js +0 -0
  508. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/private.d.ts +0 -0
  509. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/private.js +0 -0
  510. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap-buy-first.d.ts +0 -0
  511. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap-buy-first.js +0 -0
  512. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap.d.ts +0 -0
  513. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap.js +0 -0
  514. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/types.d.ts +0 -0
  515. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/utils.d.ts +0 -0
  516. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/utils.js +0 -0
  517. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle.d.ts +0 -0
  518. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle.js +0 -0
  519. /package/dist/{shared 2/flap → shared/flap 2}/portal.d.ts +0 -0
  520. /package/dist/{shared 2/flap → shared/flap 2}/portal.js +0 -0
  521. /package/dist/{shared 2/flap → shared/flap 2}/vanity.d.ts +0 -0
  522. /package/dist/{shared 2/flap → shared/flap 2}/vanity.js +0 -0
  523. /package/dist/{shared 2/flap → shared/flap 2}/vault.d.ts +0 -0
  524. /package/dist/{shared 2/flap → shared/flap 2}/vault.js +0 -0
  525. /package/dist/{shared 2/four → shared/four 2}/index.d.ts +0 -0
  526. /package/dist/{shared 2/four → shared/four 2}/index.js +0 -0
  527. /package/dist/{shared 2/four → shared/four 2}/tax-token.d.ts +0 -0
  528. /package/dist/{shared 2/four → shared/four 2}/tax-token.js +0 -0
  529. /package/dist/{shared 2/index.d.ts → shared/index 2.js} +0 -0
  530. /package/dist/{shared 2/index.js → shared/index.d 2.ts} +0 -0
@@ -1,80 +1,8 @@
1
- import type { SoulPointSignatureMode, VNormalizationMode } from '../shared/clients/club48.js';
2
- /** Bundle 提交结果(完整版 - 包含 bundleUuid) */
3
- export type BundleSubmitResult = {
4
- bundleUuid: string;
5
- signedTxs: string[];
6
- };
7
- /** ✅ 签名结果(精简版 - 仅返回签名交易) */
8
- export type SignedTransactionsResult = {
9
- signedTransactions: string[];
10
- };
11
- /** ✅ 分散参数(完整版 - 包含 Bundle 提交) */
12
- export type DisperseParams = {
13
- rpcUrl: string;
14
- chainId: number;
15
- fromPrivateKey: string;
16
- recipients: string[];
17
- amount?: string;
18
- amounts?: string[];
19
- tokenAddress?: string;
20
- bundleEndpoint?: string;
21
- gasPriceGwei?: string;
22
- transferGasLimit?: bigint;
23
- nativeGasLimit?: bigint;
24
- blockOffset?: number;
25
- spMode?: SoulPointSignatureMode;
26
- spPrivateKey?: string;
27
- spVMode?: VNormalizationMode;
28
- };
29
- /** ✅ 分散参数(精简版 - 仅签名) */
30
- export type DisperseSignParams = {
31
- rpcUrl: string;
32
- chainId: number;
33
- fromPrivateKey: string;
34
- recipients: string[];
35
- amount?: string;
36
- amounts?: string[];
37
- tokenAddress?: string;
38
- gasPriceGwei?: string;
39
- transferGasLimit?: bigint;
40
- nativeGasLimit?: bigint;
41
- };
42
- export declare function disperseWithBundle(params: DisperseSignParams): Promise<SignedTransactionsResult>;
43
- /** ✅ 归集参数(完整版 - 包含 Bundle 提交) */
44
- export type SweepParams = {
45
- rpcUrl: string;
46
- chainId: number;
47
- sourcePrivateKeys: string[];
48
- target: string;
49
- ratioPct?: number;
50
- amount?: string;
51
- tokenAddress?: string;
52
- bundleEndpoint?: string;
53
- gasPriceGwei?: string;
54
- transferGasLimit?: bigint;
55
- nativeGasLimit?: bigint;
56
- blockOffset?: number;
57
- skipIfInsufficient?: boolean;
58
- spMode?: SoulPointSignatureMode;
59
- spPrivateKey?: string;
60
- spVMode?: VNormalizationMode;
61
- };
62
- /** ✅ 归集参数(精简版 - 仅签名) */
63
- export type SweepSignParams = {
64
- rpcUrl: string;
65
- chainId: number;
66
- sourcePrivateKeys: string[];
67
- target: string;
68
- ratioPct?: number;
69
- amount?: string;
70
- tokenAddress?: string;
71
- gasPriceGwei?: string;
72
- transferGasLimit?: bigint;
73
- nativeGasLimit?: bigint;
74
- skipIfInsufficient?: boolean;
75
- };
1
+ import type { AirdropDisperseSignParams, SignedTransactionsResult, AirdropSweepSignParams } from './types/airdrop-sweep.js';
2
+ export declare function disperseWithBundle(params: AirdropDisperseSignParams): Promise<SignedTransactionsResult>;
76
3
  /**
77
4
  * 归集(仅签名版本 - 不提交 Bundle)
78
5
  * ✅ 精简版:只负责签名交易,不提交
79
6
  */
80
- export declare function sweepWithBundle(params: SweepSignParams): Promise<SignedTransactionsResult>;
7
+ export declare function sweepWithBundle(params: AirdropSweepSignParams): Promise<SignedTransactionsResult>;
8
+ export type { BundleSubmitResult, SignedTransactionsResult, AirdropDisperseParams, AirdropDisperseSignParams, AirdropSweepParams, AirdropSweepSignParams, DisperseParams, DisperseSignParams, SweepParams, SweepSignParams, } from './types/airdrop-sweep.js';
@@ -1,34 +1,15 @@
1
1
  import { ethers, JsonRpcProvider } from 'ethers';
2
- import { GAS_LIMITS } from '../shared/constants/index.js';
3
- async function getErc20Decimals(provider, token) {
4
- try {
5
- const erc20 = new ethers.Contract(token, ['function decimals() view returns (uint8)'], provider);
6
- const d = await erc20.decimals();
7
- if (!Number.isFinite(d) || d < 0 || d > 36)
8
- return 18;
9
- return d;
10
- }
11
- catch {
12
- return 18;
13
- }
14
- }
15
- /**
16
- * 分散(仅签名版本 - 不提交 Bundle)
17
- * ✅ 精简版:只负责签名交易,不提交
18
- */
19
- /** ENI Chain ID — EIP-1559 (type 2) */
20
- const ENI_CHAIN_ID = 173;
21
- function getTxType(chainId) {
22
- return chainId === ENI_CHAIN_ID ? 2 : 0;
23
- }
24
- function buildGasFields(txType, gasPrice) {
25
- if (txType === 2) {
26
- return { type: 2, maxFeePerGas: gasPrice, maxPriorityFeePerGas: gasPrice / 10n || 1n };
27
- }
28
- return { type: 0, gasPrice };
2
+ import { GAS_LIMITS, isEniChain } from '../shared/constants/index.js';
3
+ import { buildGasFields } from '../shared/foundation/gas/bundle-gas.js';
4
+ import { getErc20Decimals } from '../bundle-core/internal.js';
5
+ function getTxTypeForChain(chainId) {
6
+ return isEniChain(chainId) ? 2 : 0;
29
7
  }
8
+ // ==========================================
9
+ // 通用:原生/代币 一键分散 & 一键归集(Bundle)
10
+ // ==========================================
30
11
  export async function disperseWithBundle(params) {
31
- const { rpcUrl, chainId, fromPrivateKey, recipients, amount, amounts, tokenAddress, gasPriceGwei, transferGasLimit = GAS_LIMITS.ERC20_TRANSFER, nativeGasLimit = GAS_LIMITS.BRIBE } = params;
12
+ const { rpcUrl, chainId, fromPrivateKey, recipients, amount, amounts, tokenAddress, gasPriceGwei, transferGasLimit = GAS_LIMITS.ERC20_TRANSFER, nativeGasLimit = GAS_LIMITS.BRIBE, } = params;
32
13
  if (!recipients || recipients.length === 0) {
33
14
  return { signedTransactions: [] };
34
15
  }
@@ -36,14 +17,14 @@ export async function disperseWithBundle(params) {
36
17
  const wallet = new ethers.Wallet(fromPrivateKey, provider);
37
18
  const gasPrice = gasPriceGwei && gasPriceGwei.trim().length > 0
38
19
  ? ethers.parseUnits(gasPriceGwei, 'gwei')
39
- : (await provider.getFeeData()).gasPrice ?? ethers.parseUnits('1', 'gwei');
20
+ : ((await provider.getFeeData()).gasPrice ?? ethers.parseUnits('1', 'gwei'));
40
21
  // 规范化 amounts:优先使用数组;否则将单值扩展为数组
41
22
  const useAmountsArray = Array.isArray(amounts) && amounts.length > 0;
42
23
  const effAmounts = useAmountsArray
43
24
  ? amounts
44
- : (typeof amount === 'string' && amount.trim().length > 0
25
+ : typeof amount === 'string' && amount.trim().length > 0
45
26
  ? new Array(recipients.length).fill(amount)
46
- : []);
27
+ : [];
47
28
  if (effAmounts.length !== recipients.length) {
48
29
  throw new Error('recipients and amounts length mismatch');
49
30
  }
@@ -51,7 +32,7 @@ export async function disperseWithBundle(params) {
51
32
  const signedTxs = [];
52
33
  if (isNative) {
53
34
  const baseNonce = await provider.getTransactionCount(wallet.address, 'pending');
54
- const txType = getTxType(chainId);
35
+ const txType = getTxTypeForChain(chainId);
55
36
  const signedTxList = await Promise.all(recipients.map(async (to, i) => {
56
37
  const amountWei = ethers.parseEther(effAmounts[i]);
57
38
  return wallet.signTransaction({
@@ -69,10 +50,10 @@ export async function disperseWithBundle(params) {
69
50
  // ✅ 并行获取 decimals 和 nonce
70
51
  const [decimals, baseNonce] = await Promise.all([
71
52
  getErc20Decimals(provider, tokenAddress),
72
- provider.getTransactionCount(wallet.address, 'pending')
53
+ provider.getTransactionCount(wallet.address, 'pending'),
73
54
  ]);
74
55
  const iface = new ethers.Interface(['function transfer(address,uint256) returns (bool)']);
75
- const txType = getTxType(chainId);
56
+ const txType = getTxTypeForChain(chainId);
76
57
  const signedTxList = await Promise.all(recipients.map(async (to, i) => {
77
58
  const amountWei = ethers.parseUnits(effAmounts[i], decimals);
78
59
  const data = iface.encodeFunctionData('transfer', [to, amountWei]);
@@ -96,14 +77,14 @@ export async function disperseWithBundle(params) {
96
77
  * ✅ 精简版:只负责签名交易,不提交
97
78
  */
98
79
  export async function sweepWithBundle(params) {
99
- const { rpcUrl, chainId, sourcePrivateKeys, target, ratioPct, amount, tokenAddress, gasPriceGwei, transferGasLimit = GAS_LIMITS.ERC20_TRANSFER, nativeGasLimit = GAS_LIMITS.BRIBE, skipIfInsufficient = true } = params;
80
+ const { rpcUrl, chainId, sourcePrivateKeys, target, ratioPct, amount, tokenAddress, gasPriceGwei, transferGasLimit = GAS_LIMITS.ERC20_TRANSFER, nativeGasLimit = GAS_LIMITS.BRIBE, skipIfInsufficient = true, } = params;
100
81
  if (!sourcePrivateKeys || sourcePrivateKeys.length === 0) {
101
82
  return { signedTransactions: [] };
102
83
  }
103
84
  const provider = new JsonRpcProvider(rpcUrl, chainId);
104
85
  const gasPrice = gasPriceGwei && gasPriceGwei.trim().length > 0
105
86
  ? ethers.parseUnits(gasPriceGwei, 'gwei')
106
- : (await provider.getFeeData()).gasPrice ?? ethers.parseUnits('1', 'gwei');
87
+ : ((await provider.getFeeData()).gasPrice ?? ethers.parseUnits('1', 'gwei'));
107
88
  const isNative = !tokenAddress || tokenAddress.trim().length === 0;
108
89
  const signedTxs = [];
109
90
  const clampRatio = (n) => {
@@ -118,18 +99,18 @@ export async function sweepWithBundle(params) {
118
99
  const ratio = clampRatio(ratioPct);
119
100
  if (isNative) {
120
101
  // ✅ 并行处理所有源钱包
121
- const wallets = sourcePrivateKeys.map(pk => new ethers.Wallet(pk, provider));
102
+ const wallets = sourcePrivateKeys.map((pk) => new ethers.Wallet(pk, provider));
122
103
  const gasCost = nativeGasLimit * gasPrice;
123
104
  // 并行获取所有余额和 nonce
124
105
  const [balances, nonces] = await Promise.all([
125
- Promise.all(wallets.map(w => provider.getBalance(w.address).catch(() => 0n))),
126
- Promise.all(wallets.map(w => provider.getTransactionCount(w.address, 'pending')))
106
+ Promise.all(wallets.map((w) => provider.getBalance(w.address).catch(() => 0n))),
107
+ Promise.all(wallets.map((w) => provider.getTransactionCount(w.address, 'pending'))),
127
108
  ]);
128
109
  // 计算每个钱包的发送金额
129
- const sendAmounts = balances.map(bal => {
110
+ const sendAmounts = balances.map((bal) => {
130
111
  if (ratio !== undefined) {
131
112
  const want = (bal * BigInt(ratio)) / 100n;
132
- const maxSendable = bal > gasCost ? (bal - gasCost) : 0n;
113
+ const maxSendable = bal > gasCost ? bal - gasCost : 0n;
133
114
  return want > maxSendable ? maxSendable : want;
134
115
  }
135
116
  else if (amount && amount.trim().length > 0) {
@@ -140,9 +121,9 @@ export async function sweepWithBundle(params) {
140
121
  }
141
122
  return 0n;
142
123
  });
143
- const txType = getTxType(chainId);
144
- const validIndices = sendAmounts.map((amt, i) => amt > 0n ? i : -1).filter(i => i >= 0);
145
- const signedTxList = await Promise.all(validIndices.map(i => wallets[i].signTransaction({
124
+ const txType = getTxTypeForChain(chainId);
125
+ const validIndices = sendAmounts.map((amt, i) => (amt > 0n ? i : -1)).filter((i) => i >= 0);
126
+ const signedTxList = await Promise.all(validIndices.map((i) => wallets[i].signTransaction({
146
127
  to: target,
147
128
  value: sendAmounts[i],
148
129
  nonce: nonces[i],
@@ -153,8 +134,11 @@ export async function sweepWithBundle(params) {
153
134
  signedTxs.push(...signedTxList);
154
135
  }
155
136
  else {
156
- const wallets = sourcePrivateKeys.map(pk => new ethers.Wallet(pk, provider));
157
- const iface = new ethers.Interface(['function balanceOf(address) view returns (uint256)', 'function transfer(address,uint256) returns (bool)']);
137
+ const wallets = sourcePrivateKeys.map((pk) => new ethers.Wallet(pk, provider));
138
+ const iface = new ethers.Interface([
139
+ 'function balanceOf(address) view returns (uint256)',
140
+ 'function transfer(address,uint256) returns (bool)',
141
+ ]);
158
142
  // ✅ 并行获取 decimals、所有代币余额和 nonce
159
143
  const [decimals, balanceResults, nonces] = await Promise.all([
160
144
  getErc20Decimals(provider, tokenAddress),
@@ -169,10 +153,10 @@ export async function sweepWithBundle(params) {
169
153
  return 0n;
170
154
  }
171
155
  })),
172
- Promise.all(wallets.map(w => provider.getTransactionCount(w.address, 'pending')))
156
+ Promise.all(wallets.map((w) => provider.getTransactionCount(w.address, 'pending'))),
173
157
  ]);
174
158
  // 计算每个钱包的发送金额
175
- const sendAmounts = balanceResults.map(bal => {
159
+ const sendAmounts = balanceResults.map((bal) => {
176
160
  if (ratio !== undefined) {
177
161
  return (bal * BigInt(ratio)) / 100n;
178
162
  }
@@ -184,15 +168,17 @@ export async function sweepWithBundle(params) {
184
168
  return 0n;
185
169
  });
186
170
  // 过滤余额不足的钱包
187
- const validIndices = sendAmounts.map((amt, i) => {
171
+ const validIndices = sendAmounts
172
+ .map((amt, i) => {
188
173
  if (amt <= 0n)
189
174
  return -1;
190
175
  if (skipIfInsufficient && balanceResults[i] < amt)
191
176
  return -1;
192
177
  return i;
193
- }).filter(i => i >= 0);
194
- const txType = getTxType(chainId);
195
- const signedTxList = await Promise.all(validIndices.map(i => {
178
+ })
179
+ .filter((i) => i >= 0);
180
+ const txType = getTxTypeForChain(chainId);
181
+ const signedTxList = await Promise.all(validIndices.map((i) => {
196
182
  const data = iface.encodeFunctionData('transfer', [target, sendAmounts[i]]);
197
183
  return wallets[i].signTransaction({
198
184
  to: tokenAddress,
@@ -1,244 +1,10 @@
1
1
  /**
2
- * Bundle 交易辅助工具
3
- * 提供可复用的 nonce 管理、gas 估算等功能
4
- */
5
- import { ethers, JsonRpcProvider, Wallet } from 'ethers';
6
- import { type GeneratedWallet } from './wallet.js';
7
- /**
8
- * Nonce 管理器
9
- * 用于在 bundle 交易中管理多个钱包的 nonce
10
- *
11
- * 策略:
12
- * 1. 每次获取 nonce 时查询链上状态(使用 'pending' 包含待处理交易)
13
- * 2. 仅在同一批次内维护临时递增缓存
14
- * 3. 不持久化缓存,避免因失败交易导致 nonce 过高
15
- */
16
- export declare class NonceManager {
17
- private provider;
18
- private tempNonceCache;
19
- private chainIdPromise?;
20
- constructor(provider: JsonRpcProvider);
21
- private getChainId;
22
- /**
23
- * 获取下一个可用的 nonce
24
- * @param wallet 钱包对象或地址
25
- * @returns 下一个 nonce
26
- */
27
- getNextNonce(wallet: Wallet | string): Promise<number>;
28
- /**
29
- * 批量获取连续 nonce(推荐用于同一地址的批量交易)
30
- * @param wallet 钱包对象或地址
31
- * @param count 需要的 nonce 数量
32
- * @returns nonce 数组
33
- */
34
- getNextNonceBatch(wallet: Wallet | string, count: number): Promise<number[]>;
35
- /**
36
- * 清空临时缓存(建议在每次 bundle 提交后调用)
37
- */
38
- clearTemp(): void;
39
- /**
40
- * 获取当前临时缓存的 nonce(调试用)
41
- */
42
- getTempCachedNonce(address: string): number | undefined;
43
- /**
44
- * ✅ 批量获取多个不同地址的 nonce(真正的单次 JSON-RPC 批量请求)
45
- * 使用 provider.send 发送批量请求,N 个地址只需 1 次网络往返
46
- * @param wallets 钱包数组
47
- * @returns nonce 数组(顺序与 wallets 对应)
48
- */
49
- getNextNoncesForWallets(wallets: (Wallet | string)[]): Promise<number[]>;
50
- }
51
- /**
52
- * Gas 价格配置
53
- */
54
- export interface GasPriceConfig {
55
- /** 基础 gas price(如果不提供则从链上获取) */
56
- baseGasPrice?: bigint;
57
- /** Gas price 增幅百分比(默认 50,即提高 50%) */
58
- multiplierPercent?: number;
59
- /** 最小 gas price */
60
- minGasPrice?: bigint;
61
- /** 最大 gas price */
62
- maxGasPrice?: bigint;
63
- }
64
- /**
65
- * 获取优化后的 Gas Price
66
- * @param provider Provider 实例
67
- * @param config Gas 配置
68
- * @returns Gas price
69
- */
70
- export declare function getOptimizedGasPrice(provider: JsonRpcProvider, config?: GasPriceConfig): Promise<bigint>;
71
- /**
72
- * Gas 估算配置
73
- */
74
- export interface GasEstimateConfig {
75
- /** Gas limit 安全余量倍数(默认 1.2 = 20%) */
76
- multiplier?: number;
77
- /** 失败时的默认 gas limit */
78
- fallbackGasLimit?: bigint;
79
- /** 是否允许估算失败 */
80
- allowFailure?: boolean;
81
- }
82
- /**
83
- * 估算 gas 并应用安全余量
84
- * @param provider Provider 实例
85
- * @param txRequest 交易请求
86
- * @param config Gas 估算配置
87
- * @returns Gas limit
88
- */
89
- export declare function estimateGasWithSafety(provider: JsonRpcProvider, txRequest: ethers.TransactionLike, config?: GasEstimateConfig): Promise<bigint>;
90
- /**
91
- * 批量估算 gas(并行)
92
- * @param provider Provider 实例
93
- * @param txRequests 交易请求数组
94
- * @param config Gas 估算配置
95
- * @returns Gas limit 数组
96
- */
97
- export declare function estimateGasBatch(provider: JsonRpcProvider, txRequests: ethers.TransactionLike[], config?: GasEstimateConfig): Promise<bigint[]>;
98
- /**
99
- * 构建交易对象
100
- */
101
- export interface BuildTransactionOptions {
102
- from: string;
103
- to?: string;
104
- data?: string;
105
- value?: bigint;
106
- nonce: number;
107
- gasPrice: bigint;
108
- gasLimit: bigint;
109
- chainId: number;
110
- type?: 0 | 2;
111
- }
112
- /**
113
- * 构建标准交易对象
114
- * @param options 交易选项
115
- * @returns 交易对象
116
- */
117
- export declare function buildTransaction(options: BuildTransactionOptions): ethers.TransactionLike;
118
- /**
119
- * 通用配置接口(用于提取公共配置字段)
120
- */
121
- export interface CommonBundleConfig {
122
- gasLimit?: number;
123
- gasLimitMultiplier?: number;
124
- minGasPriceGwei?: number;
125
- maxGasPriceGwei?: number;
126
- txType?: 0 | 2;
127
- chainId?: number;
128
- }
129
- /**
130
- * 获取 Gas Limit
131
- * 优先使用 config.gasLimit,否则使用默认值 * multiplier
132
- */
133
- export declare function getGasLimit(config: CommonBundleConfig, defaultGas?: number): bigint;
134
- /**
135
- * 获取 Gas Price 配置(转换为 GasPriceConfig)
136
- */
137
- export declare function getGasPriceConfig(config: CommonBundleConfig): GasPriceConfig;
138
- /**
139
- * 获取交易类型
140
- */
141
- export declare function getTxType(config: CommonBundleConfig): 0 | 2;
142
- /**
143
- * 根据交易类型构建 gas 字段
144
- * type 0 (Legacy): 使用 gasPrice
145
- * type 2 (EIP-1559): 使用 maxFeePerGas + maxPriorityFeePerGas
146
- *
147
- * BaseWallet.signTransaction -> Transaction.from() 不会自动转换
148
- * gasPrice 到 maxFeePerGas,必须显式传入正确字段
149
- */
150
- export declare function buildGasFields(txType: number, gasPrice: bigint): Record<string, unknown>;
151
- /**
152
- * 获取链 ID(从 provider 或 config)
153
- */
154
- export declare function getChainId(provider: JsonRpcProvider, configChainId?: number): Promise<number>;
155
- /**
156
- * 并行签名多个交易
157
- * @param wallet 钱包
158
- * @param transactions 交易数组
159
- * @returns 已签名的交易数组
160
- */
161
- export declare function signTransactionsBatch(wallet: Wallet, transactions: ethers.TransactionLike[]): Promise<string[]>;
162
- /**
163
- * 批量签名(支持多个钱包)
164
- * @param wallets 钱包数组
165
- * @param transactions 交易数组(必须与钱包一一对应)
166
- * @returns 已签名的交易数组
167
- */
168
- export declare function signTransactionsBatchMultiWallet(wallets: Wallet[], transactions: ethers.TransactionLike[]): Promise<string[]>;
169
- /**
170
- * 验证已签名交易的格式
171
- * @param signedTxs 已签名的交易数组
172
- * @returns 是否全部有效
173
- */
174
- export declare function validateSignedTransactions(signedTxs: string[]): boolean;
175
- /**
176
- * 获取交易 deadline(Unix 时间戳秒)
177
- * @param minutes 有效分钟数,默认 20
178
- * @returns Unix 时间戳(秒)
179
- */
180
- export declare function getDeadline(minutes?: number): number;
181
- /**
182
- * 编码 V3 多跳 path
183
- * 格式:token0 (20 bytes) + fee (3 bytes) + token1 (20 bytes) + fee (3 bytes) + token2 (20 bytes) ...
184
- *
185
- * @param tokens 代币地址数组 [tokenIn, tokenMid1, tokenMid2, ..., tokenOut]
186
- * @param fees 费率数组 [fee0, fee1, ...] - 长度应该是 tokens.length - 1
187
- * @returns 编码后的 path(hex string)
188
- *
189
- * @example
190
- * // WBNB → USDT(500) → TOKEN(2500)
191
- * encodeV3Path(['0xWBNB...', '0xUSDT...', '0xTOKEN...'], [500, 2500])
192
- */
193
- export declare function encodeV3Path(tokens: string[], fees: number[]): string;
194
- /**
195
- * 解码 V3 path 为代币和费率数组
196
- * @param path 编码后的 path
197
- * @returns { tokens, fees }
198
- */
199
- export declare function decodeV3Path(path: string): {
200
- tokens: string[];
201
- fees: number[];
202
- };
203
- /**
204
- * 利润多跳转账配置
205
- */
206
- export interface ProfitHopConfig {
207
- provider: JsonRpcProvider;
208
- payerWallet: Wallet;
209
- profitAmount: bigint;
210
- profitRecipient: string;
211
- hopCount?: number;
212
- gasPrice: bigint;
213
- chainId: number;
214
- txType: number;
215
- startNonce?: number;
216
- }
217
- /**
218
- * 利润多跳结果
219
- */
220
- export interface ProfitHopResult {
221
- signedTransactions: string[];
222
- hopWallets: GeneratedWallet[];
223
- totalNonceUsed: number;
224
- }
225
- /**
226
- * 强制 2 跳的利润转账常量
227
- */
228
- export declare const PROFIT_HOP_COUNT = 2;
229
- /**
230
- * 生成利润转账交易
231
- *
232
- * BSC 链:使用多跳转账
233
- * 流程(2 跳):
234
- * 1. 支付者 → 中转1(gas + 利润 + 中转1的gas)
235
- * 2. 中转1 → 中转2(gas + 利润)
236
- * 3. 中转2 → 利润地址(利润)
237
- *
238
- * 其他链:直接转账到收益地址
239
- * 流程:支付者 → 利润地址
240
- *
241
- * @param config 配置参数
242
- * @returns 签名交易和中转钱包私钥
243
- */
244
- export declare function buildProfitHopTransactions(config: ProfitHopConfig): Promise<ProfitHopResult>;
2
+ * Bundle 交易辅助工具 — 实现已迁至 shared/foundation/
3
+ * 本文件保留 re-export,兼容现有 import 路径。
4
+ */
5
+ export { NonceManager } from '../shared/foundation/nonce/nonce-manager.js';
6
+ export { type GasPriceConfig, type GasEstimateConfig, type BuildTransactionOptions, type CommonBundleConfig, getOptimizedGasPrice, estimateGasWithSafety, estimateGasBatch, buildTransaction, getGasLimit, getGasPriceConfig, getTxType, buildGasFields, } from '../shared/foundation/gas/bundle-gas.js';
7
+ export { type ProfitHopConfig, type ProfitHopResult, PROFIT_HOP_COUNT, buildProfitHopTransactions, } from '../shared/foundation/gas/profit-hop.js';
8
+ export { getChainId, signTransactionsBatch, signTransactionsBatchMultiWallet, validateSignedTransactions, } from '../shared/foundation/tx/sign-batch.js';
9
+ export { getDeadline, encodeV3Path, decodeV3Path } from '../shared/foundation/dex/v3-path.js';
10
+ import '../shared/foundation/tx/wallet-sign-patch.js';