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
@@ -8,8 +8,8 @@
8
8
  * 需要使用 executeApprove 函数
9
9
  */
10
10
  import { ethers, Contract } from 'ethers';
11
- import { getCachedProvider, createWallet, signAuthorizationsBatch, buildEIP7702Transaction, } from './utils.js';
12
- import { UNIFIED_DELEGATE_ADDRESS, UNIFIED_DELEGATE_ABI, ERC20_ABI, } from './constants.js';
11
+ import { getCachedProvider, createWallet, signAuthorizationsBatch, buildEIP7702Transaction } from './utils.js';
12
+ import { UNIFIED_DELEGATE_ADDRESS, UNIFIED_DELEGATE_ABI, ERC20_ABI } from './constants.js';
13
13
  // 扩展 ABI 包含 executeApprove
14
14
  const EXTENDED_DELEGATE_ABI = [
15
15
  ...UNIFIED_DELEGATE_ABI,
@@ -22,11 +22,7 @@ function buildApproveCalls(wallets, tokenAddress, spenderAddress, amount) {
22
22
  const delegateInterface = new ethers.Interface(EXTENDED_DELEGATE_ABI);
23
23
  const calls = [];
24
24
  for (const wallet of wallets) {
25
- const callData = delegateInterface.encodeFunctionData('executeApprove', [
26
- tokenAddress,
27
- spenderAddress,
28
- amount,
29
- ]);
25
+ const callData = delegateInterface.encodeFunctionData('executeApprove', [tokenAddress, spenderAddress, amount]);
30
26
  calls.push({
31
27
  target: wallet.address,
32
28
  allowFailure: false,
@@ -43,20 +39,19 @@ function buildApproveCalls(wallets, tokenAddress, spenderAddress, amount) {
43
39
  * @returns 签名后的交易和元数据
44
40
  */
45
41
  export async function bundleApprove(params) {
46
- const { mainPrivateKey, privateKeys, tokenAddress, spenderAddress, amount = ethers.MaxUint256, config, } = params;
42
+ const { mainPrivateKey, privateKeys, tokenAddress, spenderAddress, amount = ethers.MaxUint256, config } = params;
47
43
  if (privateKeys.length === 0) {
48
44
  throw new Error('privateKeys 不能为空');
49
45
  }
50
46
  const provider = getCachedProvider(config?.rpcUrl);
51
47
  const delegateAddress = (config?.delegateAddress && config.delegateAddress.trim()) || UNIFIED_DELEGATE_ADDRESS;
52
48
  const mainWallet = createWallet(mainPrivateKey, provider);
53
- const wallets = privateKeys.map(pk => createWallet(pk, provider));
49
+ const wallets = privateKeys.map((pk) => createWallet(pk, provider));
54
50
  // 检查 mainWallet 是否在 wallets 中
55
- const mainWalletIndex = wallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
51
+ const mainWalletIndex = wallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
56
52
  // 只为需要执行授权操作的钱包生成 authorization
57
53
  // mainWallet 如果不在 privateKeys 中,只是支付 gas,不需要 authorization
58
- const authorizations = await signAuthorizationsBatch(wallets, delegateAddress, provider, mainWalletIndex // 如果 mainWallet 在 wallets 中,传其索引;否则传 -1(无主钱包)
59
- );
54
+ const authorizations = await signAuthorizationsBatch(wallets, delegateAddress, provider, mainWalletIndex);
60
55
  const calls = buildApproveCalls(wallets, tokenAddress, spenderAddress, amount);
61
56
  const signedTransaction = await buildEIP7702Transaction(mainWallet, authorizations, calls, 0n, config);
62
57
  return {
@@ -78,11 +73,7 @@ function buildApproveCallsMultiSpenders(wallets, tokenAddress, spenderAddresses,
78
73
  // 对每个钱包,授权所有 spender
79
74
  for (const wallet of wallets) {
80
75
  for (const spender of spenderAddresses) {
81
- const callData = delegateInterface.encodeFunctionData('executeApprove', [
82
- tokenAddress,
83
- spender,
84
- amount,
85
- ]);
76
+ const callData = delegateInterface.encodeFunctionData('executeApprove', [tokenAddress, spender, amount]);
86
77
  calls.push({
87
78
  target: wallet.address,
88
79
  allowFailure: false,
@@ -103,7 +94,7 @@ function buildApproveCallsMultiSpenders(wallets, tokenAddress, spenderAddresses,
103
94
  * @returns 签名后的交易和元数据
104
95
  */
105
96
  export async function bundleApproveMultiSpenders(params) {
106
- const { mainPrivateKey, privateKeys, tokenAddress, spenderAddresses, amount = ethers.MaxUint256, config, } = params;
97
+ const { mainPrivateKey, privateKeys, tokenAddress, spenderAddresses, amount = ethers.MaxUint256, config } = params;
107
98
  if (privateKeys.length === 0) {
108
99
  throw new Error('privateKeys 不能为空');
109
100
  }
@@ -113,9 +104,9 @@ export async function bundleApproveMultiSpenders(params) {
113
104
  const provider = getCachedProvider(config?.rpcUrl);
114
105
  const delegateAddress = (config?.delegateAddress && config.delegateAddress.trim()) || UNIFIED_DELEGATE_ADDRESS;
115
106
  const mainWallet = createWallet(mainPrivateKey, provider);
116
- const wallets = privateKeys.map(pk => createWallet(pk, provider));
107
+ const wallets = privateKeys.map((pk) => createWallet(pk, provider));
117
108
  // 检查 mainWallet 是否在 wallets 中
118
- const mainWalletIndex = wallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
109
+ const mainWalletIndex = wallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
119
110
  // 只为需要执行授权操作的钱包生成 authorization
120
111
  const authorizations = await signAuthorizationsBatch(wallets, delegateAddress, provider, mainWalletIndex);
121
112
  // ✅ 关键:一次性构建所有 approve 调用
@@ -6,12 +6,7 @@
6
6
  *
7
7
  * 只生成签名,由调用方决定如何提交
8
8
  */
9
- import type { BundleBuyParams as BaseBundleBuyParams, BundleBuyResult } from './types.js';
10
- import { type UserType } from './utils.js';
11
- export interface BundleBuyParams extends BaseBundleBuyParams {
12
- /** 用户类型(影响利润率) */
13
- userType?: UserType;
14
- }
9
+ import type { BundleBuyParams, BundleBuyResult } from './types.js';
15
10
  /**
16
11
  * 批量买入 - 生成签名后的交易
17
12
  *
@@ -49,4 +44,5 @@ export interface BundleBuyParams extends BaseBundleBuyParams {
49
44
  * fee: 2500, // 0.25%
50
45
  * });
51
46
  */
47
+ export type { BundleBuyParams } from './types.js';
52
48
  export declare function bundleBuy(params: BundleBuyParams): Promise<BundleBuyResult>;
@@ -36,18 +36,22 @@ function buildFlapBuyCalls(wallets, buyAmounts, tokenAddress) {
36
36
  continue;
37
37
  // ✅ 修复:使用 swapExactInput 代替 buy 函数,与 bundle-create.ts 保持一致
38
38
  // buy(token) 是旧 API,swapExactInput 是新的标准 API
39
- const portalCallData = portalInterface.encodeFunctionData('swapExactInput', [{
39
+ const portalCallData = portalInterface.encodeFunctionData('swapExactInput', [
40
+ {
40
41
  inputToken: ethers.ZeroAddress, // 0x0 = OKB (原生代币)
41
42
  outputToken: tokenAddress,
42
43
  inputAmount: amount,
43
44
  minOutputAmount: 0n, // 无滑点保护
44
45
  permitData: '0x',
45
- }]);
46
- const batchCalls = [{
46
+ },
47
+ ]);
48
+ const batchCalls = [
49
+ {
47
50
  target: FLAP_PORTAL_ADDRESS,
48
51
  value: amount,
49
52
  data: portalCallData,
50
- }];
53
+ },
54
+ ];
51
55
  const callData = delegateInterface.encodeFunctionData('executeBatch', [batchCalls]);
52
56
  calls.push({
53
57
  target: wallet.address, // 以钱包身份调用,代币会到钱包
@@ -142,46 +146,6 @@ function buildProfitCall(mainWallet, profitAmount, profitRecipient) {
142
146
  callData,
143
147
  };
144
148
  }
145
- // ========================================
146
- // 批量买入主函数
147
- // ========================================
148
- /**
149
- * 批量买入 - 生成签名后的交易
150
- *
151
- * @param params 买入参数
152
- * @returns 签名后的交易和元数据
153
- *
154
- * @example
155
- * // FLAP 内盘买入
156
- * const result = await bundleBuy({
157
- * mainPrivateKey: '0x...',
158
- * privateKeys: ['0x...', '0x...'],
159
- * buyAmounts: ['0.01', '0.02'],
160
- * tokenAddress: '0x...',
161
- * tradeType: 'FLAP',
162
- * });
163
- *
164
- * @example
165
- * // V2 买入
166
- * const result = await bundleBuy({
167
- * mainPrivateKey: '0x...',
168
- * privateKeys: ['0x...', '0x...'],
169
- * buyAmounts: ['0.01', '0.02'],
170
- * tokenAddress: '0x...',
171
- * tradeType: 'V2',
172
- * });
173
- *
174
- * @example
175
- * // V3 买入(默认)
176
- * const result = await bundleBuy({
177
- * mainPrivateKey: '0x...',
178
- * privateKeys: ['0x...', '0x...'],
179
- * buyAmounts: ['0.01', '0.02'],
180
- * tokenAddress: '0x...',
181
- * tradeType: 'V3',
182
- * fee: 2500, // 0.25%
183
- * });
184
- */
185
149
  export async function bundleBuy(params) {
186
150
  const { mainPrivateKey, privateKeys, buyAmounts, tokenAddress, tradeType = 'V3', routerAddress, fee = V3_FEE_TIERS.MEDIUM, userType = 'v0', // ✅ 用户类型(影响利润率)
187
151
  config, } = params;
@@ -195,22 +159,20 @@ export async function bundleBuy(params) {
195
159
  // 同步操作 - 批量创建钱包和解析金额
196
160
  // ========================================
197
161
  const mainWallet = createWallet(mainPrivateKey, provider);
198
- const wallets = privateKeys.map(pk => createWallet(pk, provider));
162
+ const wallets = privateKeys.map((pk) => createWallet(pk, provider));
199
163
  // 批量解析金额(同步)
200
- const buyAmountsWei = buyAmounts.map(amt => ethers.parseEther(amt));
164
+ const buyAmountsWei = buyAmounts.map((amt) => ethers.parseEther(amt));
201
165
  const totalBuyAmount = buyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
202
166
  // ✅ 使用 userType 计算利润
203
167
  const profitAmount = calculateProfitAmountByTxCount(totalBuyAmount, wallets.length, userType);
204
168
  const profitRecipient = getProfitRecipient(config);
205
169
  // 确定需要授权的钱包
206
- const mainWalletIndex = wallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
207
- const allWallets = mainWalletIndex === -1
208
- ? [mainWallet, ...wallets]
209
- : wallets;
170
+ const mainWalletIndex = wallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
171
+ const allWallets = mainWalletIndex === -1 ? [mainWallet, ...wallets] : wallets;
210
172
  // ========================================
211
173
  // 并行获取所有异步数据
212
174
  // ========================================
213
- const allAddresses = allWallets.map(w => w.address);
175
+ const allAddresses = allWallets.map((w) => w.address);
214
176
  const [walletNonces, mainNonce, feeData] = await Promise.all([
215
177
  // 1. 批量获取授权钱包的 nonce
216
178
  batchGetNonces(allAddresses, provider),
@@ -24,10 +24,14 @@ const ZERO_HASH = '0x00000000000000000000000000000000000000000000000000000000000
24
24
  */
25
25
  function lpFeeProfileToV3Fee(lpFeeProfile) {
26
26
  switch (lpFeeProfile) {
27
- case 0: return V3_FEE_TIERS.MEDIUM; // 0.25%
28
- case 1: return V3_FEE_TIERS.LOWEST; // 0.01%
29
- case 2: return V3_FEE_TIERS.HIGH; // 1%
30
- default: return V3_FEE_TIERS.MEDIUM;
27
+ case 0:
28
+ return V3_FEE_TIERS.MEDIUM; // 0.25%
29
+ case 1:
30
+ return V3_FEE_TIERS.LOWEST; // 0.01%
31
+ case 2:
32
+ return V3_FEE_TIERS.HIGH; // 1%
33
+ default:
34
+ return V3_FEE_TIERS.MEDIUM;
31
35
  }
32
36
  }
33
37
  /**
@@ -69,24 +73,28 @@ function encodeFlapBuyCall(tokenAddress, inputAmount, useV3OrV4 = false, extensi
69
73
  const portalIface = new Interface(FLAP_PORTAL_ABI);
70
74
  if (useV3OrV4) {
71
75
  // V3/V4 代币使用 swapExactInputV3(支持 extensionData)
72
- return portalIface.encodeFunctionData('swapExactInputV3', [{
76
+ return portalIface.encodeFunctionData('swapExactInputV3', [
77
+ {
73
78
  inputToken: ZERO_ADDRESS,
74
79
  outputToken: tokenAddress,
75
80
  inputAmount,
76
81
  minOutputAmount: 0n,
77
82
  permitData: '0x',
78
83
  extensionData,
79
- }]);
84
+ },
85
+ ]);
80
86
  }
81
87
  else {
82
88
  // V2 代币使用 swapExactInput
83
- return portalIface.encodeFunctionData('swapExactInput', [{
89
+ return portalIface.encodeFunctionData('swapExactInput', [
90
+ {
84
91
  inputToken: ZERO_ADDRESS,
85
92
  outputToken: tokenAddress,
86
93
  inputAmount,
87
94
  minOutputAmount: 0n,
88
95
  permitData: '0x',
89
- }]);
96
+ },
97
+ ]);
90
98
  }
91
99
  }
92
100
  /**
@@ -98,7 +106,8 @@ function encodeV3BuyCall(tokenAddress, fee, recipient, deadline, amountIn) {
98
106
  'function multicall(uint256 deadline, bytes[] data) external payable returns (bytes[])',
99
107
  'function refundETH() external payable',
100
108
  ]);
101
- const exactInputData = routerIface.encodeFunctionData('exactInputSingle', [{
109
+ const exactInputData = routerIface.encodeFunctionData('exactInputSingle', [
110
+ {
102
111
  tokenIn: WOKB_ADDRESS,
103
112
  tokenOut: tokenAddress,
104
113
  fee,
@@ -106,7 +115,8 @@ function encodeV3BuyCall(tokenAddress, fee, recipient, deadline, amountIn) {
106
115
  amountIn,
107
116
  amountOutMinimum: 0n,
108
117
  sqrtPriceLimitX96: 0n,
109
- }]);
118
+ },
119
+ ]);
110
120
  const refundEthData = routerIface.encodeFunctionData('refundETH', []);
111
121
  return routerIface.encodeFunctionData('multicall', [deadline, [exactInputData, refundEthData]]);
112
122
  }
@@ -160,22 +170,21 @@ export async function bundleCreateBuy(params) {
160
170
  const delegateInterface = new Interface(UNIFIED_DELEGATE_ABI);
161
171
  // 创建钱包
162
172
  const devWallet = createWallet(devPrivateKey, provider);
163
- const buyerWallets = buyerPrivateKeys.map(pk => createWallet(pk, provider));
173
+ const buyerWallets = buyerPrivateKeys.map((pk) => createWallet(pk, provider));
164
174
  const allWallets = [devWallet, ...buyerWallets];
165
175
  const mainWallet = devWallet;
166
176
  // 计算买入金额和利润(单边模式:只有买入)
167
- const buyAmountsWei = buyAmounts.map(amt => ethers.parseEther(amt));
177
+ const buyAmountsWei = buyAmounts.map((amt) => ethers.parseEther(amt));
168
178
  const totalBuyAmount = buyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
169
179
  const profitAmount = calculateProfitAmountByUserType(totalBuyAmount, userType, false); // ✅ 支持 userType
170
180
  const profitRecipient = getProfitRecipient(config);
171
181
  // 并行获取 nonce 和 fee data
172
182
  const [nonces, feeData] = await Promise.all([
173
- batchGetNonces(allWallets.map(w => w.address), provider),
183
+ batchGetNonces(allWallets.map((w) => w.address), provider),
174
184
  provider.getFeeData(),
175
185
  ]);
176
186
  // 签名授权
177
- const authorizations = signAuthorizationsWithNonces(allWallets, nonces, delegateAddress, 0 // devWallet 是主钱包,索引 0
178
- );
187
+ const authorizations = signAuthorizationsWithNonces(allWallets, nonces, delegateAddress, 0);
179
188
  // 构建调用
180
189
  const calls = [];
181
190
  // 1. 利润转账(从开发者钱包)
@@ -216,7 +225,7 @@ export async function bundleCreateBuy(params) {
216
225
  deflationBps: tv2.deflationBps,
217
226
  dividendBps: tv2.dividendBps,
218
227
  lpBps: tv2.lpBps,
219
- minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * (10n ** 18n),
228
+ minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * 10n ** 18n,
220
229
  });
221
230
  }
222
231
  else if (useV4) {
@@ -271,11 +280,15 @@ export async function bundleCreateBuy(params) {
271
280
  });
272
281
  }
273
282
  // 使用 executeBatch 从 devWallet 调用 Portal.newToken
274
- const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
283
+ const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
284
+ [
285
+ {
275
286
  target: FLAP_PORTAL_ADDRESS,
276
287
  value: params.quoteAmt ?? 0n,
277
288
  data: createData,
278
- }]]);
289
+ },
290
+ ],
291
+ ]);
279
292
  calls.push({
280
293
  target: devWallet.address,
281
294
  allowFailure: false,
@@ -290,11 +303,15 @@ export async function bundleCreateBuy(params) {
290
303
  const buyAmount = buyAmountsWei[i];
291
304
  // 使用 executeBatch 从 buyerWallet 调用 Portal
292
305
  const buyData = encodeFlapBuyCall(tokenAddress, buyAmount, useV3OrV4, extensionData);
293
- const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
306
+ const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
307
+ [
308
+ {
294
309
  target: FLAP_PORTAL_ADDRESS,
295
310
  value: buyAmount,
296
311
  data: buyData,
297
- }]]);
312
+ },
313
+ ],
314
+ ]);
298
315
  // ✅ 修复:value 设为 0n,让钱包使用自己余额买入
299
316
  calls.push({
300
317
  target: buyerWallet.address,
@@ -346,19 +363,19 @@ export async function bundleCreateToDex(params) {
346
363
  const delegateInterface = new Interface(UNIFIED_DELEGATE_ABI);
347
364
  // 创建钱包
348
365
  const payerWallet = createWallet(payerPrivateKey, provider);
349
- const curveBuyerWallets = curveBuyerPrivateKeys.map(pk => createWallet(pk, provider));
350
- const dexBuyerWallets = dexBuyerPrivateKeys.map(pk => createWallet(pk, provider));
366
+ const curveBuyerWallets = curveBuyerPrivateKeys.map((pk) => createWallet(pk, provider));
367
+ const dexBuyerWallets = dexBuyerPrivateKeys.map((pk) => createWallet(pk, provider));
351
368
  // 合并所有钱包(去重)
352
369
  const allWalletsMap = new Map();
353
370
  allWalletsMap.set(payerWallet.address.toLowerCase(), payerWallet);
354
- curveBuyerWallets.forEach(w => allWalletsMap.set(w.address.toLowerCase(), w));
355
- dexBuyerWallets.forEach(w => allWalletsMap.set(w.address.toLowerCase(), w));
371
+ curveBuyerWallets.forEach((w) => allWalletsMap.set(w.address.toLowerCase(), w));
372
+ dexBuyerWallets.forEach((w) => allWalletsMap.set(w.address.toLowerCase(), w));
356
373
  const allWallets = Array.from(allWalletsMap.values());
357
374
  const mainWallet = payerWallet;
358
- const mainWalletIndex = allWallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
375
+ const mainWalletIndex = allWallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
359
376
  // 计算金额和利润(单边模式:只有买入)
360
- const curveBuyAmountsWei = curveBuyAmounts.map(amt => ethers.parseEther(amt));
361
- const dexBuyAmountsWei = dexBuyAmounts.map(amt => ethers.parseEther(amt));
377
+ const curveBuyAmountsWei = curveBuyAmounts.map((amt) => ethers.parseEther(amt));
378
+ const dexBuyAmountsWei = dexBuyAmounts.map((amt) => ethers.parseEther(amt));
362
379
  const totalCurveBuyAmount = curveBuyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
363
380
  const totalDexBuyAmount = dexBuyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
364
381
  const totalBuyAmount = totalCurveBuyAmount + totalDexBuyAmount;
@@ -366,7 +383,7 @@ export async function bundleCreateToDex(params) {
366
383
  const profitRecipient = getProfitRecipient(config);
367
384
  // 并行获取 nonce 和 fee data
368
385
  const [nonces, feeData] = await Promise.all([
369
- batchGetNonces(allWallets.map(w => w.address), provider),
386
+ batchGetNonces(allWallets.map((w) => w.address), provider),
370
387
  provider.getFeeData(),
371
388
  ]);
372
389
  // 签名授权
@@ -410,7 +427,7 @@ export async function bundleCreateToDex(params) {
410
427
  deflationBps: tv2.deflationBps,
411
428
  dividendBps: tv2.dividendBps,
412
429
  lpBps: tv2.lpBps,
413
- minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * (10n ** 18n),
430
+ minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * 10n ** 18n,
414
431
  });
415
432
  }
416
433
  else {
@@ -432,11 +449,15 @@ export async function bundleCreateToDex(params) {
432
449
  lpFeeProfile: params.lpFeeProfile ?? 0,
433
450
  });
434
451
  }
435
- const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
452
+ const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
453
+ [
454
+ {
436
455
  target: FLAP_PORTAL_ADDRESS,
437
456
  value: params.quoteAmt ?? 0n,
438
457
  data: createData,
439
- }]]);
458
+ },
459
+ ],
460
+ ]);
440
461
  calls.push({
441
462
  target: payerWallet.address,
442
463
  allowFailure: false,
@@ -449,11 +470,15 @@ export async function bundleCreateToDex(params) {
449
470
  const buyerWallet = curveBuyerWallets[i];
450
471
  const buyAmount = curveBuyAmountsWei[i];
451
472
  const buyData = encodeFlapBuyCall(tokenAddress, buyAmount, true, extensionData);
452
- const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
473
+ const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
474
+ [
475
+ {
453
476
  target: FLAP_PORTAL_ADDRESS,
454
477
  value: buyAmount,
455
478
  data: buyData,
456
- }]]);
479
+ },
480
+ ],
481
+ ]);
457
482
  // ✅ 修复:value 设为 0n,让钱包使用自己余额买入
458
483
  calls.push({
459
484
  target: buyerWallet.address,
@@ -464,7 +489,7 @@ export async function bundleCreateToDex(params) {
464
489
  }
465
490
  // 4. 外盘买入(如果启用)
466
491
  if (enableDexBuy && dexBuyerWallets.length > 0) {
467
- const dexType = (params.lpFeeProfile !== undefined && params.lpFeeProfile >= 0) ? 'V3' : 'V2';
492
+ const dexType = params.lpFeeProfile !== undefined && params.lpFeeProfile >= 0 ? 'V3' : 'V2';
468
493
  const v3Fee = lpFeeProfileToV3Fee(params.lpFeeProfile);
469
494
  for (let i = 0; i < dexBuyerWallets.length; i++) {
470
495
  const buyerWallet = dexBuyerWallets[i];
@@ -480,11 +505,15 @@ export async function bundleCreateToDex(params) {
480
505
  swapData = encodeV2BuyCall(tokenAddress, buyerWallet.address, deadline);
481
506
  }
482
507
  // 使用 executeBatch 调用 DEX Router
483
- const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
508
+ const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
509
+ [
510
+ {
484
511
  target: routerAddress,
485
512
  value: buyAmount,
486
513
  data: swapData,
487
- }]]);
514
+ },
515
+ ],
516
+ ]);
488
517
  // ✅ 修复:value 设为 0n,让钱包使用自己余额买入
489
518
  calls.push({
490
519
  target: buyerWallet.address,
@@ -498,13 +527,13 @@ export async function bundleCreateToDex(params) {
498
527
  const totalValue = params.quoteAmt ?? 0n;
499
528
  // ✅ 动态计算 Gas Limit:基础操作 + 毕业额外 gas
500
529
  // 毕业操作需要约 800 万 gas,加上其他操作的 gas
501
- const baseGas = GAS_ESTIMATE.BASE
502
- + BigInt(allWallets.length) * GAS_ESTIMATE.PER_AUTHORIZATION
503
- + BigInt(calls.length) * GAS_ESTIMATE.PER_CALL_BASE
504
- + BigInt(curveBuyerWallets.length) * GAS_ESTIMATE.BUY_EXTRA // 内盘买入
505
- + BigInt(dexBuyerWallets.length) * GAS_ESTIMATE.BUY_EXTRA // 外盘买入
506
- + GAS_ESTIMATE.CREATE_TOKEN // 创建代币
507
- + GAS_ESTIMATE.GRADUATE; // 毕业操作 (800万)
530
+ const baseGas = GAS_ESTIMATE.BASE +
531
+ BigInt(allWallets.length) * GAS_ESTIMATE.PER_AUTHORIZATION +
532
+ BigInt(calls.length) * GAS_ESTIMATE.PER_CALL_BASE +
533
+ BigInt(curveBuyerWallets.length) * GAS_ESTIMATE.BUY_EXTRA + // 内盘买入
534
+ BigInt(dexBuyerWallets.length) * GAS_ESTIMATE.BUY_EXTRA + // 外盘买入
535
+ GAS_ESTIMATE.CREATE_TOKEN + // 创建代币
536
+ GAS_ESTIMATE.GRADUATE; // 毕业操作 (800万)
508
537
  const dynamicGasLimit = BigInt(Math.ceil(Number(baseGas) * GAS_ESTIMATE.SAFETY_MULTIPLIER));
509
538
  const finalGasLimit = dynamicGasLimit > GAS_ESTIMATE.MAX ? GAS_ESTIMATE.MAX : dynamicGasLimit;
510
539
  const toDexConfig = {
@@ -547,7 +576,7 @@ export async function bundleGraduateBuy(params) {
547
576
  const delegateInterface = new Interface(UNIFIED_DELEGATE_ABI);
548
577
  // 创建钱包
549
578
  const payerWallet = createWallet(payerPrivateKey, provider);
550
- const wallets = privateKeys.map(pk => createWallet(pk, provider));
579
+ const wallets = privateKeys.map((pk) => createWallet(pk, provider));
551
580
  // 获取代币状态
552
581
  const portalContract = new Contract(FLAP_PORTAL_ADDRESS, FLAP_PORTAL_ABI, provider);
553
582
  const tokenState = await portalContract.getTokenV7(tokenAddress);
@@ -556,7 +585,7 @@ export async function bundleGraduateBuy(params) {
556
585
  const k = tokenState[6];
557
586
  const lpFeeProfile = Number(tokenState[15]);
558
587
  // 计算毕业容量
559
- const graduationReserveWei = (h * k) / (10n ** 18n);
588
+ const graduationReserveWei = (h * k) / 10n ** 18n;
560
589
  const poolReserveOkb = Number(ethers.formatEther(reserve));
561
590
  const graduateCapacity = graduationAmount ?? Number(ethers.formatEther(graduationReserveWei));
562
591
  const remainingToGraduate = Math.max(0, graduateCapacity - poolReserveOkb);
@@ -588,8 +617,8 @@ export async function bundleGraduateBuy(params) {
588
617
  const dexBuyers = [];
589
618
  const hasFrontendGrouping = curveAddresses && curveAddresses.length > 0;
590
619
  if (hasFrontendGrouping) {
591
- const curveSet = new Set(curveAddresses.map(a => a.toLowerCase()));
592
- const dexSet = dexAddresses ? new Set(dexAddresses.map(a => a.toLowerCase())) : new Set();
620
+ const curveSet = new Set(curveAddresses.map((a) => a.toLowerCase()));
621
+ const dexSet = dexAddresses ? new Set(dexAddresses.map((a) => a.toLowerCase())) : new Set();
593
622
  for (let i = 0; i < wallets.length; i++) {
594
623
  const wallet = wallets[i];
595
624
  const ownerAddr = wallet.address.toLowerCase();
@@ -627,11 +656,11 @@ export async function bundleGraduateBuy(params) {
627
656
  // 合并所有参与的钱包
628
657
  const allWalletsMap = new Map();
629
658
  allWalletsMap.set(payerWallet.address.toLowerCase(), payerWallet);
630
- curveBuyers.forEach(b => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
631
- dexBuyers.forEach(b => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
659
+ curveBuyers.forEach((b) => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
660
+ dexBuyers.forEach((b) => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
632
661
  const allWallets = Array.from(allWalletsMap.values());
633
662
  const mainWallet = payerWallet;
634
- const mainWalletIndex = allWallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
663
+ const mainWalletIndex = allWallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
635
664
  // 计算金额和利润(单边模式:只有买入)
636
665
  const curveTotalWei = curveBuyers.reduce((sum, b) => sum + b.amount, 0n);
637
666
  const dexTotalWei = dexBuyers.reduce((sum, b) => sum + b.amount, 0n);
@@ -640,7 +669,7 @@ export async function bundleGraduateBuy(params) {
640
669
  const profitRecipient = getProfitRecipient(config);
641
670
  // 并行获取 nonce 和 fee data
642
671
  const [nonces, feeData] = await Promise.all([
643
- batchGetNonces(allWallets.map(w => w.address), provider),
672
+ batchGetNonces(allWallets.map((w) => w.address), provider),
644
673
  provider.getFeeData(),
645
674
  ]);
646
675
  // 签名授权
@@ -658,11 +687,15 @@ export async function bundleGraduateBuy(params) {
658
687
  for (let i = 0; i < curveBuyers.length; i++) {
659
688
  const { wallet, amount } = curveBuyers[i];
660
689
  const buyData = encodeFlapBuyCall(tokenAddress, amount, useV3OrV4, extensionData);
661
- const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
690
+ const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
691
+ [
692
+ {
662
693
  target: FLAP_PORTAL_ADDRESS,
663
694
  value: amount,
664
695
  data: buyData,
665
- }]]);
696
+ },
697
+ ],
698
+ ]);
666
699
  // ✅ 修复:value 设为 0n,让钱包使用自己余额买入
667
700
  calls.push({
668
701
  target: wallet.address,
@@ -673,7 +706,7 @@ export async function bundleGraduateBuy(params) {
673
706
  }
674
707
  // 3. 外盘买入
675
708
  if (enableDexBuy && dexBuyers.length > 0) {
676
- const dexType = (lpFeeProfile >= 0) ? 'V3' : 'V2';
709
+ const dexType = lpFeeProfile >= 0 ? 'V3' : 'V2';
677
710
  const v3Fee = lpFeeProfileToV3Fee(lpFeeProfile);
678
711
  for (let i = 0; i < dexBuyers.length; i++) {
679
712
  const { wallet, amount } = dexBuyers[i];
@@ -687,11 +720,15 @@ export async function bundleGraduateBuy(params) {
687
720
  routerAddress = POTATOSWAP_V2_ROUTER;
688
721
  swapData = encodeV2BuyCall(tokenAddress, wallet.address, deadline);
689
722
  }
690
- const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
723
+ const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
724
+ [
725
+ {
691
726
  target: routerAddress,
692
727
  value: amount,
693
728
  data: swapData,
694
- }]]);
729
+ },
730
+ ],
731
+ ]);
695
732
  // ✅ 修复:value 设为 0n,让钱包使用自己余额买入
696
733
  calls.push({
697
734
  target: wallet.address,
@@ -6,12 +6,7 @@
6
6
  *
7
7
  * 只生成签名,由调用方决定如何提交
8
8
  */
9
- import type { BundleSellParams as BaseBundleSellParams, BundleSellResult } from './types.js';
10
- import { type UserType } from './utils.js';
11
- export interface BundleSellParams extends BaseBundleSellParams {
12
- /** 用户类型(影响利润率) */
13
- userType?: UserType;
14
- }
9
+ import type { BundleSellParams, BundleSellResult } from './types.js';
15
10
  /**
16
11
  * 批量卖出 - 生成签名后的交易
17
12
  *
@@ -49,4 +44,5 @@ export interface BundleSellParams extends BaseBundleSellParams {
49
44
  * fee: 2500,
50
45
  * });
51
46
  */
47
+ export type { BundleSellParams } from './types.js';
52
48
  export declare function bundleSell(params: BundleSellParams): Promise<BundleSellResult>;