four-flap-meme-sdk 1.9.49 → 2.1.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 (567) 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/__tests__/subpath-exports.test.js +34 -0
  5. package/dist/abis/common.js +74 -68
  6. package/dist/abis/flap/vault.js +9 -7
  7. package/dist/abis/index.d.ts +3 -4
  8. package/dist/abis/index.js +3 -4
  9. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  10. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  11. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  12. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  13. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  14. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  15. package/dist/bundle-core/config-helpers.d.ts +36 -0
  16. package/dist/bundle-core/config-helpers.js +57 -0
  17. package/dist/bundle-core/errors.d.ts +50 -0
  18. package/dist/bundle-core/errors.js +34 -0
  19. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  20. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  21. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  22. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  23. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  24. package/dist/bundle-core/four-meme/core.js +515 -0
  25. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  26. package/dist/{shared 2/flap/portal-bundle-merkle/pancake-proxy.js → bundle-core/four-meme/pancake-proxy.js} +277 -299
  27. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  28. package/dist/bundle-core/four-meme/private.js +465 -0
  29. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  30. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  31. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  32. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  33. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  34. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  35. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  36. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  37. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  38. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  39. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  40. package/dist/{chains/bsc/four/swap/index.js → bundle-core/four-meme/swap.js} +84 -408
  41. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  42. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  43. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  44. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  45. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  46. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  47. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  48. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  49. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  50. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  51. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  52. package/dist/bundle-core/index.d.ts +8 -0
  53. package/dist/bundle-core/index.js +8 -0
  54. package/dist/bundle-core/internal.d.ts +21 -0
  55. package/dist/bundle-core/internal.js +182 -0
  56. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  57. package/dist/bundle-core/sign-context-helpers.js +67 -0
  58. package/dist/bundle-core/submit.d.ts +293 -0
  59. package/dist/bundle-core/submit.js +727 -0
  60. package/dist/bundle-core/types/index.d.ts +8 -0
  61. package/dist/bundle-core/types.d.ts +1 -0
  62. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  63. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -116
  64. package/dist/chains/bsc/four/config.d.ts +5 -70
  65. package/dist/chains/bsc/four/config.js +2 -115
  66. package/dist/chains/bsc/four/core.d.ts +1 -4
  67. package/dist/chains/bsc/four/core.js +1 -589
  68. package/dist/chains/bsc/four/index.d.ts +6 -6
  69. package/dist/chains/bsc/four/index.js +6 -6
  70. package/dist/chains/bsc/four/internal.d.ts +2 -50
  71. package/dist/chains/bsc/four/internal.js +2 -237
  72. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  73. package/dist/chains/bsc/four/pancake-proxy.js +1 -688
  74. package/dist/chains/bsc/four/private.d.ts +1 -27
  75. package/dist/chains/bsc/four/private.js +1 -477
  76. package/dist/chains/bsc/four/submit.d.ts +2 -315
  77. package/dist/chains/bsc/four/submit.js +2 -746
  78. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  79. package/dist/chains/bsc/four/swap-buy-first.js +2 -506
  80. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  81. package/dist/chains/bsc/four/swap-internal.js +1 -18
  82. package/dist/chains/bsc/four/swap.d.ts +2 -144
  83. package/dist/chains/bsc/four/swap.js +2 -760
  84. package/dist/chains/bsc/four/types.d.ts +1 -476
  85. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  86. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  87. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  88. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  89. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  90. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  91. package/dist/chains/bsc/four/utils.d.ts +5 -18
  92. package/dist/chains/bsc/four/utils.js +5 -1534
  93. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  94. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  95. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  96. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -207
  97. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  98. package/dist/chains/bsc/pancake/{bundle-swap/helpers.js → bundle-swap-helpers.js} +63 -70
  99. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  100. package/dist/chains/bsc/pancake/bundle-swap.js +111 -686
  101. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  102. package/dist/chains/bsc/pancake/index.js +1 -3
  103. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  104. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  105. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  106. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  107. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  108. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  109. package/dist/chains/eni/batch-router/transfer.js +54 -23
  110. package/dist/chains/eni/batch-router/utils.js +32 -6
  111. package/dist/chains/eni/bundler/sign.js +4 -4
  112. package/dist/chains/eni/bundler/submit.js +1 -4
  113. package/dist/chains/eni/constants.js +1 -1
  114. package/dist/chains/eni/index.d.ts +1 -1
  115. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  116. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  117. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  118. package/dist/chains/eni/platforms/daoaas/meta.js +8 -4
  119. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -43
  120. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  121. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  122. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  123. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  124. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -47
  125. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  126. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  127. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  128. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  129. package/dist/chains/eni/platforms/iro/index.js +4 -4
  130. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  131. package/dist/chains/eni/platforms/iro/token.js +107 -31
  132. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  133. package/dist/chains/eni/submit.js +5 -13
  134. package/dist/chains/index.d.ts +13 -0
  135. package/dist/chains/index.js +13 -0
  136. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  137. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -20
  138. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  139. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  140. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -56
  141. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  142. package/dist/chains/xlayer/eip7702/bundle-sell.js +26 -74
  143. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  144. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -68
  145. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  146. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  147. package/dist/chains/xlayer/eip7702/index.d.ts +29 -46
  148. package/dist/chains/xlayer/eip7702/index.js +27 -81
  149. package/dist/chains/xlayer/eip7702/{multi-hop-transfer/types.d.ts → multi-hop-transfer-helpers.d.ts} +17 -23
  150. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  151. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +58 -291
  152. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  153. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  154. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  155. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  156. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  157. package/dist/chains/xlayer/eip7702/{volume/types.d.ts → volume-helpers.d.ts} +41 -17
  158. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  159. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  160. package/dist/chains/xlayer/eip7702/volume.js +83 -158
  161. package/dist/chains/xlayer/eoa/constants.js +1 -1
  162. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  163. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  164. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  165. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  166. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +64 -276
  167. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  168. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +14 -14
  169. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  170. package/dist/chains/xlayer/eoa/index.js +8 -23
  171. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  172. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  173. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  174. package/dist/chains/xlayer/eoa/types.js +1 -3
  175. package/dist/contracts/helper3.d.ts +20 -17
  176. package/dist/contracts/helper3.js +56 -20
  177. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  178. package/dist/contracts/tm-bundle-helpers.js +72 -0
  179. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  180. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -117
  181. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -70
  182. package/dist/contracts/tm-bundle-merkle/config.js +2 -115
  183. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  184. package/dist/contracts/tm-bundle-merkle/core.js +1 -588
  185. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  186. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  187. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -50
  188. package/dist/contracts/tm-bundle-merkle/internal.js +2 -236
  189. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  190. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -687
  191. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  192. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  193. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  194. package/dist/contracts/tm-bundle-merkle/submit.js +3 -919
  195. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  196. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -505
  197. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  198. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  199. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  200. package/dist/contracts/tm-bundle-merkle/swap.js +2 -757
  201. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  202. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  203. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  204. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  205. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  206. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  207. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  208. package/dist/contracts/tm-bundle-merkle/utils.d.ts +5 -6
  209. package/dist/contracts/tm-bundle-merkle/utils.js +5 -6
  210. package/dist/contracts/tm-bundle.d.ts +3 -51
  211. package/dist/contracts/tm-bundle.js +102 -142
  212. package/dist/contracts/tm.d.ts +3 -2
  213. package/dist/contracts/tm.js +36 -32
  214. package/dist/contracts/tm1.js +9 -4
  215. package/dist/contracts/tm2.js +9 -4
  216. package/dist/dex/direct-router-helpers.d.ts +264 -0
  217. package/dist/dex/direct-router-helpers.js +539 -0
  218. package/dist/dex/direct-router.d.ts +3 -125
  219. package/dist/dex/direct-router.js +237 -652
  220. package/dist/dex/{direct-router/types.d.ts → types.d.ts} +1 -1
  221. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  222. package/dist/exports/root-bundle-and-tooling.js +30 -0
  223. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  224. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  225. package/dist/exports/root-foundations.d.ts +35 -0
  226. package/dist/exports/root-foundations.js +70 -0
  227. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  228. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  229. package/dist/flap/index.d.ts +10 -0
  230. package/dist/flap/index.js +8 -0
  231. package/dist/flows/create.d.ts +2 -2
  232. package/dist/flows/create.js +6 -6
  233. package/dist/flows/index.d.ts +1 -0
  234. package/dist/flows/index.js +1 -0
  235. package/dist/index.d.ts +20 -91
  236. package/dist/index.js +20 -215
  237. package/dist/shared/abis/common.d.ts +2 -83
  238. package/dist/shared/abis/common.js +2 -252
  239. package/dist/shared/abis/index.d.ts +5 -6
  240. package/dist/shared/abis/index.js +5 -7
  241. package/dist/shared/clients/blockrazor.js +41 -24
  242. package/dist/shared/clients/club48.js +30 -26
  243. package/dist/shared/clients/emitservice.js +2 -0
  244. package/dist/shared/clients/four.js +23 -18
  245. package/dist/shared/clients/index.d.ts +8 -0
  246. package/dist/shared/clients/index.js +8 -0
  247. package/dist/shared/clients/merkle.js +26 -30
  248. package/dist/shared/constants/addresses.d.ts +1 -1
  249. package/dist/shared/constants/addresses.js +11 -2
  250. package/dist/shared/constants/chains.d.ts +1 -1
  251. package/dist/shared/constants/chains.js +1 -1
  252. package/dist/shared/constants/gas.d.ts +1 -1
  253. package/dist/shared/constants/gas.js +2 -6
  254. package/dist/shared/constants/index.d.ts +3 -0
  255. package/dist/shared/constants/index.js +1 -0
  256. package/dist/shared/constants/quote.d.ts +30 -0
  257. package/dist/shared/constants/quote.js +37 -0
  258. package/dist/shared/flap/abi.js +1 -1
  259. package/dist/shared/flap/constants.d.ts +1 -1
  260. package/dist/shared/flap/constants.js +2 -2
  261. package/dist/shared/flap/curve.js +3 -0
  262. package/dist/shared/flap/errors.d.ts +1 -4
  263. package/dist/shared/flap/errors.js +21 -3
  264. package/dist/shared/flap/index.d.ts +2 -2
  265. package/dist/shared/flap/index.js +2 -2
  266. package/dist/shared/flap/meta.d.ts +16 -18
  267. package/dist/shared/flap/meta.js +14 -26
  268. package/dist/shared/flap/permit.js +6 -5
  269. package/dist/shared/flap/pinata.d.ts +9 -2
  270. package/dist/shared/flap/pinata.js +20 -18
  271. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  272. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  273. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  274. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  275. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  276. package/dist/shared/flap/portal-bundle-merkle/core.js +66 -156
  277. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +81 -86
  278. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  279. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  280. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  281. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  282. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  283. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  284. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  285. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  286. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  287. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  288. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  289. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  290. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  291. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +73 -3
  292. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  293. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  294. package/dist/shared/flap/portal-bundle.js +54 -42
  295. package/dist/shared/flap/portal.js +32 -10
  296. package/dist/shared/flap/vanity.js +4 -7
  297. package/dist/shared/flap/vault.d.ts +1 -1
  298. package/dist/shared/flap/vault.js +54 -48
  299. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  300. package/dist/shared/foundation/dex/v3-path.js +35 -0
  301. package/dist/shared/foundation/gas/bundle-gas.d.ts +39 -0
  302. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  303. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  304. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  305. package/dist/shared/foundation/index.d.ts +13 -0
  306. package/dist/shared/foundation/index.js +12 -0
  307. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  308. package/dist/shared/foundation/nonce/nonce-manager.js +180 -0
  309. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  310. package/dist/shared/foundation/normalize-unknown.js +29 -0
  311. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  312. package/dist/shared/foundation/sdk-logger.js +12 -0
  313. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  314. package/dist/shared/foundation/tx/build-request.js +25 -0
  315. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  316. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  317. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  318. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  319. package/dist/{utils/erc20/types.d.ts → shared/foundation/types/erc20.d.ts} +7 -19
  320. package/dist/{utils/holders-maker/types.d.ts → shared/foundation/types/holders-maker.d.ts} +4 -12
  321. package/dist/shared/foundation/types/index.d.ts +7 -0
  322. package/dist/{utils/lp-inspect/types.d.ts → shared/foundation/types/lp-inspect.d.ts} +4 -2
  323. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  324. package/dist/shared/foundation/types/multicall.js +1 -0
  325. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  326. package/dist/shared/foundation/types/private-sale.js +1 -0
  327. package/dist/{utils/quote-helpers/types.d.ts → shared/foundation/types/quote-helpers.d.ts} +1 -0
  328. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  329. package/dist/shared/four/tax-token.d.ts +1 -1
  330. package/dist/shared/four/tax-token.js +27 -7
  331. package/dist/shared/index.d.ts +6 -0
  332. package/dist/shared/index.js +4 -0
  333. package/dist/utils/airdrop-sweep.d.ts +4 -76
  334. package/dist/utils/airdrop-sweep.js +38 -52
  335. package/dist/utils/bundle-helpers.d.ts +9 -243
  336. package/dist/utils/bundle-helpers.js +10 -584
  337. package/dist/utils/constants.d.ts +5 -61
  338. package/dist/utils/constants.js +5 -80
  339. package/dist/utils/contract-factory.d.ts +2 -4
  340. package/dist/utils/contract-factory.js +25 -18
  341. package/dist/utils/erc20.d.ts +8 -90
  342. package/dist/utils/erc20.js +94 -153
  343. package/dist/utils/errors.d.ts +10 -22
  344. package/dist/utils/errors.js +61 -79
  345. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  346. package/dist/utils/holders-maker/addresses.js +15 -0
  347. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  348. package/dist/utils/holders-maker/buy-tx.js +278 -0
  349. package/dist/utils/holders-maker/constants.d.ts +6 -0
  350. package/dist/utils/holders-maker/constants.js +7 -0
  351. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  352. package/dist/utils/holders-maker/disperse.js +90 -0
  353. package/dist/utils/holders-maker/routing.d.ts +4 -0
  354. package/dist/utils/holders-maker/routing.js +45 -0
  355. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  356. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  357. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  358. package/dist/utils/holders-maker-helpers.js +9 -0
  359. package/dist/utils/holders-maker.d.ts +2 -138
  360. package/dist/utils/holders-maker.js +23 -651
  361. package/dist/utils/hop-chains.d.ts +35 -0
  362. package/dist/utils/hop-chains.js +215 -0
  363. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  364. package/dist/utils/lp-inspect-helpers.js +109 -0
  365. package/dist/utils/lp-inspect.d.ts +2 -112
  366. package/dist/utils/lp-inspect.js +63 -195
  367. package/dist/utils/mpcExclusive.d.ts +2 -5
  368. package/dist/utils/mpcExclusive.js +4 -3
  369. package/dist/utils/private-sale.d.ts +2 -58
  370. package/dist/utils/private-sale.js +2 -7
  371. package/dist/utils/provider-factory.d.ts +4 -0
  372. package/dist/utils/provider-factory.js +10 -0
  373. package/dist/utils/quote-helpers.d.ts +4 -45
  374. package/dist/utils/quote-helpers.js +15 -65
  375. package/dist/utils/stealth-transfer.d.ts +2 -28
  376. package/dist/utils/stealth-transfer.js +30 -14
  377. package/dist/utils/swap-helpers.d.ts +0 -3
  378. package/dist/utils/swap-helpers.js +6 -9
  379. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  380. package/dist/utils/types/airdrop-sweep.js +1 -0
  381. package/dist/utils/types/contract-factory.d.ts +1 -0
  382. package/dist/utils/types/contract-factory.js +1 -0
  383. package/dist/utils/types/erc20.d.ts +1 -0
  384. package/dist/utils/types/erc20.js +1 -0
  385. package/dist/utils/types/errors.d.ts +1 -0
  386. package/dist/utils/types/errors.js +1 -0
  387. package/dist/utils/types/holders-maker.d.ts +1 -0
  388. package/dist/utils/types/holders-maker.js +1 -0
  389. package/dist/utils/types/hop-chains.d.ts +8 -0
  390. package/dist/utils/types/hop-chains.js +1 -0
  391. package/dist/utils/types/index.d.ts +13 -0
  392. package/dist/utils/types/index.js +1 -0
  393. package/dist/utils/types/lp-inspect.d.ts +1 -0
  394. package/dist/utils/types/lp-inspect.js +1 -0
  395. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  396. package/dist/utils/types/mpc-exclusive.js +1 -0
  397. package/dist/utils/types/private-sale.d.ts +1 -0
  398. package/dist/utils/types/private-sale.js +1 -0
  399. package/dist/utils/types/quote-helpers.d.ts +1 -0
  400. package/dist/utils/types/quote-helpers.js +1 -0
  401. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  402. package/dist/utils/types/stealth-transfer.js +1 -0
  403. package/dist/utils/types/wallet.d.ts +25 -0
  404. package/dist/utils/types/wallet.js +1 -0
  405. package/dist/utils/wallet.d.ts +2 -25
  406. package/dist/utils/wallet.js +9 -10
  407. package/package.json +120 -2
  408. package/src/abis/contracts/TaxToken.json +969 -0
  409. package/src/abis/contracts/TokenManager.json +836 -0
  410. package/src/abis/contracts/TokenManager2.json +136 -0
  411. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  412. package/dist/chains/bsc/four/submit/blockrazor.d.ts +0 -18
  413. package/dist/chains/bsc/four/submit/blockrazor.js +0 -86
  414. package/dist/chains/bsc/four/submit/direct.d.ts +0 -66
  415. package/dist/chains/bsc/four/submit/direct.js +0 -452
  416. package/dist/chains/bsc/four/submit/helpers.d.ts +0 -18
  417. package/dist/chains/bsc/four/submit/helpers.js +0 -57
  418. package/dist/chains/bsc/four/submit/index.d.ts +0 -12
  419. package/dist/chains/bsc/four/submit/index.js +0 -11
  420. package/dist/chains/bsc/four/submit/merkle.d.ts +0 -18
  421. package/dist/chains/bsc/four/submit/merkle.js +0 -74
  422. package/dist/chains/bsc/four/submit/types.d.ts +0 -143
  423. package/dist/chains/bsc/four/swap/index.d.ts +0 -32
  424. package/dist/chains/bsc/four/swap/types.d.ts +0 -70
  425. package/dist/chains/bsc/four/utils/index.d.ts +0 -20
  426. package/dist/chains/bsc/four/utils/index.js +0 -1558
  427. package/dist/chains/bsc/pancake/bundle-buy-first/index.d.ts +0 -8
  428. package/dist/chains/bsc/pancake/bundle-buy-first/index.js +0 -907
  429. package/dist/chains/bsc/pancake/bundle-buy-first/types.d.ts +0 -73
  430. package/dist/chains/bsc/pancake/bundle-swap/helpers.d.ts +0 -102
  431. package/dist/chains/bsc/pancake/bundle-swap/index.d.ts +0 -50
  432. package/dist/chains/bsc/pancake/bundle-swap/index.js +0 -1066
  433. package/dist/chains/bsc/pancake/bundle-swap/types.d.ts +0 -202
  434. package/dist/chains/bsc/pancake/bundle-swap/types.js +0 -3
  435. package/dist/chains/xlayer/eip7702/bundle-swap/index.d.ts +0 -72
  436. package/dist/chains/xlayer/eip7702/bundle-swap/index.js +0 -921
  437. package/dist/chains/xlayer/eip7702/bundle-swap/types.d.ts +0 -65
  438. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.d.ts +0 -128
  439. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.js +0 -857
  440. package/dist/chains/xlayer/eip7702/volume/index.d.ts +0 -96
  441. package/dist/chains/xlayer/eip7702/volume/index.js +0 -793
  442. package/dist/dex/direct-router/index.d.ts +0 -70
  443. package/dist/dex/direct-router/index.js +0 -1410
  444. package/dist/shared/abis/TaxToken.json +0 -969
  445. package/dist/shared/abis/TokenManager.json +0 -836
  446. package/dist/shared/abis/TokenManager2.json +0 -136
  447. package/dist/shared/abis/TokenManagerHelper3.json +0 -993
  448. package/dist/shared/flap/__tests__/curve.test.js +0 -85
  449. package/dist/shared/flap/portal/index.d.ts +0 -12
  450. package/dist/shared/flap/portal/index.js +0 -11
  451. package/dist/shared/flap/portal/portal.d.ts +0 -47
  452. package/dist/shared/flap/portal/portal.js +0 -218
  453. package/dist/shared/flap/portal/types.d.ts +0 -227
  454. package/dist/shared/flap/portal/types.js +0 -80
  455. package/dist/shared/flap/portal/writer.d.ts +0 -121
  456. package/dist/shared/flap/portal/writer.js +0 -265
  457. package/dist/shared/flap/portal-bundle-merkle/core/index.d.ts +0 -18
  458. package/dist/shared/flap/portal-bundle-merkle/core/index.js +0 -938
  459. package/dist/shared/flap/portal-bundle-merkle/swap/index.d.ts +0 -42
  460. package/dist/shared/flap/portal-bundle-merkle/swap/index.js +0 -1448
  461. package/dist/shared/flap/portal-bundle-merkle/swap/types.d.ts +0 -84
  462. package/dist/shared/flap/portal-bundle-merkle/utils/index.d.ts +0 -17
  463. package/dist/shared/flap/portal-bundle-merkle/utils/index.js +0 -1024
  464. package/dist/shared/flap/portal-bundle-merkle/utils/types.d.ts +0 -16
  465. package/dist/shared 2/abis/TaxToken.json +0 -105
  466. package/dist/shared 2/abis/TokenManager.json +0 -836
  467. package/dist/shared 2/abis/TokenManager2.json +0 -60
  468. package/dist/shared 2/abis/TokenManagerHelper3.json +0 -993
  469. package/dist/shared 2/abis/common.d.ts +0 -85
  470. package/dist/shared 2/abis/common.js +0 -254
  471. package/dist/shared 2/abis/index.d.ts +0 -8
  472. package/dist/shared 2/abis/index.js +0 -8
  473. package/dist/shared 2/clients/blockrazor.d.ts +0 -314
  474. package/dist/shared 2/clients/blockrazor.js +0 -596
  475. package/dist/shared 2/clients/club48.d.ts +0 -154
  476. package/dist/shared 2/clients/club48.js +0 -331
  477. package/dist/shared 2/clients/emitservice.d.ts +0 -47
  478. package/dist/shared 2/clients/emitservice.js +0 -44
  479. package/dist/shared 2/clients/four.d.ts +0 -132
  480. package/dist/shared 2/clients/four.js +0 -281
  481. package/dist/shared 2/clients/merkle.d.ts +0 -210
  482. package/dist/shared 2/clients/merkle.js +0 -400
  483. package/dist/shared 2/flap/__tests__/curve.test.js +0 -85
  484. package/dist/shared 2/flap/abi.d.ts +0 -4
  485. package/dist/shared 2/flap/abi.js +0 -4
  486. package/dist/shared 2/flap/constants.d.ts +0 -128
  487. package/dist/shared 2/flap/constants.js +0 -143
  488. package/dist/shared 2/flap/curve.d.ts +0 -33
  489. package/dist/shared 2/flap/curve.js +0 -84
  490. package/dist/shared 2/flap/errors.d.ts +0 -37
  491. package/dist/shared 2/flap/errors.js +0 -114
  492. package/dist/shared 2/flap/index.d.ts +0 -22
  493. package/dist/shared 2/flap/index.js +0 -33
  494. package/dist/shared 2/flap/ipfs.d.ts +0 -21
  495. package/dist/shared 2/flap/ipfs.js +0 -38
  496. package/dist/shared 2/flap/meta.d.ts +0 -30
  497. package/dist/shared 2/flap/meta.js +0 -195
  498. package/dist/shared 2/flap/permit.d.ts +0 -16
  499. package/dist/shared 2/flap/permit.js +0 -67
  500. package/dist/shared 2/flap/pinata.d.ts +0 -40
  501. package/dist/shared 2/flap/pinata.js +0 -106
  502. package/dist/shared 2/flap/portal-bundle-merkle/config.d.ts +0 -79
  503. package/dist/shared 2/flap/portal-bundle-merkle/config.js +0 -133
  504. package/dist/shared 2/flap/portal-bundle-merkle/core.d.ts +0 -18
  505. package/dist/shared 2/flap/portal-bundle-merkle/core.js +0 -938
  506. package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.d.ts +0 -125
  507. package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.js +0 -665
  508. package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -88
  509. package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.js +0 -446
  510. package/dist/shared 2/flap/portal-bundle-merkle/index.d.ts +0 -14
  511. package/dist/shared 2/flap/portal-bundle-merkle/index.js +0 -26
  512. package/dist/shared 2/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -28
  513. package/dist/shared 2/flap/portal-bundle-merkle/private.d.ts +0 -17
  514. package/dist/shared 2/flap/portal-bundle-merkle/private.js +0 -549
  515. package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
  516. package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.js +0 -831
  517. package/dist/shared 2/flap/portal-bundle-merkle/swap.d.ts +0 -201
  518. package/dist/shared 2/flap/portal-bundle-merkle/swap.js +0 -1359
  519. package/dist/shared 2/flap/portal-bundle-merkle/types.d.ts +0 -358
  520. package/dist/shared 2/flap/portal-bundle-merkle/utils.d.ts +0 -89
  521. package/dist/shared 2/flap/portal-bundle-merkle/utils.js +0 -963
  522. package/dist/shared 2/flap/portal-bundle.d.ts +0 -119
  523. package/dist/shared 2/flap/portal-bundle.js +0 -584
  524. package/dist/shared 2/flap/portal.d.ts +0 -392
  525. package/dist/shared 2/flap/portal.js +0 -559
  526. package/dist/shared 2/flap/vanity.d.ts +0 -48
  527. package/dist/shared 2/flap/vanity.js +0 -110
  528. package/dist/shared 2/flap/vault.d.ts +0 -240
  529. package/dist/shared 2/flap/vault.js +0 -366
  530. package/dist/shared 2/four/index.d.ts +0 -7
  531. package/dist/shared 2/four/index.js +0 -22
  532. package/dist/shared 2/four/tax-token.d.ts +0 -176
  533. package/dist/shared 2/four/tax-token.js +0 -302
  534. package/dist/shared 2/index.d.ts +0 -10
  535. package/dist/shared 2/index.js +0 -10
  536. package/dist/utils/__tests__/errors.test.js +0 -76
  537. package/dist/utils/erc20/index.d.ts +0 -242
  538. package/dist/utils/erc20/index.js +0 -645
  539. package/dist/utils/holders-maker/helpers.d.ts +0 -43
  540. package/dist/utils/holders-maker/helpers.js +0 -371
  541. package/dist/utils/holders-maker/index.d.ts +0 -26
  542. package/dist/utils/holders-maker/index.js +0 -218
  543. package/dist/utils/holders-maker/types.js +0 -4
  544. package/dist/utils/lp-inspect/index.d.ts +0 -44
  545. package/dist/utils/lp-inspect/index.js +0 -937
  546. package/dist/utils/quote-helpers/index.d.ts +0 -107
  547. package/dist/utils/quote-helpers/index.js +0 -346
  548. /package/dist/{chains/bsc/four/submit/types.js → __tests__/subpath-exports.test.d.ts} +0 -0
  549. /package/dist/{chains/bsc/four/swap/types.js → bundle-core/__tests__/config-helpers.test.d.ts} +0 -0
  550. /package/dist/{chains/bsc/four/utils/types.d.ts → bundle-core/__tests__/facade-parity.test.d.ts} +0 -0
  551. /package/dist/{chains/bsc/four/utils/types.js → bundle-core/__tests__/sign-context-helpers.test.d.ts} +0 -0
  552. /package/dist/{chains/bsc/pancake/bundle-buy-first/types.js → bundle-core/__tests__/sign-fixture.test.d.ts} +0 -0
  553. /package/dist/{chains/xlayer/eip7702/multi-hop-transfer/types.js → bundle-core/four-meme/types/buy-first.js} +0 -0
  554. /package/dist/{chains/xlayer/eip7702/volume/types.js → bundle-core/four-meme/types/core-flow.js} +0 -0
  555. /package/dist/{dex/direct-router/types.js → bundle-core/four-meme/types/index.js} +0 -0
  556. /package/dist/{shared 2/flap/__tests__/curve.test.d.ts → bundle-core/four-meme/types/swap-internal.js} +0 -0
  557. /package/dist/{chains/xlayer/eip7702/bundle-swap → bundle-core/four-meme}/types.js +0 -0
  558. /package/dist/{shared/flap/__tests__/curve.test.d.ts → bundle-core/types/index.js} +0 -0
  559. /package/dist/{shared 2/flap/portal-bundle-merkle → bundle-core}/types.js +0 -0
  560. /package/dist/{shared/flap/portal-bundle-merkle/core/types.d.ts → chains/xlayer/eip7702/multi-hop-transfer-helpers.js} +0 -0
  561. /package/dist/{shared/flap/portal-bundle-merkle/core → dex}/types.js +0 -0
  562. /package/dist/shared/{flap/portal-bundle-merkle/swap/types.js → foundation/tx/wallet-sign-patch.d.ts} +0 -0
  563. /package/dist/shared/{flap/portal-bundle-merkle/utils/types.js → foundation/types/airdrop-sweep.js} +0 -0
  564. /package/dist/{utils/__tests__/errors.test.d.ts → shared/foundation/types/erc20.js} +0 -0
  565. /package/dist/{utils/erc20/types.js → shared/foundation/types/holders-maker.js} +0 -0
  566. /package/dist/{utils/lp-inspect/types.js → shared/foundation/types/index.js} +0 -0
  567. /package/dist/{utils/quote-helpers/types.js → shared/foundation/types/lp-inspect.js} +0 -0
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 空投分散 / 归集(airdrop-sweep)— 类型定义
3
+ */
4
+ import type { SoulPointSignatureMode, VNormalizationMode } from '../../clients/club48.js';
5
+ export type BundleSubmitResult = {
6
+ bundleUuid: string;
7
+ signedTxs: string[];
8
+ };
9
+ export type SignedTransactionsResult = {
10
+ signedTransactions: string[];
11
+ };
12
+ export type AirdropDisperseParams = {
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
+ export type AirdropDisperseSignParams = {
30
+ rpcUrl: string;
31
+ chainId: number;
32
+ fromPrivateKey: string;
33
+ recipients: string[];
34
+ amount?: string;
35
+ amounts?: string[];
36
+ tokenAddress?: string;
37
+ gasPriceGwei?: string;
38
+ transferGasLimit?: bigint;
39
+ nativeGasLimit?: bigint;
40
+ };
41
+ export type AirdropSweepParams = {
42
+ rpcUrl: string;
43
+ chainId: number;
44
+ sourcePrivateKeys: string[];
45
+ target: string;
46
+ ratioPct?: number;
47
+ amount?: string;
48
+ tokenAddress?: string;
49
+ bundleEndpoint?: string;
50
+ gasPriceGwei?: string;
51
+ transferGasLimit?: bigint;
52
+ nativeGasLimit?: bigint;
53
+ blockOffset?: number;
54
+ skipIfInsufficient?: boolean;
55
+ spMode?: SoulPointSignatureMode;
56
+ spPrivateKey?: string;
57
+ spVMode?: VNormalizationMode;
58
+ };
59
+ export type AirdropSweepSignParams = {
60
+ rpcUrl: string;
61
+ chainId: number;
62
+ sourcePrivateKeys: string[];
63
+ target: string;
64
+ ratioPct?: number;
65
+ amount?: string;
66
+ tokenAddress?: string;
67
+ gasPriceGwei?: string;
68
+ transferGasLimit?: bigint;
69
+ nativeGasLimit?: bigint;
70
+ skipIfInsufficient?: boolean;
71
+ };
72
+ /** @deprecated 使用 `AirdropDisperseParams` */
73
+ export type DisperseParams = AirdropDisperseParams;
74
+ /** @deprecated 使用 `AirdropDisperseSignParams` */
75
+ export type DisperseSignParams = AirdropDisperseSignParams;
76
+ /** @deprecated 使用 `AirdropSweepParams` */
77
+ export type SweepParams = AirdropSweepParams;
78
+ /** @deprecated 使用 `AirdropSweepSignParams` */
79
+ export type SweepSignParams = AirdropSweepSignParams;
@@ -1,9 +1,14 @@
1
- import type { NonceManager } from '../bundle-helpers.js';
1
+ import type { ContractTransactionReceipt } from 'ethers';
2
+ import type { NonceManager } from '../nonce/nonce-manager.js';
2
3
  export type EnsureAllowanceResult = {
4
+ /** 是否已经授权 */
3
5
  alreadyApproved: boolean;
6
+ /** 当前授权额度 */
4
7
  currentAllowance: bigint;
8
+ /** 需要的授权额度 */
5
9
  requiredAllowance: bigint;
6
- txReceipt?: any;
10
+ /** 授权交易回执(如果发送了新交易) */
11
+ txReceipt?: ContractTransactionReceipt | null;
7
12
  };
8
13
  export type EnsureAllowanceBatchItemResult = EnsureAllowanceResult & {
9
14
  owner: string;
@@ -15,15 +20,10 @@ export type ApproveTokenBatchParams = {
15
20
  privateKeys: string[];
16
21
  tokenAddress: string;
17
22
  amounts: (bigint | 'max')[];
18
- /** 是否只签名不提交(默认 false,直接发送交易) */
19
23
  signOnly?: boolean;
20
- /** Gas Price(可选,单位 Gwei,signOnly=true 时生效) */
21
24
  gasPriceGwei?: number;
22
- /** Gas Limit(可选,默认 100000,signOnly=true 时生效) */
23
25
  gasLimit?: number;
24
- /** 链ID(可选,默认56=BSC,signOnly=true 时生效) */
25
26
  chainId?: number;
26
- /** 跳过合约地址验证(可选,用于某些特殊场景) */
27
27
  skipValidation?: boolean;
28
28
  };
29
29
  export type ApproveTokenBatchRawParams = {
@@ -32,17 +32,11 @@ export type ApproveTokenBatchRawParams = {
32
32
  tokenAddress: string;
33
33
  spenderAddress: string;
34
34
  amounts: (bigint | 'max')[];
35
- /** 是否只签名不提交(默认 false,直接发送交易) */
36
35
  signOnly?: boolean;
37
- /** Gas Price(可选,单位 Gwei,signOnly=true 时生效) */
38
36
  gasPriceGwei?: number;
39
- /** Gas Limit(可选,默认 100000,signOnly=true 时生效) */
40
37
  gasLimit?: number;
41
- /** 链ID(可选,默认56=BSC,signOnly=true 时生效) */
42
38
  chainId?: number;
43
- /** 外部 NonceManager(可选,用于同一钱包签多笔交易时共享 nonce 状态) */
44
39
  nonceManager?: NonceManager;
45
- /** 跳过合约地址验证(可选,用于某些特殊场景,如 RPC 返回异常时) */
46
40
  skipValidation?: boolean;
47
41
  };
48
42
  export type ApproveTokenBatchResult = {
@@ -58,20 +52,14 @@ export type ApproveTokenBatchResult = {
58
52
  }>;
59
53
  };
60
54
  export type ApproveTokenBatchSignResult = {
61
- /** 需要授权的签名交易数组(已过滤掉已授权的钱包) */
62
55
  signedTransactions: string[];
63
- /** 详细结果 */
64
56
  results: Array<{
65
57
  owner: string;
66
- /** 是否已授权(无需发送交易) */
67
58
  alreadyApproved: boolean;
68
59
  currentAllowance: bigint;
69
60
  requiredAllowance: bigint;
70
- /** 签名交易(仅当 alreadyApproved=false 时有值) */
71
61
  signedTx?: string;
72
62
  }>;
73
- /** 需要授权的钱包数量 */
74
63
  needApproveCount: number;
75
- /** 已授权的钱包数量 */
76
64
  alreadyApprovedCount: number;
77
65
  };
@@ -1,19 +1,15 @@
1
1
  /**
2
- * 刷持有人(Holders Maker)类型定义
2
+ * 刷持有人 - 类型定义
3
3
  */
4
- import type { GeneratedWallet } from '../wallet.js';
5
- /** 链类型 */
4
+ import type { GeneratedWallet } from '../../../utils/wallet.js';
6
5
  export type HoldersMakerChain = 'BSC' | 'MONAD' | 'XLAYER' | 'ENI';
7
- /** 交易类型 */
8
- export type TradeType = 'four' | 'flap' | 'v2' | 'v3' | 'daoaas';
9
- /** 基础代币类型 */
6
+ export type HoldersMakerTradeType = 'four' | 'flap' | 'v2' | 'v3' | 'daoaas';
10
7
  export type BaseTokenType = 'native' | 'usdt' | 'usdc';
11
- /** 刷持有人配置 */
12
8
  export type HoldersMakerConfig = {
13
9
  rpcUrl: string;
14
10
  chain?: HoldersMakerChain;
15
11
  chainId?: number;
16
- tradeType?: TradeType;
12
+ tradeType?: HoldersMakerTradeType;
17
13
  gasLimit?: number;
18
14
  gasPriceGwei?: number;
19
15
  bribeAmount?: number;
@@ -28,7 +24,6 @@ export type HoldersMakerConfig = {
28
24
  v3Tokens?: string[];
29
25
  v2RouterAddress?: string;
30
26
  };
31
- /** 刷持有人参数 */
32
27
  export type HoldersMakerParams = {
33
28
  payerPrivateKey: string;
34
29
  holdersCount: number;
@@ -39,14 +34,12 @@ export type HoldersMakerParams = {
39
34
  baseTokenDecimals?: number;
40
35
  config: HoldersMakerConfig;
41
36
  };
42
- /** 交易层级(用于按依赖顺序广播) */
43
37
  export type TransactionLayer = {
44
38
  name: string;
45
39
  startIndex: number;
46
40
  endIndex: number;
47
41
  count: number;
48
42
  };
49
- /** 批次结果 */
50
43
  export type BatchResult = {
51
44
  batchIndex: number;
52
45
  success: boolean;
@@ -57,7 +50,6 @@ export type BatchResult = {
57
50
  transactionLayers?: TransactionLayer[];
58
51
  disperseHopCount?: number;
59
52
  };
60
- /** 刷持有人结果 */
61
53
  export type HoldersMakerResult = {
62
54
  success: boolean;
63
55
  newWallets: GeneratedWallet[];
@@ -0,0 +1,7 @@
1
+ export type { Aggregate3CallResult } from './multicall.js';
2
+ export type { EnsureAllowanceResult, EnsureAllowanceBatchItemResult, ApproveTokenBatchParams, ApproveTokenBatchRawParams, ApproveTokenBatchResult, ApproveTokenBatchSignResult, } from './erc20.js';
3
+ export type { HoldersMakerChain, HoldersMakerTradeType, BaseTokenType, HoldersMakerConfig, HoldersMakerParams, TransactionLayer, BatchResult, HoldersMakerResult, } from './holders-maker.js';
4
+ export type { DexConfig, ChainDexConfig, PoolPairInfo, V3PoolInfo, DexPoolInfo, BestPoolInfo, LPPlatform, LPInfo, InspectOptions, } from './lp-inspect.js';
5
+ export type { BundleSubmitResult, SignedTransactionsResult, AirdropDisperseParams, AirdropDisperseSignParams, AirdropSweepParams, AirdropSweepSignParams, DisperseParams, DisperseSignParams, SweepParams, SweepSignParams, } from './airdrop-sweep.js';
6
+ export type { PrivateSaleSignConfig, PrivateSaleTransferParams, BatchPrivateSaleParams, PrivateSaleResult, } from './private-sale.js';
7
+ export type { SupportedChain, QuoteParams, QuoteResult } from './quote-helpers.js';
@@ -1,3 +1,7 @@
1
+ /**
2
+ * LP 查询 - 类型定义
3
+ */
4
+ import type { FlapChain } from '../../flap/portal.js';
1
5
  export interface DexConfig {
2
6
  name: string;
3
7
  v2Factory?: string;
@@ -53,7 +57,6 @@ export interface BestPoolInfo {
53
57
  poolRatio?: string;
54
58
  }
55
59
  export type LPPlatform = 'FOUR' | 'FLAP' | 'DAOAAS' | 'PANCAKESWAP_V2' | 'PANCAKESWAP_V3' | 'UNISWAP_V2' | 'UNISWAP_V3' | 'IROSWAP_V2' | 'MULTI_DEX' | 'UNKNOWN';
56
- /** LP 信息返回类型 */
57
60
  export interface LPInfo {
58
61
  platform: LPPlatform;
59
62
  decimals?: number;
@@ -87,7 +90,6 @@ export interface LPInfo {
87
90
  allPools: DexPoolInfo[];
88
91
  bestPools: BestPoolInfo[];
89
92
  }
90
- import type { FlapChain } from '../../shared/flap/portal.js';
91
93
  export interface InspectOptions {
92
94
  chain: 'BSC' | 'MONAD' | 'XLAYER' | 'ENI';
93
95
  rpcUrl: string;
@@ -0,0 +1,5 @@
1
+ /** Multicall3 `aggregate3` 单条返回(与 IERC20 balanceOf / getEthBalance 解码路径一致) */
2
+ export type Aggregate3CallResult = {
3
+ success: boolean;
4
+ returnData: string;
5
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ /**
2
+ * 私募转账签名 — 类型定义
3
+ */
4
+ import type { GeneratedWallet } from '../../../utils/wallet.js';
5
+ export interface PrivateSaleSignConfig {
6
+ rpcUrl: string;
7
+ chainId?: number;
8
+ gasLimit?: number;
9
+ gasPriceGwei?: number;
10
+ bribeAmount?: number;
11
+ extractProfit?: boolean;
12
+ profitBps?: number;
13
+ }
14
+ export interface PrivateSaleTransferParams {
15
+ senderPrivateKey: string;
16
+ recipient: string;
17
+ amount: number;
18
+ }
19
+ export interface BatchPrivateSaleParams {
20
+ transfers: PrivateSaleTransferParams[];
21
+ config: PrivateSaleSignConfig;
22
+ }
23
+ export interface PrivateSaleResult {
24
+ signedTransactions: string[];
25
+ profitHopWallets?: GeneratedWallet[];
26
+ metadata: {
27
+ totalCount: number;
28
+ bribeCount: number;
29
+ transferCount: number;
30
+ profitCount: number;
31
+ totalAmountWei: string;
32
+ totalProfitWei: string;
33
+ bribeAmountWei: string;
34
+ };
35
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,5 @@
1
1
  import type { JsonRpcProvider } from 'ethers';
2
+ export type SupportedChain = 'BSC' | 'MONAD' | 'XLAYER' | 'ENI';
2
3
  export interface QuoteParams {
3
4
  provider: JsonRpcProvider;
4
5
  tokenIn: string;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import TaxTokenAbi from '../abis/TaxToken.json';
1
+ import TaxTokenAbi from '../../abis/contracts/TaxToken.json';
2
2
  /** TaxToken 转账模式 */
3
3
  export declare enum TransferMode {
4
4
  /** 正常转账模式 - 允许所有转账 */
@@ -5,7 +5,7 @@
5
5
  * 基于 Four.meme 官方文档: API-Contract-TaxToken.md
6
6
  */
7
7
  import { ethers, Contract, Wallet, JsonRpcProvider } from 'ethers';
8
- import TaxTokenAbi from '../abis/TaxToken.json' with { type: 'json' };
8
+ import TaxTokenAbi from '../../abis/contracts/TaxToken.json' with { type: 'json' };
9
9
  // ============================================================================
10
10
  // 常量
11
11
  // ============================================================================
@@ -123,11 +123,28 @@ export async function getTaxTokenInfo(tokenAddress, rpcUrl) {
123
123
  const token = new Contract(tokenAddress, TAX_TOKEN_READ_ABI, provider);
124
124
  // 批量查询所有状态(利用 Promise.all 减少 RPC 调用轮次)
125
125
  const [feeRate, rateFounder, rateHolder, rateBurn, rateLiquidity, founder, quote, pair, mode, minDispatch, minShare, totalShares, feePerShare, feeAccumulated, feeDispatched, feeFounderVal, feeHolderVal, feeBurnVal, feeLiquidityVal, quoteFounderVal, quoteHolderVal, quoteClaimed,] = await Promise.all([
126
- token.feeRate(), token.rateFounder(), token.rateHolder(), token.rateBurn(), token.rateLiquidity(),
127
- token.founder(), token.quote(), token.pair(), token._mode(), token.minDispatch(), token.minShare(),
128
- token.totalShares(), token.feePerShare(), token.feeAccumulated(), token.feeDispatched(),
129
- token.feeFounder(), token.feeHolder(), token.feeBurn(), token.feeLiquidity(),
130
- token.quoteFounder(), token.quoteHolder(), token.quoteClaimed(),
126
+ token.feeRate(),
127
+ token.rateFounder(),
128
+ token.rateHolder(),
129
+ token.rateBurn(),
130
+ token.rateLiquidity(),
131
+ token.founder(),
132
+ token.quote(),
133
+ token.pair(),
134
+ token._mode(),
135
+ token.minDispatch(),
136
+ token.minShare(),
137
+ token.totalShares(),
138
+ token.feePerShare(),
139
+ token.feeAccumulated(),
140
+ token.feeDispatched(),
141
+ token.feeFounder(),
142
+ token.feeHolder(),
143
+ token.feeBurn(),
144
+ token.feeLiquidity(),
145
+ token.quoteFounder(),
146
+ token.quoteHolder(),
147
+ token.quoteClaimed(),
131
148
  ]);
132
149
  return {
133
150
  config: {
@@ -281,7 +298,10 @@ export function validateFourTokenTaxInfo(info) {
281
298
  // 四项比例之和必须为 100
282
299
  const rateSum = info.burnRate + info.divideRate + info.liquidityRate + info.recipientRate;
283
300
  if (rateSum !== 100) {
284
- return { valid: false, error: `burnRate + divideRate + liquidityRate + recipientRate 必须等于 100,当前: ${rateSum}` };
301
+ return {
302
+ valid: false,
303
+ error: `burnRate + divideRate + liquidityRate + recipientRate 必须等于 100,当前: ${rateSum}`,
304
+ };
285
305
  }
286
306
  // 每项比例 >= 0
287
307
  if (info.burnRate < 0 || info.divideRate < 0 || info.liquidityRate < 0 || info.recipientRate < 0) {
@@ -7,4 +7,10 @@
7
7
  * - four: Four.meme 工具(TaxToken 等)
8
8
  */
9
9
  export * from './constants/index.js';
10
+ /** 错误规范化、可选 Logger(与根 `index` 导出同源) */
11
+ export * as foundation from './foundation/index.js';
12
+ /** HTTP / Bundle / BlockRazor 等(亦支持子路径 `four-flap-meme-sdk/clients`) */
13
+ export * as clients from './clients/index.js';
10
14
  export * as FourUtils from './four/index.js';
15
+ /** Flap 链标识(与 `./constants` 同源) */
16
+ export type { FlapChain } from './flap/portal.js';
@@ -7,4 +7,8 @@
7
7
  * - four: Four.meme 工具(TaxToken 等)
8
8
  */
9
9
  export * from './constants/index.js';
10
+ /** 错误规范化、可选 Logger(与根 `index` 导出同源) */
11
+ export * as foundation from './foundation/index.js';
12
+ /** HTTP / Bundle / BlockRazor 等(亦支持子路径 `four-flap-meme-sdk/clients`) */
13
+ export * as clients from './clients/index.js';
10
14
  export * as FourUtils from './four/index.js';
@@ -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,