four-flap-meme-sdk 2.2.0 → 2.2.2

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 (467) hide show
  1. package/README.en.md +6 -41
  2. package/README.md +0 -31
  3. package/README.zh-CN.md +6 -41
  4. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +26 -1
  5. package/dist/chains/bsc/four/approve-tokenmanager.js +113 -1
  6. package/dist/chains/bsc/four/config.d.ts +67 -5
  7. package/dist/chains/bsc/four/config.js +114 -2
  8. package/dist/chains/bsc/four/core.d.ts +4 -1
  9. package/dist/chains/bsc/four/core.js +592 -1
  10. package/dist/chains/bsc/four/index.d.ts +6 -6
  11. package/dist/chains/bsc/four/index.js +6 -6
  12. package/dist/chains/bsc/four/internal.d.ts +46 -2
  13. package/dist/chains/bsc/four/internal.js +239 -2
  14. package/dist/chains/bsc/four/pancake-proxy.d.ts +28 -1
  15. package/dist/chains/bsc/four/pancake-proxy.js +687 -1
  16. package/dist/chains/bsc/four/private.d.ts +27 -1
  17. package/dist/chains/bsc/four/private.js +477 -1
  18. package/dist/chains/bsc/four/submit.d.ts +315 -2
  19. package/dist/chains/bsc/four/submit.js +752 -2
  20. package/dist/chains/bsc/four/swap-buy-first.d.ts +55 -2
  21. package/dist/chains/bsc/four/swap-buy-first.js +507 -2
  22. package/dist/chains/bsc/four/swap-internal.d.ts +3 -1
  23. package/dist/chains/bsc/four/swap-internal.js +18 -1
  24. package/dist/chains/bsc/four/swap.d.ts +144 -2
  25. package/dist/chains/bsc/four/swap.js +766 -2
  26. package/dist/chains/bsc/four/types.d.ts +476 -1
  27. package/dist/chains/bsc/four/utils.d.ts +18 -5
  28. package/dist/chains/bsc/four/utils.js +1552 -5
  29. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +91 -1
  30. package/dist/chains/bsc/pancake/bundle-buy-first.js +212 -97
  31. package/dist/chains/bsc/pancake/bundle-swap.d.ts +79 -1
  32. package/dist/chains/bsc/pancake/bundle-swap.js +726 -114
  33. package/dist/chains/bsc/pancake/index.d.ts +2 -4
  34. package/dist/chains/bsc/pancake/index.js +3 -1
  35. package/dist/chains/bsc/platforms/iro/factory.js +1 -3
  36. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  37. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  38. package/dist/chains/bsc/platforms/iro/pool.js +10 -31
  39. package/dist/chains/bsc/platforms/iro/token.js +1 -4
  40. package/dist/chains/eni/batch-router/bundle-approve.js +3 -4
  41. package/dist/chains/eni/batch-router/transfer.js +25 -55
  42. package/dist/chains/eni/batch-router/utils.js +6 -32
  43. package/dist/chains/eni/bundler/sign.js +4 -4
  44. package/dist/chains/eni/bundler/submit.js +4 -1
  45. package/dist/chains/eni/constants.js +1 -1
  46. package/dist/chains/eni/index.d.ts +1 -2
  47. package/dist/chains/eni/index.js +0 -1
  48. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  49. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  50. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  51. package/dist/chains/eni/platforms/daoaas/meta.js +4 -8
  52. package/dist/chains/eni/platforms/daoaas/portal-direct.js +44 -28
  53. package/dist/chains/eni/platforms/daoaas/portal.js +6 -10
  54. package/dist/chains/eni/platforms/dswap/liquidity.js +26 -58
  55. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  56. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  57. package/dist/chains/eni/platforms/fair-launch/launcher.js +46 -87
  58. package/dist/chains/eni/platforms/fair-launch/pool.js +1 -4
  59. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  60. package/dist/chains/eni/platforms/iro/factory.js +1 -3
  61. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  62. package/dist/chains/eni/platforms/iro/index.js +4 -4
  63. package/dist/chains/eni/platforms/iro/pool.js +26 -90
  64. package/dist/chains/eni/platforms/iro/token.js +31 -107
  65. package/dist/chains/eni/platforms/iro/whitelist.js +18 -6
  66. package/dist/chains/index.d.ts +0 -13
  67. package/dist/chains/index.js +0 -13
  68. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +26 -2
  69. package/dist/chains/xlayer/eip7702/bundle-approve.js +21 -11
  70. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +6 -2
  71. package/dist/chains/xlayer/eip7702/bundle-buy.js +51 -13
  72. package/dist/chains/xlayer/eip7702/bundle-create.js +59 -93
  73. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +6 -2
  74. package/dist/chains/xlayer/eip7702/bundle-sell.js +97 -26
  75. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +65 -3
  76. package/dist/chains/xlayer/eip7702/bundle-swap.js +245 -51
  77. package/dist/chains/xlayer/eip7702/constants.d.ts +16 -1
  78. package/dist/chains/xlayer/eip7702/constants.js +21 -3
  79. package/dist/chains/xlayer/eip7702/index.d.ts +46 -28
  80. package/dist/chains/xlayer/eip7702/index.js +81 -28
  81. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +203 -2
  82. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +301 -58
  83. package/dist/chains/xlayer/eip7702/types.d.ts +0 -88
  84. package/dist/chains/xlayer/eip7702/utils.d.ts +3 -0
  85. package/dist/chains/xlayer/eip7702/utils.js +28 -23
  86. package/dist/chains/xlayer/eip7702/volume.d.ts +184 -6
  87. package/dist/chains/xlayer/eip7702/volume.js +158 -83
  88. package/dist/chains/xlayer/eoa/constants.js +1 -1
  89. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  90. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +95 -1
  91. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +299 -66
  92. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  93. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +23 -18
  94. package/dist/chains/xlayer/eoa/index.d.ts +6 -10
  95. package/dist/chains/xlayer/eoa/index.js +23 -8
  96. package/dist/chains/xlayer/eoa/portal-ops.js +2 -7
  97. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  98. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  99. package/dist/chains/xlayer/eoa/types.js +3 -1
  100. package/dist/chains/xlayer/index.d.ts +2 -3
  101. package/dist/chains/xlayer/index.js +7 -4
  102. package/dist/contracts/helper3.d.ts +5 -20
  103. package/dist/contracts/helper3.js +20 -56
  104. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +26 -1
  105. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +113 -1
  106. package/dist/contracts/tm-bundle-merkle/config.d.ts +67 -5
  107. package/dist/contracts/tm-bundle-merkle/config.js +114 -2
  108. package/dist/contracts/tm-bundle-merkle/core.d.ts +4 -1
  109. package/dist/contracts/tm-bundle-merkle/core.js +591 -1
  110. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  111. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  112. package/dist/contracts/tm-bundle-merkle/internal.d.ts +46 -2
  113. package/dist/contracts/tm-bundle-merkle/internal.js +238 -2
  114. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +28 -1
  115. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +686 -1
  116. package/dist/contracts/tm-bundle-merkle/private.d.ts +27 -1
  117. package/dist/contracts/tm-bundle-merkle/private.js +476 -1
  118. package/dist/contracts/tm-bundle-merkle/submit.d.ts +314 -3
  119. package/dist/contracts/tm-bundle-merkle/submit.js +928 -3
  120. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +55 -2
  121. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +506 -2
  122. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +3 -1
  123. package/dist/contracts/tm-bundle-merkle/swap-internal.js +18 -1
  124. package/dist/contracts/tm-bundle-merkle/swap.d.ts +144 -2
  125. package/dist/contracts/tm-bundle-merkle/swap.js +764 -2
  126. package/dist/contracts/tm-bundle-merkle/types.d.ts +476 -1
  127. package/dist/contracts/tm-bundle-merkle/utils.d.ts +18 -6
  128. package/dist/contracts/tm-bundle-merkle/utils.js +1501 -6
  129. package/dist/contracts/tm-bundle.d.ts +51 -3
  130. package/dist/contracts/tm-bundle.js +177 -108
  131. package/dist/contracts/tm.d.ts +2 -3
  132. package/dist/contracts/tm.js +32 -37
  133. package/dist/contracts/tm1.js +4 -9
  134. package/dist/contracts/tm2.js +4 -9
  135. package/dist/dex/direct-router.d.ts +125 -3
  136. package/dist/dex/direct-router.js +666 -237
  137. package/dist/flows/create.d.ts +1 -2
  138. package/dist/flows/create.js +6 -6
  139. package/dist/index.d.ts +85 -20
  140. package/dist/index.js +215 -20
  141. package/dist/shared/abis/TaxToken.json +105 -0
  142. package/dist/shared/abis/TokenManager2.json +60 -0
  143. package/dist/shared/abis/common.d.ts +83 -2
  144. package/dist/shared/abis/common.js +252 -2
  145. package/dist/shared/abis/index.d.ts +6 -5
  146. package/dist/shared/abis/index.js +7 -5
  147. package/dist/shared/clients/blockrazor.js +25 -39
  148. package/dist/shared/clients/club48.d.ts +2 -2
  149. package/dist/shared/clients/club48.js +29 -34
  150. package/dist/shared/clients/emitservice.js +0 -2
  151. package/dist/shared/clients/four.d.ts +5 -5
  152. package/dist/shared/clients/four.js +17 -21
  153. package/dist/shared/clients/merkle.js +34 -27
  154. package/dist/shared/constants/addresses.d.ts +1 -1
  155. package/dist/shared/constants/addresses.js +2 -11
  156. package/dist/shared/constants/chains.d.ts +1 -1
  157. package/dist/shared/constants/chains.js +1 -1
  158. package/dist/shared/constants/gas.d.ts +1 -1
  159. package/dist/shared/constants/gas.js +6 -2
  160. package/dist/shared/constants/index.d.ts +0 -3
  161. package/dist/shared/constants/index.js +0 -1
  162. package/dist/shared/flap/abi.js +1 -1
  163. package/dist/shared/flap/constants.d.ts +2 -1
  164. package/dist/shared/flap/constants.js +3 -2
  165. package/dist/shared/flap/curve.js +0 -3
  166. package/dist/shared/flap/errors.d.ts +4 -1
  167. package/dist/shared/flap/errors.js +1 -20
  168. package/dist/shared/flap/index.d.ts +3 -3
  169. package/dist/shared/flap/index.js +3 -3
  170. package/dist/shared/flap/meta.d.ts +18 -16
  171. package/dist/shared/flap/meta.js +17 -12
  172. package/dist/shared/flap/permit.js +2 -5
  173. package/dist/shared/flap/pinata.d.ts +4 -11
  174. package/dist/shared/flap/pinata.js +16 -21
  175. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +72 -3
  176. package/dist/shared/flap/portal-bundle-merkle/config.js +124 -4
  177. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +4 -0
  178. package/dist/shared/flap/portal-bundle-merkle/core.js +172 -92
  179. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +99 -106
  180. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +92 -100
  181. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +7 -11
  182. package/dist/shared/flap/portal-bundle-merkle/index.js +7 -4
  183. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +68 -71
  184. package/dist/shared/flap/portal-bundle-merkle/private.js +114 -61
  185. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +64 -1
  186. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +247 -66
  187. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +71 -2
  188. package/dist/shared/flap/portal-bundle-merkle/swap.js +410 -103
  189. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +7 -73
  190. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +80 -1
  191. package/dist/shared/flap/portal-bundle-merkle/utils.js +265 -145
  192. package/dist/shared/flap/portal-bundle.js +56 -55
  193. package/dist/shared/flap/portal.d.ts +3 -1
  194. package/dist/shared/flap/portal.js +25 -32
  195. package/dist/shared/flap/vanity.d.ts +5 -1
  196. package/dist/shared/flap/vanity.js +17 -6
  197. package/dist/shared/flap/vault.d.ts +124 -17
  198. package/dist/shared/flap/vault.js +148 -67
  199. package/dist/shared/four/tax-token.d.ts +1 -1
  200. package/dist/shared/four/tax-token.js +7 -27
  201. package/dist/shared/index.d.ts +0 -6
  202. package/dist/shared/index.js +0 -4
  203. package/dist/utils/airdrop-sweep.d.ts +76 -4
  204. package/dist/utils/airdrop-sweep.js +54 -40
  205. package/dist/utils/bundle-helpers.d.ts +243 -9
  206. package/dist/utils/bundle-helpers.js +584 -10
  207. package/dist/utils/constants.d.ts +61 -5
  208. package/dist/utils/constants.js +80 -5
  209. package/dist/utils/contract-factory.d.ts +4 -2
  210. package/dist/utils/contract-factory.js +18 -25
  211. package/dist/utils/erc20.d.ts +89 -7
  212. package/dist/utils/erc20.js +125 -94
  213. package/dist/utils/errors.d.ts +1 -12
  214. package/dist/utils/errors.js +1 -60
  215. package/dist/utils/holders-maker.d.ts +138 -2
  216. package/dist/utils/holders-maker.js +661 -26
  217. package/dist/utils/lp-inspect.d.ts +112 -2
  218. package/dist/utils/lp-inspect.js +223 -73
  219. package/dist/utils/mpcExclusive.d.ts +5 -2
  220. package/dist/utils/mpcExclusive.js +3 -4
  221. package/dist/utils/private-sale.d.ts +58 -2
  222. package/dist/utils/private-sale.js +15 -4
  223. package/dist/utils/provider-factory.d.ts +0 -4
  224. package/dist/utils/provider-factory.js +0 -10
  225. package/dist/utils/quote-helpers.d.ts +45 -4
  226. package/dist/utils/quote-helpers.js +74 -17
  227. package/dist/utils/stealth-transfer.d.ts +28 -2
  228. package/dist/utils/stealth-transfer.js +15 -31
  229. package/dist/utils/swap-helpers.d.ts +15 -2
  230. package/dist/utils/swap-helpers.js +10 -5
  231. package/dist/utils/wallet.d.ts +25 -2
  232. package/dist/utils/wallet.js +8 -9
  233. package/package.json +4 -159
  234. package/dist/__tests__/subpath-exports.test.d.ts +0 -1
  235. package/dist/__tests__/subpath-exports.test.js +0 -64
  236. package/dist/abis/common.d.ts +0 -85
  237. package/dist/abis/common.js +0 -260
  238. package/dist/abis/contracts/TaxToken.json +0 -969
  239. package/dist/abis/contracts/TokenManager2.json +0 -136
  240. package/dist/abis/contracts/index.d.ts +0 -5
  241. package/dist/abis/contracts/index.js +0 -5
  242. package/dist/abis/flap/index.d.ts +0 -3
  243. package/dist/abis/flap/index.js +0 -3
  244. package/dist/abis/flap/portal-events.d.ts +0 -6
  245. package/dist/abis/flap/portal-events.js +0 -17
  246. package/dist/abis/flap/portal.d.ts +0 -6
  247. package/dist/abis/flap/portal.js +0 -37
  248. package/dist/abis/flap/vault.d.ts +0 -171
  249. package/dist/abis/flap/vault.js +0 -91
  250. package/dist/abis/index.d.ts +0 -8
  251. package/dist/abis/index.js +0 -11
  252. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +0 -1
  253. package/dist/bundle-core/__tests__/config-helpers.test.js +0 -28
  254. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +0 -1
  255. package/dist/bundle-core/__tests__/facade-parity.test.js +0 -33
  256. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +0 -1
  257. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +0 -60
  258. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +0 -1
  259. package/dist/bundle-core/__tests__/sign-fixture.test.js +0 -220
  260. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +0 -10
  261. package/dist/bundle-core/__tests__/sign-fixtures.js +0 -16
  262. package/dist/bundle-core/config-helpers.d.ts +0 -36
  263. package/dist/bundle-core/config-helpers.js +0 -57
  264. package/dist/bundle-core/errors.d.ts +0 -50
  265. package/dist/bundle-core/errors.js +0 -34
  266. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +0 -7
  267. package/dist/bundle-core/four-meme/approve-tokenmanager.js +0 -99
  268. package/dist/bundle-core/four-meme/core-helpers.d.ts +0 -8
  269. package/dist/bundle-core/four-meme/core-helpers.js +0 -40
  270. package/dist/bundle-core/four-meme/core.d.ts +0 -4
  271. package/dist/bundle-core/four-meme/core.js +0 -515
  272. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +0 -28
  273. package/dist/bundle-core/four-meme/pancake-proxy.js +0 -679
  274. package/dist/bundle-core/four-meme/private.d.ts +0 -27
  275. package/dist/bundle-core/four-meme/private.js +0 -465
  276. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +0 -2
  277. package/dist/bundle-core/four-meme/sign-context-helpers.js +0 -2
  278. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +0 -8
  279. package/dist/bundle-core/four-meme/swap-buy-first.js +0 -493
  280. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +0 -6
  281. package/dist/bundle-core/four-meme/swap-hop-helpers.js +0 -63
  282. package/dist/bundle-core/four-meme/swap-internal.d.ts +0 -3
  283. package/dist/bundle-core/four-meme/swap-internal.js +0 -18
  284. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +0 -27
  285. package/dist/bundle-core/four-meme/swap-sign-helpers.js +0 -105
  286. package/dist/bundle-core/four-meme/swap.d.ts +0 -17
  287. package/dist/bundle-core/four-meme/swap.js +0 -505
  288. package/dist/bundle-core/four-meme/types/buy-first.d.ts +0 -50
  289. package/dist/bundle-core/four-meme/types/buy-first.js +0 -1
  290. package/dist/bundle-core/four-meme/types/core-flow.d.ts +0 -63
  291. package/dist/bundle-core/four-meme/types/core-flow.js +0 -1
  292. package/dist/bundle-core/four-meme/types/index.d.ts +0 -600
  293. package/dist/bundle-core/four-meme/types/index.js +0 -1
  294. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +0 -19
  295. package/dist/bundle-core/four-meme/types/swap-internal.js +0 -1
  296. package/dist/bundle-core/four-meme/types.d.ts +0 -1
  297. package/dist/bundle-core/four-meme/types.js +0 -1
  298. package/dist/bundle-core/four-meme/utils-disperse.d.ts +0 -7
  299. package/dist/bundle-core/four-meme/utils-disperse.js +0 -396
  300. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +0 -8
  301. package/dist/bundle-core/four-meme/utils-pairwise.js +0 -328
  302. package/dist/bundle-core/four-meme/utils-sweep.d.ts +0 -8
  303. package/dist/bundle-core/four-meme/utils-sweep.js +0 -744
  304. package/dist/bundle-core/index.d.ts +0 -8
  305. package/dist/bundle-core/index.js +0 -8
  306. package/dist/bundle-core/internal.d.ts +0 -21
  307. package/dist/bundle-core/internal.js +0 -182
  308. package/dist/bundle-core/sign-context-helpers.d.ts +0 -25
  309. package/dist/bundle-core/sign-context-helpers.js +0 -67
  310. package/dist/bundle-core/submit.d.ts +0 -293
  311. package/dist/bundle-core/submit.js +0 -727
  312. package/dist/bundle-core/types/index.d.ts +0 -8
  313. package/dist/bundle-core/types/index.js +0 -1
  314. package/dist/bundle-core/types.d.ts +0 -1
  315. package/dist/bundle-core/types.js +0 -1
  316. package/dist/chains/bsc/four/utils-disperse.d.ts +0 -1
  317. package/dist/chains/bsc/four/utils-disperse.js +0 -1
  318. package/dist/chains/bsc/four/utils-pairwise.d.ts +0 -1
  319. package/dist/chains/bsc/four/utils-pairwise.js +0 -1
  320. package/dist/chains/bsc/four/utils-sweep.d.ts +0 -1
  321. package/dist/chains/bsc/four/utils-sweep.js +0 -1
  322. package/dist/chains/bsc/iro.d.ts +0 -5
  323. package/dist/chains/bsc/iro.js +0 -4
  324. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +0 -159
  325. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +0 -117
  326. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +0 -241
  327. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +0 -565
  328. package/dist/chains/eni/flat-aliases.d.ts +0 -10
  329. package/dist/chains/eni/flat-aliases.js +0 -8
  330. package/dist/chains/eni/submit.d.ts +0 -43
  331. package/dist/chains/eni/submit.js +0 -286
  332. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +0 -13
  333. package/dist/chains/xlayer/eip7702/flat-aliases.js +0 -10
  334. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +0 -79
  335. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +0 -1
  336. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +0 -26
  337. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +0 -57
  338. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +0 -148
  339. package/dist/chains/xlayer/eip7702/volume-helpers.js +0 -48
  340. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +0 -126
  341. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +0 -228
  342. package/dist/contracts/tm-bundle-helpers.d.ts +0 -88
  343. package/dist/contracts/tm-bundle-helpers.js +0 -72
  344. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +0 -1
  345. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +0 -1
  346. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +0 -1
  347. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +0 -1
  348. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +0 -1
  349. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +0 -1
  350. package/dist/dex/direct-router-helpers.d.ts +0 -264
  351. package/dist/dex/direct-router-helpers.js +0 -539
  352. package/dist/dex/types.d.ts +0 -81
  353. package/dist/dex/types.js +0 -1
  354. package/dist/exports/root-bundle-and-tooling.d.ts +0 -27
  355. package/dist/exports/root-bundle-and-tooling.js +0 -30
  356. package/dist/exports/root-eni-and-bsc-iro.d.ts +0 -26
  357. package/dist/exports/root-eni-and-bsc-iro.js +0 -66
  358. package/dist/exports/root-foundations.d.ts +0 -35
  359. package/dist/exports/root-foundations.js +0 -70
  360. package/dist/exports/root-swap-dex-and-xlayer.d.ts +0 -30
  361. package/dist/exports/root-swap-dex-and-xlayer.js +0 -78
  362. package/dist/flap/index.d.ts +0 -10
  363. package/dist/flap/index.js +0 -8
  364. package/dist/flows/index.d.ts +0 -1
  365. package/dist/flows/index.js +0 -1
  366. package/dist/merkle/index.d.ts +0 -12
  367. package/dist/merkle/index.js +0 -11
  368. package/dist/shared/clients/index.d.ts +0 -8
  369. package/dist/shared/clients/index.js +0 -8
  370. package/dist/shared/constants/quote.d.ts +0 -30
  371. package/dist/shared/constants/quote.js +0 -37
  372. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +0 -32
  373. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +0 -83
  374. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +0 -125
  375. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +0 -113
  376. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +0 -149
  377. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +0 -259
  378. package/dist/shared/foundation/dex/v3-path.d.ts +0 -6
  379. package/dist/shared/foundation/dex/v3-path.js +0 -35
  380. package/dist/shared/foundation/gas/bundle-gas.d.ts +0 -39
  381. package/dist/shared/foundation/gas/bundle-gas.js +0 -93
  382. package/dist/shared/foundation/gas/profit-hop.d.ts +0 -20
  383. package/dist/shared/foundation/gas/profit-hop.js +0 -72
  384. package/dist/shared/foundation/index.d.ts +0 -13
  385. package/dist/shared/foundation/index.js +0 -12
  386. package/dist/shared/foundation/nonce/nonce-manager.d.ts +0 -17
  387. package/dist/shared/foundation/nonce/nonce-manager.js +0 -180
  388. package/dist/shared/foundation/normalize-unknown.d.ts +0 -9
  389. package/dist/shared/foundation/normalize-unknown.js +0 -29
  390. package/dist/shared/foundation/sdk-logger.d.ts +0 -13
  391. package/dist/shared/foundation/sdk-logger.js +0 -12
  392. package/dist/shared/foundation/tx/build-request.d.ts +0 -17
  393. package/dist/shared/foundation/tx/build-request.js +0 -25
  394. package/dist/shared/foundation/tx/sign-batch.d.ts +0 -5
  395. package/dist/shared/foundation/tx/sign-batch.js +0 -26
  396. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +0 -1
  397. package/dist/shared/foundation/tx/wallet-sign-patch.js +0 -18
  398. package/dist/shared/foundation/types/airdrop-sweep.d.ts +0 -79
  399. package/dist/shared/foundation/types/airdrop-sweep.js +0 -1
  400. package/dist/shared/foundation/types/erc20.d.ts +0 -65
  401. package/dist/shared/foundation/types/erc20.js +0 -1
  402. package/dist/shared/foundation/types/holders-maker.d.ts +0 -64
  403. package/dist/shared/foundation/types/holders-maker.js +0 -1
  404. package/dist/shared/foundation/types/index.d.ts +0 -7
  405. package/dist/shared/foundation/types/index.js +0 -1
  406. package/dist/shared/foundation/types/lp-inspect.d.ts +0 -102
  407. package/dist/shared/foundation/types/lp-inspect.js +0 -1
  408. package/dist/shared/foundation/types/multicall.d.ts +0 -5
  409. package/dist/shared/foundation/types/multicall.js +0 -1
  410. package/dist/shared/foundation/types/private-sale.d.ts +0 -35
  411. package/dist/shared/foundation/types/private-sale.js +0 -1
  412. package/dist/shared/foundation/types/quote-helpers.d.ts +0 -17
  413. package/dist/shared/foundation/types/quote-helpers.js +0 -1
  414. package/dist/types/errors.d.ts +0 -27
  415. package/dist/types/errors.js +0 -34
  416. package/dist/utils/holders-maker/addresses.d.ts +0 -12
  417. package/dist/utils/holders-maker/addresses.js +0 -15
  418. package/dist/utils/holders-maker/buy-tx.d.ts +0 -44
  419. package/dist/utils/holders-maker/buy-tx.js +0 -278
  420. package/dist/utils/holders-maker/constants.d.ts +0 -6
  421. package/dist/utils/holders-maker/constants.js +0 -7
  422. package/dist/utils/holders-maker/disperse.d.ts +0 -18
  423. package/dist/utils/holders-maker/disperse.js +0 -90
  424. package/dist/utils/holders-maker/routing.d.ts +0 -4
  425. package/dist/utils/holders-maker/routing.js +0 -45
  426. package/dist/utils/holders-maker/transfer-tx.d.ts +0 -4
  427. package/dist/utils/holders-maker/transfer-tx.js +0 -67
  428. package/dist/utils/holders-maker-helpers.d.ts +0 -9
  429. package/dist/utils/holders-maker-helpers.js +0 -9
  430. package/dist/utils/hop-chains.d.ts +0 -35
  431. package/dist/utils/hop-chains.js +0 -215
  432. package/dist/utils/lp-inspect-helpers.d.ts +0 -9
  433. package/dist/utils/lp-inspect-helpers.js +0 -109
  434. package/dist/utils/types/airdrop-sweep.d.ts +0 -1
  435. package/dist/utils/types/airdrop-sweep.js +0 -1
  436. package/dist/utils/types/contract-factory.d.ts +0 -1
  437. package/dist/utils/types/contract-factory.js +0 -1
  438. package/dist/utils/types/erc20.d.ts +0 -1
  439. package/dist/utils/types/erc20.js +0 -1
  440. package/dist/utils/types/errors.d.ts +0 -1
  441. package/dist/utils/types/errors.js +0 -1
  442. package/dist/utils/types/holders-maker.d.ts +0 -1
  443. package/dist/utils/types/holders-maker.js +0 -1
  444. package/dist/utils/types/hop-chains.d.ts +0 -8
  445. package/dist/utils/types/hop-chains.js +0 -1
  446. package/dist/utils/types/index.d.ts +0 -13
  447. package/dist/utils/types/index.js +0 -1
  448. package/dist/utils/types/lp-inspect.d.ts +0 -1
  449. package/dist/utils/types/lp-inspect.js +0 -1
  450. package/dist/utils/types/mpc-exclusive.d.ts +0 -5
  451. package/dist/utils/types/mpc-exclusive.js +0 -1
  452. package/dist/utils/types/private-sale.d.ts +0 -1
  453. package/dist/utils/types/private-sale.js +0 -1
  454. package/dist/utils/types/quote-helpers.d.ts +0 -1
  455. package/dist/utils/types/quote-helpers.js +0 -1
  456. package/dist/utils/types/stealth-transfer.d.ts +0 -44
  457. package/dist/utils/types/stealth-transfer.js +0 -1
  458. package/dist/utils/types/wallet.d.ts +0 -25
  459. package/dist/utils/types/wallet.js +0 -1
  460. package/dist/vanity/index.d.ts +0 -5
  461. package/dist/vanity/index.js +0 -5
  462. package/src/abis/contracts/TaxToken.json +0 -969
  463. package/src/abis/contracts/TokenManager.json +0 -836
  464. package/src/abis/contracts/TokenManager2.json +0 -136
  465. package/src/abis/contracts/TokenManagerHelper3.json +0 -993
  466. /package/dist/{abis/contracts → shared/abis}/TokenManager.json +0 -0
  467. /package/dist/{abis/contracts → shared/abis}/TokenManagerHelper3.json +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,7 +22,11 @@ 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', [tokenAddress, spenderAddress, amount]);
25
+ const callData = delegateInterface.encodeFunctionData('executeApprove', [
26
+ tokenAddress,
27
+ spenderAddress,
28
+ amount,
29
+ ]);
26
30
  calls.push({
27
31
  target: wallet.address,
28
32
  allowFailure: false,
@@ -39,19 +43,20 @@ function buildApproveCalls(wallets, tokenAddress, spenderAddress, amount) {
39
43
  * @returns 签名后的交易和元数据
40
44
  */
41
45
  export async function bundleApprove(params) {
42
- const { mainPrivateKey, privateKeys, tokenAddress, spenderAddress, amount = ethers.MaxUint256, config } = params;
46
+ const { mainPrivateKey, privateKeys, tokenAddress, spenderAddress, amount = ethers.MaxUint256, config, } = params;
43
47
  if (privateKeys.length === 0) {
44
48
  throw new Error('privateKeys 不能为空');
45
49
  }
46
50
  const provider = getCachedProvider(config?.rpcUrl);
47
51
  const delegateAddress = (config?.delegateAddress && config.delegateAddress.trim()) || UNIFIED_DELEGATE_ADDRESS;
48
52
  const mainWallet = createWallet(mainPrivateKey, provider);
49
- const wallets = privateKeys.map((pk) => createWallet(pk, provider));
53
+ const wallets = privateKeys.map(pk => createWallet(pk, provider));
50
54
  // 检查 mainWallet 是否在 wallets 中
51
- const mainWalletIndex = wallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
55
+ const mainWalletIndex = wallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
52
56
  // 只为需要执行授权操作的钱包生成 authorization
53
57
  // mainWallet 如果不在 privateKeys 中,只是支付 gas,不需要 authorization
54
- const authorizations = await signAuthorizationsBatch(wallets, delegateAddress, provider, mainWalletIndex);
58
+ const authorizations = await signAuthorizationsBatch(wallets, delegateAddress, provider, mainWalletIndex // 如果 mainWallet 在 wallets 中,传其索引;否则传 -1(无主钱包)
59
+ );
55
60
  const calls = buildApproveCalls(wallets, tokenAddress, spenderAddress, amount);
56
61
  const signedTransaction = await buildEIP7702Transaction(mainWallet, authorizations, calls, 0n, config);
57
62
  return {
@@ -73,7 +78,11 @@ function buildApproveCallsMultiSpenders(wallets, tokenAddress, spenderAddresses,
73
78
  // 对每个钱包,授权所有 spender
74
79
  for (const wallet of wallets) {
75
80
  for (const spender of spenderAddresses) {
76
- const callData = delegateInterface.encodeFunctionData('executeApprove', [tokenAddress, spender, amount]);
81
+ const callData = delegateInterface.encodeFunctionData('executeApprove', [
82
+ tokenAddress,
83
+ spender,
84
+ amount,
85
+ ]);
77
86
  calls.push({
78
87
  target: wallet.address,
79
88
  allowFailure: false,
@@ -94,7 +103,7 @@ function buildApproveCallsMultiSpenders(wallets, tokenAddress, spenderAddresses,
94
103
  * @returns 签名后的交易和元数据
95
104
  */
96
105
  export async function bundleApproveMultiSpenders(params) {
97
- const { mainPrivateKey, privateKeys, tokenAddress, spenderAddresses, amount = ethers.MaxUint256, config } = params;
106
+ const { mainPrivateKey, privateKeys, tokenAddress, spenderAddresses, amount = ethers.MaxUint256, config, } = params;
98
107
  if (privateKeys.length === 0) {
99
108
  throw new Error('privateKeys 不能为空');
100
109
  }
@@ -104,13 +113,14 @@ export async function bundleApproveMultiSpenders(params) {
104
113
  const provider = getCachedProvider(config?.rpcUrl);
105
114
  const delegateAddress = (config?.delegateAddress && config.delegateAddress.trim()) || UNIFIED_DELEGATE_ADDRESS;
106
115
  const mainWallet = createWallet(mainPrivateKey, provider);
107
- const wallets = privateKeys.map((pk) => createWallet(pk, provider));
116
+ const wallets = privateKeys.map(pk => createWallet(pk, provider));
108
117
  // 检查 mainWallet 是否在 wallets 中
109
- const mainWalletIndex = wallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
118
+ const mainWalletIndex = wallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
110
119
  // 只为需要执行授权操作的钱包生成 authorization
111
120
  const authorizations = await signAuthorizationsBatch(wallets, delegateAddress, provider, mainWalletIndex);
112
121
  // ✅ 关键:一次性构建所有 approve 调用
113
122
  const calls = buildApproveCallsMultiSpenders(wallets, tokenAddress, spenderAddresses, amount);
123
+ console.log(`[bundleApproveMultiSpenders] 钱包数: ${wallets.length}, spender数: ${spenderAddresses.length}, 总调用数: ${calls.length}`);
114
124
  const signedTransaction = await buildEIP7702Transaction(mainWallet, authorizations, calls, 0n, config);
115
125
  return {
116
126
  signedTransaction,
@@ -6,7 +6,12 @@
6
6
  *
7
7
  * 只生成签名,由调用方决定如何提交
8
8
  */
9
- import type { BundleBuyParams, BundleBuyResult } from './types.js';
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
+ }
10
15
  /**
11
16
  * 批量买入 - 生成签名后的交易
12
17
  *
@@ -44,5 +49,4 @@ import type { BundleBuyParams, BundleBuyResult } from './types.js';
44
49
  * fee: 2500, // 0.25%
45
50
  * });
46
51
  */
47
- export type { BundleBuyParams } from './types.js';
48
52
  export declare function bundleBuy(params: BundleBuyParams): Promise<BundleBuyResult>;
@@ -36,22 +36,18 @@ 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', [
40
- {
39
+ const portalCallData = portalInterface.encodeFunctionData('swapExactInput', [{
41
40
  inputToken: ethers.ZeroAddress, // 0x0 = OKB (原生代币)
42
41
  outputToken: tokenAddress,
43
42
  inputAmount: amount,
44
43
  minOutputAmount: 0n, // 无滑点保护
45
44
  permitData: '0x',
46
- },
47
- ]);
48
- const batchCalls = [
49
- {
45
+ }]);
46
+ const batchCalls = [{
50
47
  target: FLAP_PORTAL_ADDRESS,
51
48
  value: amount,
52
49
  data: portalCallData,
53
- },
54
- ];
50
+ }];
55
51
  const callData = delegateInterface.encodeFunctionData('executeBatch', [batchCalls]);
56
52
  calls.push({
57
53
  target: wallet.address, // 以钱包身份调用,代币会到钱包
@@ -146,6 +142,46 @@ function buildProfitCall(mainWallet, profitAmount, profitRecipient) {
146
142
  callData,
147
143
  };
148
144
  }
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
+ */
149
185
  export async function bundleBuy(params) {
150
186
  const { mainPrivateKey, privateKeys, buyAmounts, tokenAddress, tradeType = 'V3', routerAddress, fee = V3_FEE_TIERS.MEDIUM, userType = 'v0', // ✅ 用户类型(影响利润率)
151
187
  config, } = params;
@@ -159,20 +195,22 @@ export async function bundleBuy(params) {
159
195
  // 同步操作 - 批量创建钱包和解析金额
160
196
  // ========================================
161
197
  const mainWallet = createWallet(mainPrivateKey, provider);
162
- const wallets = privateKeys.map((pk) => createWallet(pk, provider));
198
+ const wallets = privateKeys.map(pk => createWallet(pk, provider));
163
199
  // 批量解析金额(同步)
164
- const buyAmountsWei = buyAmounts.map((amt) => ethers.parseEther(amt));
200
+ const buyAmountsWei = buyAmounts.map(amt => ethers.parseEther(amt));
165
201
  const totalBuyAmount = buyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
166
202
  // ✅ 使用 userType 计算利润
167
203
  const profitAmount = calculateProfitAmountByTxCount(totalBuyAmount, wallets.length, userType);
168
204
  const profitRecipient = getProfitRecipient(config);
169
205
  // 确定需要授权的钱包
170
- const mainWalletIndex = wallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
171
- const allWallets = mainWalletIndex === -1 ? [mainWallet, ...wallets] : wallets;
206
+ const mainWalletIndex = wallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
207
+ const allWallets = mainWalletIndex === -1
208
+ ? [mainWallet, ...wallets]
209
+ : wallets;
172
210
  // ========================================
173
211
  // 并行获取所有异步数据
174
212
  // ========================================
175
- const allAddresses = allWallets.map((w) => w.address);
213
+ const allAddresses = allWallets.map(w => w.address);
176
214
  const [walletNonces, mainNonce, feeData] = await Promise.all([
177
215
  // 1. 批量获取授权钱包的 nonce
178
216
  batchGetNonces(allAddresses, provider),
@@ -24,14 +24,10 @@ const ZERO_HASH = '0x00000000000000000000000000000000000000000000000000000000000
24
24
  */
25
25
  function lpFeeProfileToV3Fee(lpFeeProfile) {
26
26
  switch (lpFeeProfile) {
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;
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;
35
31
  }
36
32
  }
37
33
  /**
@@ -73,28 +69,24 @@ function encodeFlapBuyCall(tokenAddress, inputAmount, useV3OrV4 = false, extensi
73
69
  const portalIface = new Interface(FLAP_PORTAL_ABI);
74
70
  if (useV3OrV4) {
75
71
  // V3/V4 代币使用 swapExactInputV3(支持 extensionData)
76
- return portalIface.encodeFunctionData('swapExactInputV3', [
77
- {
72
+ return portalIface.encodeFunctionData('swapExactInputV3', [{
78
73
  inputToken: ZERO_ADDRESS,
79
74
  outputToken: tokenAddress,
80
75
  inputAmount,
81
76
  minOutputAmount: 0n,
82
77
  permitData: '0x',
83
78
  extensionData,
84
- },
85
- ]);
79
+ }]);
86
80
  }
87
81
  else {
88
82
  // V2 代币使用 swapExactInput
89
- return portalIface.encodeFunctionData('swapExactInput', [
90
- {
83
+ return portalIface.encodeFunctionData('swapExactInput', [{
91
84
  inputToken: ZERO_ADDRESS,
92
85
  outputToken: tokenAddress,
93
86
  inputAmount,
94
87
  minOutputAmount: 0n,
95
88
  permitData: '0x',
96
- },
97
- ]);
89
+ }]);
98
90
  }
99
91
  }
100
92
  /**
@@ -106,8 +98,7 @@ function encodeV3BuyCall(tokenAddress, fee, recipient, deadline, amountIn) {
106
98
  'function multicall(uint256 deadline, bytes[] data) external payable returns (bytes[])',
107
99
  'function refundETH() external payable',
108
100
  ]);
109
- const exactInputData = routerIface.encodeFunctionData('exactInputSingle', [
110
- {
101
+ const exactInputData = routerIface.encodeFunctionData('exactInputSingle', [{
111
102
  tokenIn: WOKB_ADDRESS,
112
103
  tokenOut: tokenAddress,
113
104
  fee,
@@ -115,8 +106,7 @@ function encodeV3BuyCall(tokenAddress, fee, recipient, deadline, amountIn) {
115
106
  amountIn,
116
107
  amountOutMinimum: 0n,
117
108
  sqrtPriceLimitX96: 0n,
118
- },
119
- ]);
109
+ }]);
120
110
  const refundEthData = routerIface.encodeFunctionData('refundETH', []);
121
111
  return routerIface.encodeFunctionData('multicall', [deadline, [exactInputData, refundEthData]]);
122
112
  }
@@ -170,21 +160,22 @@ export async function bundleCreateBuy(params) {
170
160
  const delegateInterface = new Interface(UNIFIED_DELEGATE_ABI);
171
161
  // 创建钱包
172
162
  const devWallet = createWallet(devPrivateKey, provider);
173
- const buyerWallets = buyerPrivateKeys.map((pk) => createWallet(pk, provider));
163
+ const buyerWallets = buyerPrivateKeys.map(pk => createWallet(pk, provider));
174
164
  const allWallets = [devWallet, ...buyerWallets];
175
165
  const mainWallet = devWallet;
176
166
  // 计算买入金额和利润(单边模式:只有买入)
177
- const buyAmountsWei = buyAmounts.map((amt) => ethers.parseEther(amt));
167
+ const buyAmountsWei = buyAmounts.map(amt => ethers.parseEther(amt));
178
168
  const totalBuyAmount = buyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
179
169
  const profitAmount = calculateProfitAmountByUserType(totalBuyAmount, userType, false); // ✅ 支持 userType
180
170
  const profitRecipient = getProfitRecipient(config);
181
171
  // 并行获取 nonce 和 fee data
182
172
  const [nonces, feeData] = await Promise.all([
183
- batchGetNonces(allWallets.map((w) => w.address), provider),
173
+ batchGetNonces(allWallets.map(w => w.address), provider),
184
174
  provider.getFeeData(),
185
175
  ]);
186
176
  // 签名授权
187
- const authorizations = signAuthorizationsWithNonces(allWallets, nonces, delegateAddress, 0);
177
+ const authorizations = signAuthorizationsWithNonces(allWallets, nonces, delegateAddress, 0 // devWallet 是主钱包,索引 0
178
+ );
188
179
  // 构建调用
189
180
  const calls = [];
190
181
  // 1. 利润转账(从开发者钱包)
@@ -225,7 +216,7 @@ export async function bundleCreateBuy(params) {
225
216
  deflationBps: tv2.deflationBps,
226
217
  dividendBps: tv2.dividendBps,
227
218
  lpBps: tv2.lpBps,
228
- minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * 10n ** 18n,
219
+ minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * (10n ** 18n),
229
220
  });
230
221
  }
231
222
  else if (useV4) {
@@ -280,15 +271,11 @@ export async function bundleCreateBuy(params) {
280
271
  });
281
272
  }
282
273
  // 使用 executeBatch 从 devWallet 调用 Portal.newToken
283
- const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
284
- [
285
- {
274
+ const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
286
275
  target: FLAP_PORTAL_ADDRESS,
287
276
  value: params.quoteAmt ?? 0n,
288
277
  data: createData,
289
- },
290
- ],
291
- ]);
278
+ }]]);
292
279
  calls.push({
293
280
  target: devWallet.address,
294
281
  allowFailure: false,
@@ -303,15 +290,11 @@ export async function bundleCreateBuy(params) {
303
290
  const buyAmount = buyAmountsWei[i];
304
291
  // 使用 executeBatch 从 buyerWallet 调用 Portal
305
292
  const buyData = encodeFlapBuyCall(tokenAddress, buyAmount, useV3OrV4, extensionData);
306
- const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
307
- [
308
- {
293
+ const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
309
294
  target: FLAP_PORTAL_ADDRESS,
310
295
  value: buyAmount,
311
296
  data: buyData,
312
- },
313
- ],
314
- ]);
297
+ }]]);
315
298
  // ✅ 修复:value 设为 0n,让钱包使用自己余额买入
316
299
  calls.push({
317
300
  target: buyerWallet.address,
@@ -363,19 +346,19 @@ export async function bundleCreateToDex(params) {
363
346
  const delegateInterface = new Interface(UNIFIED_DELEGATE_ABI);
364
347
  // 创建钱包
365
348
  const payerWallet = createWallet(payerPrivateKey, provider);
366
- const curveBuyerWallets = curveBuyerPrivateKeys.map((pk) => createWallet(pk, provider));
367
- const dexBuyerWallets = dexBuyerPrivateKeys.map((pk) => createWallet(pk, provider));
349
+ const curveBuyerWallets = curveBuyerPrivateKeys.map(pk => createWallet(pk, provider));
350
+ const dexBuyerWallets = dexBuyerPrivateKeys.map(pk => createWallet(pk, provider));
368
351
  // 合并所有钱包(去重)
369
352
  const allWalletsMap = new Map();
370
353
  allWalletsMap.set(payerWallet.address.toLowerCase(), payerWallet);
371
- curveBuyerWallets.forEach((w) => allWalletsMap.set(w.address.toLowerCase(), w));
372
- dexBuyerWallets.forEach((w) => allWalletsMap.set(w.address.toLowerCase(), w));
354
+ curveBuyerWallets.forEach(w => allWalletsMap.set(w.address.toLowerCase(), w));
355
+ dexBuyerWallets.forEach(w => allWalletsMap.set(w.address.toLowerCase(), w));
373
356
  const allWallets = Array.from(allWalletsMap.values());
374
357
  const mainWallet = payerWallet;
375
- const mainWalletIndex = allWallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
358
+ const mainWalletIndex = allWallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
376
359
  // 计算金额和利润(单边模式:只有买入)
377
- const curveBuyAmountsWei = curveBuyAmounts.map((amt) => ethers.parseEther(amt));
378
- const dexBuyAmountsWei = dexBuyAmounts.map((amt) => ethers.parseEther(amt));
360
+ const curveBuyAmountsWei = curveBuyAmounts.map(amt => ethers.parseEther(amt));
361
+ const dexBuyAmountsWei = dexBuyAmounts.map(amt => ethers.parseEther(amt));
379
362
  const totalCurveBuyAmount = curveBuyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
380
363
  const totalDexBuyAmount = dexBuyAmountsWei.reduce((sum, amt) => sum + amt, 0n);
381
364
  const totalBuyAmount = totalCurveBuyAmount + totalDexBuyAmount;
@@ -383,7 +366,7 @@ export async function bundleCreateToDex(params) {
383
366
  const profitRecipient = getProfitRecipient(config);
384
367
  // 并行获取 nonce 和 fee data
385
368
  const [nonces, feeData] = await Promise.all([
386
- batchGetNonces(allWallets.map((w) => w.address), provider),
369
+ batchGetNonces(allWallets.map(w => w.address), provider),
387
370
  provider.getFeeData(),
388
371
  ]);
389
372
  // 签名授权
@@ -427,7 +410,7 @@ export async function bundleCreateToDex(params) {
427
410
  deflationBps: tv2.deflationBps,
428
411
  dividendBps: tv2.dividendBps,
429
412
  lpBps: tv2.lpBps,
430
- minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * 10n ** 18n,
413
+ minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * (10n ** 18n),
431
414
  });
432
415
  }
433
416
  else {
@@ -449,15 +432,11 @@ export async function bundleCreateToDex(params) {
449
432
  lpFeeProfile: params.lpFeeProfile ?? 0,
450
433
  });
451
434
  }
452
- const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
453
- [
454
- {
435
+ const createBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
455
436
  target: FLAP_PORTAL_ADDRESS,
456
437
  value: params.quoteAmt ?? 0n,
457
438
  data: createData,
458
- },
459
- ],
460
- ]);
439
+ }]]);
461
440
  calls.push({
462
441
  target: payerWallet.address,
463
442
  allowFailure: false,
@@ -470,15 +449,11 @@ export async function bundleCreateToDex(params) {
470
449
  const buyerWallet = curveBuyerWallets[i];
471
450
  const buyAmount = curveBuyAmountsWei[i];
472
451
  const buyData = encodeFlapBuyCall(tokenAddress, buyAmount, true, extensionData);
473
- const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
474
- [
475
- {
452
+ const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
476
453
  target: FLAP_PORTAL_ADDRESS,
477
454
  value: buyAmount,
478
455
  data: buyData,
479
- },
480
- ],
481
- ]);
456
+ }]]);
482
457
  // ✅ 修复:value 设为 0n,让钱包使用自己余额买入
483
458
  calls.push({
484
459
  target: buyerWallet.address,
@@ -489,7 +464,7 @@ export async function bundleCreateToDex(params) {
489
464
  }
490
465
  // 4. 外盘买入(如果启用)
491
466
  if (enableDexBuy && dexBuyerWallets.length > 0) {
492
- const dexType = params.lpFeeProfile !== undefined && params.lpFeeProfile >= 0 ? 'V3' : 'V2';
467
+ const dexType = (params.lpFeeProfile !== undefined && params.lpFeeProfile >= 0) ? 'V3' : 'V2';
493
468
  const v3Fee = lpFeeProfileToV3Fee(params.lpFeeProfile);
494
469
  for (let i = 0; i < dexBuyerWallets.length; i++) {
495
470
  const buyerWallet = dexBuyerWallets[i];
@@ -505,15 +480,11 @@ export async function bundleCreateToDex(params) {
505
480
  swapData = encodeV2BuyCall(tokenAddress, buyerWallet.address, deadline);
506
481
  }
507
482
  // 使用 executeBatch 调用 DEX Router
508
- const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
509
- [
510
- {
483
+ const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
511
484
  target: routerAddress,
512
485
  value: buyAmount,
513
486
  data: swapData,
514
- },
515
- ],
516
- ]);
487
+ }]]);
517
488
  // ✅ 修复:value 设为 0n,让钱包使用自己余额买入
518
489
  calls.push({
519
490
  target: buyerWallet.address,
@@ -527,15 +498,16 @@ export async function bundleCreateToDex(params) {
527
498
  const totalValue = params.quoteAmt ?? 0n;
528
499
  // ✅ 动态计算 Gas Limit:基础操作 + 毕业额外 gas
529
500
  // 毕业操作需要约 800 万 gas,加上其他操作的 gas
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万)
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万)
537
508
  const dynamicGasLimit = BigInt(Math.ceil(Number(baseGas) * GAS_ESTIMATE.SAFETY_MULTIPLIER));
538
509
  const finalGasLimit = dynamicGasLimit > GAS_ESTIMATE.MAX ? GAS_ESTIMATE.MAX : dynamicGasLimit;
510
+ console.log(`[bundleCreateToDex] 动态 Gas 计算: 授权=${allWallets.length}, 调用=${calls.length}, 内盘=${curveBuyerWallets.length}, 外盘=${dexBuyerWallets.length}, Gas=${finalGasLimit.toString()}`);
539
511
  const toDexConfig = {
540
512
  ...config,
541
513
  gasLimit: finalGasLimit, // ✅ 动态计算的 Gas Limit
@@ -576,7 +548,7 @@ export async function bundleGraduateBuy(params) {
576
548
  const delegateInterface = new Interface(UNIFIED_DELEGATE_ABI);
577
549
  // 创建钱包
578
550
  const payerWallet = createWallet(payerPrivateKey, provider);
579
- const wallets = privateKeys.map((pk) => createWallet(pk, provider));
551
+ const wallets = privateKeys.map(pk => createWallet(pk, provider));
580
552
  // 获取代币状态
581
553
  const portalContract = new Contract(FLAP_PORTAL_ADDRESS, FLAP_PORTAL_ABI, provider);
582
554
  const tokenState = await portalContract.getTokenV7(tokenAddress);
@@ -585,11 +557,12 @@ export async function bundleGraduateBuy(params) {
585
557
  const k = tokenState[6];
586
558
  const lpFeeProfile = Number(tokenState[15]);
587
559
  // 计算毕业容量
588
- const graduationReserveWei = (h * k) / 10n ** 18n;
560
+ const graduationReserveWei = (h * k) / (10n ** 18n);
589
561
  const poolReserveOkb = Number(ethers.formatEther(reserve));
590
562
  const graduateCapacity = graduationAmount ?? Number(ethers.formatEther(graduationReserveWei));
591
563
  const remainingToGraduate = Math.max(0, graduateCapacity - poolReserveOkb);
592
564
  const remainingToGraduateWei = ethers.parseEther(remainingToGraduate.toFixed(18));
565
+ console.log(`[GraduateBuy] Pool Reserve: ${poolReserveOkb.toFixed(4)} OKB, Graduation: ${graduateCapacity.toFixed(4)} OKB, Remaining: ${remainingToGraduate.toFixed(4)} OKB`);
593
566
  // 计算每个钱包的金额
594
567
  const normalizedWalletAmounts = {};
595
568
  if (walletAmounts) {
@@ -617,8 +590,8 @@ export async function bundleGraduateBuy(params) {
617
590
  const dexBuyers = [];
618
591
  const hasFrontendGrouping = curveAddresses && curveAddresses.length > 0;
619
592
  if (hasFrontendGrouping) {
620
- const curveSet = new Set(curveAddresses.map((a) => a.toLowerCase()));
621
- const dexSet = dexAddresses ? new Set(dexAddresses.map((a) => a.toLowerCase())) : new Set();
593
+ const curveSet = new Set(curveAddresses.map(a => a.toLowerCase()));
594
+ const dexSet = dexAddresses ? new Set(dexAddresses.map(a => a.toLowerCase())) : new Set();
622
595
  for (let i = 0; i < wallets.length; i++) {
623
596
  const wallet = wallets[i];
624
597
  const ownerAddr = wallet.address.toLowerCase();
@@ -653,14 +626,15 @@ export async function bundleGraduateBuy(params) {
653
626
  }
654
627
  }
655
628
  }
629
+ console.log(`[GraduateBuy] Curve buyers: ${curveBuyers.length}, DEX buyers: ${dexBuyers.length}`);
656
630
  // 合并所有参与的钱包
657
631
  const allWalletsMap = new Map();
658
632
  allWalletsMap.set(payerWallet.address.toLowerCase(), payerWallet);
659
- curveBuyers.forEach((b) => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
660
- dexBuyers.forEach((b) => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
633
+ curveBuyers.forEach(b => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
634
+ dexBuyers.forEach(b => allWalletsMap.set(b.wallet.address.toLowerCase(), b.wallet));
661
635
  const allWallets = Array.from(allWalletsMap.values());
662
636
  const mainWallet = payerWallet;
663
- const mainWalletIndex = allWallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
637
+ const mainWalletIndex = allWallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
664
638
  // 计算金额和利润(单边模式:只有买入)
665
639
  const curveTotalWei = curveBuyers.reduce((sum, b) => sum + b.amount, 0n);
666
640
  const dexTotalWei = dexBuyers.reduce((sum, b) => sum + b.amount, 0n);
@@ -669,7 +643,7 @@ export async function bundleGraduateBuy(params) {
669
643
  const profitRecipient = getProfitRecipient(config);
670
644
  // 并行获取 nonce 和 fee data
671
645
  const [nonces, feeData] = await Promise.all([
672
- batchGetNonces(allWallets.map((w) => w.address), provider),
646
+ batchGetNonces(allWallets.map(w => w.address), provider),
673
647
  provider.getFeeData(),
674
648
  ]);
675
649
  // 签名授权
@@ -687,15 +661,11 @@ export async function bundleGraduateBuy(params) {
687
661
  for (let i = 0; i < curveBuyers.length; i++) {
688
662
  const { wallet, amount } = curveBuyers[i];
689
663
  const buyData = encodeFlapBuyCall(tokenAddress, amount, useV3OrV4, extensionData);
690
- const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
691
- [
692
- {
664
+ const buyBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
693
665
  target: FLAP_PORTAL_ADDRESS,
694
666
  value: amount,
695
667
  data: buyData,
696
- },
697
- ],
698
- ]);
668
+ }]]);
699
669
  // ✅ 修复:value 设为 0n,让钱包使用自己余额买入
700
670
  calls.push({
701
671
  target: wallet.address,
@@ -706,7 +676,7 @@ export async function bundleGraduateBuy(params) {
706
676
  }
707
677
  // 3. 外盘买入
708
678
  if (enableDexBuy && dexBuyers.length > 0) {
709
- const dexType = lpFeeProfile >= 0 ? 'V3' : 'V2';
679
+ const dexType = (lpFeeProfile >= 0) ? 'V3' : 'V2';
710
680
  const v3Fee = lpFeeProfileToV3Fee(lpFeeProfile);
711
681
  for (let i = 0; i < dexBuyers.length; i++) {
712
682
  const { wallet, amount } = dexBuyers[i];
@@ -720,15 +690,11 @@ export async function bundleGraduateBuy(params) {
720
690
  routerAddress = POTATOSWAP_V2_ROUTER;
721
691
  swapData = encodeV2BuyCall(tokenAddress, wallet.address, deadline);
722
692
  }
723
- const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [
724
- [
725
- {
693
+ const dexBatchCall = delegateInterface.encodeFunctionData('executeBatch', [[{
726
694
  target: routerAddress,
727
695
  value: amount,
728
696
  data: swapData,
729
- },
730
- ],
731
- ]);
697
+ }]]);
732
698
  // ✅ 修复:value 设为 0n,让钱包使用自己余额买入
733
699
  calls.push({
734
700
  target: wallet.address,
@@ -6,7 +6,12 @@
6
6
  *
7
7
  * 只生成签名,由调用方决定如何提交
8
8
  */
9
- import type { BundleSellParams, BundleSellResult } from './types.js';
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
+ }
10
15
  /**
11
16
  * 批量卖出 - 生成签名后的交易
12
17
  *
@@ -44,5 +49,4 @@ import type { BundleSellParams, BundleSellResult } from './types.js';
44
49
  * fee: 2500,
45
50
  * });
46
51
  */
47
- export type { BundleSellParams } from './types.js';
48
52
  export declare function bundleSell(params: BundleSellParams): Promise<BundleSellResult>;