four-flap-meme-sdk 2.2.7 → 2.2.10

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 (474) 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.d.ts +2 -2
  36. package/dist/chains/bsc/platforms/iro/factory.js +1 -3
  37. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  38. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  39. package/dist/chains/bsc/platforms/iro/pool.js +10 -31
  40. package/dist/chains/bsc/platforms/iro/token.js +1 -4
  41. package/dist/chains/eni/batch-router/bundle-approve.js +3 -4
  42. package/dist/chains/eni/batch-router/transfer.js +25 -55
  43. package/dist/chains/eni/batch-router/utils.js +6 -32
  44. package/dist/chains/eni/bundler/sign.js +6 -5
  45. package/dist/chains/eni/bundler/submit.js +4 -1
  46. package/dist/chains/eni/constants.js +1 -1
  47. package/dist/chains/eni/index.d.ts +1 -2
  48. package/dist/chains/eni/index.js +0 -1
  49. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  50. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  51. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  52. package/dist/chains/eni/platforms/daoaas/meta.js +6 -9
  53. package/dist/chains/eni/platforms/daoaas/portal-direct.js +44 -28
  54. package/dist/chains/eni/platforms/daoaas/portal.js +6 -10
  55. package/dist/chains/eni/platforms/dswap/liquidity.js +26 -58
  56. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  57. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  58. package/dist/chains/eni/platforms/fair-launch/launcher.js +46 -87
  59. package/dist/chains/eni/platforms/fair-launch/pool.js +1 -4
  60. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  61. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  62. package/dist/chains/eni/platforms/iro/factory.js +1 -3
  63. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  64. package/dist/chains/eni/platforms/iro/index.js +4 -4
  65. package/dist/chains/eni/platforms/iro/pool.js +26 -90
  66. package/dist/chains/eni/platforms/iro/token.js +31 -107
  67. package/dist/chains/eni/platforms/iro/whitelist.js +18 -6
  68. package/dist/chains/index.d.ts +0 -13
  69. package/dist/chains/index.js +0 -13
  70. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +26 -2
  71. package/dist/chains/xlayer/eip7702/bundle-approve.js +21 -11
  72. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +6 -2
  73. package/dist/chains/xlayer/eip7702/bundle-buy.js +51 -13
  74. package/dist/chains/xlayer/eip7702/bundle-create.js +59 -93
  75. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +6 -2
  76. package/dist/chains/xlayer/eip7702/bundle-sell.js +111 -29
  77. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +65 -3
  78. package/dist/chains/xlayer/eip7702/bundle-swap.js +245 -51
  79. package/dist/chains/xlayer/eip7702/constants.d.ts +16 -1
  80. package/dist/chains/xlayer/eip7702/constants.js +21 -3
  81. package/dist/chains/xlayer/eip7702/index.d.ts +46 -28
  82. package/dist/chains/xlayer/eip7702/index.js +81 -28
  83. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +203 -2
  84. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +307 -63
  85. package/dist/chains/xlayer/eip7702/types.d.ts +0 -88
  86. package/dist/chains/xlayer/eip7702/utils.d.ts +3 -0
  87. package/dist/chains/xlayer/eip7702/utils.js +28 -23
  88. package/dist/chains/xlayer/eip7702/volume.d.ts +184 -6
  89. package/dist/chains/xlayer/eip7702/volume.js +164 -89
  90. package/dist/chains/xlayer/eoa/constants.js +1 -1
  91. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  92. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +95 -1
  93. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +299 -66
  94. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  95. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +23 -18
  96. package/dist/chains/xlayer/eoa/index.d.ts +6 -10
  97. package/dist/chains/xlayer/eoa/index.js +23 -8
  98. package/dist/chains/xlayer/eoa/portal-ops.js +2 -7
  99. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  100. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  101. package/dist/chains/xlayer/eoa/types.js +3 -1
  102. package/dist/chains/xlayer/index.d.ts +2 -3
  103. package/dist/chains/xlayer/index.js +7 -4
  104. package/dist/contracts/helper3.d.ts +5 -20
  105. package/dist/contracts/helper3.js +20 -56
  106. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +26 -1
  107. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +113 -1
  108. package/dist/contracts/tm-bundle-merkle/config.d.ts +67 -5
  109. package/dist/contracts/tm-bundle-merkle/config.js +114 -2
  110. package/dist/contracts/tm-bundle-merkle/core.d.ts +4 -1
  111. package/dist/contracts/tm-bundle-merkle/core.js +591 -1
  112. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  113. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  114. package/dist/contracts/tm-bundle-merkle/internal.d.ts +46 -2
  115. package/dist/contracts/tm-bundle-merkle/internal.js +238 -2
  116. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +28 -1
  117. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +686 -1
  118. package/dist/contracts/tm-bundle-merkle/private.d.ts +27 -1
  119. package/dist/contracts/tm-bundle-merkle/private.js +476 -1
  120. package/dist/contracts/tm-bundle-merkle/submit.d.ts +314 -3
  121. package/dist/contracts/tm-bundle-merkle/submit.js +928 -3
  122. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +55 -2
  123. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +506 -2
  124. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +3 -1
  125. package/dist/contracts/tm-bundle-merkle/swap-internal.js +18 -1
  126. package/dist/contracts/tm-bundle-merkle/swap.d.ts +144 -2
  127. package/dist/contracts/tm-bundle-merkle/swap.js +764 -2
  128. package/dist/contracts/tm-bundle-merkle/types.d.ts +476 -1
  129. package/dist/contracts/tm-bundle-merkle/utils.d.ts +18 -6
  130. package/dist/contracts/tm-bundle-merkle/utils.js +1501 -6
  131. package/dist/contracts/tm-bundle.d.ts +51 -3
  132. package/dist/contracts/tm-bundle.js +177 -108
  133. package/dist/contracts/tm.d.ts +2 -3
  134. package/dist/contracts/tm.js +32 -37
  135. package/dist/contracts/tm1.js +4 -9
  136. package/dist/contracts/tm2.js +4 -9
  137. package/dist/dex/direct-router.d.ts +125 -3
  138. package/dist/dex/direct-router.js +666 -237
  139. package/dist/flows/create.d.ts +1 -2
  140. package/dist/flows/create.js +6 -6
  141. package/dist/index.d.ts +86 -20
  142. package/dist/index.js +216 -20
  143. package/dist/shared/abis/TaxToken.json +105 -0
  144. package/dist/shared/abis/TokenManager2.json +60 -0
  145. package/dist/shared/abis/common.d.ts +83 -2
  146. package/dist/shared/abis/common.js +253 -2
  147. package/dist/shared/abis/index.d.ts +6 -5
  148. package/dist/shared/abis/index.js +7 -5
  149. package/dist/shared/clients/blockrazor.js +25 -39
  150. package/dist/shared/clients/club48.d.ts +2 -2
  151. package/dist/shared/clients/club48.js +29 -34
  152. package/dist/shared/clients/emitservice.js +0 -2
  153. package/dist/shared/clients/four.d.ts +6 -21
  154. package/dist/shared/clients/four.js +24 -29
  155. package/dist/shared/clients/merkle.js +34 -27
  156. package/dist/shared/constants/addresses.d.ts +1 -1
  157. package/dist/shared/constants/addresses.js +2 -11
  158. package/dist/shared/constants/chains.d.ts +1 -1
  159. package/dist/shared/constants/chains.js +1 -1
  160. package/dist/shared/constants/gas.d.ts +1 -1
  161. package/dist/shared/constants/gas.js +6 -2
  162. package/dist/shared/constants/index.d.ts +0 -3
  163. package/dist/shared/constants/index.js +0 -1
  164. package/dist/shared/flap/abi.js +1 -1
  165. package/dist/shared/flap/constants.d.ts +2 -1
  166. package/dist/shared/flap/constants.js +4 -3
  167. package/dist/shared/flap/curve.js +0 -3
  168. package/dist/shared/flap/errors.d.ts +4 -1
  169. package/dist/shared/flap/errors.js +1 -20
  170. package/dist/shared/flap/index.d.ts +5 -5
  171. package/dist/shared/flap/index.js +5 -5
  172. package/dist/shared/flap/launch-v6.d.ts +117 -0
  173. package/dist/shared/flap/launch-v6.js +111 -0
  174. package/dist/shared/flap/meta.d.ts +18 -22
  175. package/dist/shared/flap/meta.js +17 -12
  176. package/dist/shared/flap/permit.js +2 -5
  177. package/dist/shared/flap/pinata.d.ts +6 -22
  178. package/dist/shared/flap/pinata.js +26 -21
  179. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +72 -3
  180. package/dist/shared/flap/portal-bundle-merkle/config.js +124 -4
  181. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +4 -0
  182. package/dist/shared/flap/portal-bundle-merkle/core.js +267 -164
  183. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +4 -17
  184. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +195 -107
  185. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +92 -100
  186. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +7 -11
  187. package/dist/shared/flap/portal-bundle-merkle/index.js +7 -4
  188. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +68 -71
  189. package/dist/shared/flap/portal-bundle-merkle/private.js +114 -61
  190. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +64 -1
  191. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +247 -66
  192. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +71 -2
  193. package/dist/shared/flap/portal-bundle-merkle/swap.js +410 -103
  194. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +12 -88
  195. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +80 -1
  196. package/dist/shared/flap/portal-bundle-merkle/utils.js +265 -145
  197. package/dist/shared/flap/portal-bundle.js +56 -55
  198. package/dist/shared/flap/portal.d.ts +3 -14
  199. package/dist/shared/flap/portal.js +26 -49
  200. package/dist/shared/flap/vanity.d.ts +5 -4
  201. package/dist/shared/flap/vanity.js +20 -13
  202. package/dist/shared/flap/vault.d.ts +93 -25
  203. package/dist/shared/flap/vault.js +126 -75
  204. package/dist/shared/four/tax-token.d.ts +1 -1
  205. package/dist/shared/four/tax-token.js +7 -27
  206. package/dist/shared/index.d.ts +0 -6
  207. package/dist/shared/index.js +0 -4
  208. package/dist/utils/airdrop-sweep.d.ts +76 -4
  209. package/dist/utils/airdrop-sweep.js +55 -42
  210. package/dist/utils/bundle-helpers.d.ts +243 -9
  211. package/dist/utils/bundle-helpers.js +584 -10
  212. package/dist/utils/constants.d.ts +61 -5
  213. package/dist/utils/constants.js +80 -5
  214. package/dist/utils/contract-factory.d.ts +4 -2
  215. package/dist/utils/contract-factory.js +18 -25
  216. package/dist/utils/erc20.d.ts +89 -7
  217. package/dist/utils/erc20.js +125 -94
  218. package/dist/utils/errors.d.ts +1 -12
  219. package/dist/utils/errors.js +1 -60
  220. package/dist/utils/holders-maker.d.ts +138 -2
  221. package/dist/utils/holders-maker.js +661 -26
  222. package/dist/utils/lp-inspect.d.ts +112 -2
  223. package/dist/utils/lp-inspect.js +223 -73
  224. package/dist/utils/mpcExclusive.d.ts +5 -2
  225. package/dist/utils/mpcExclusive.js +3 -4
  226. package/dist/utils/private-sale.d.ts +58 -2
  227. package/dist/utils/private-sale.js +15 -4
  228. package/dist/utils/provider-factory.d.ts +0 -4
  229. package/dist/utils/provider-factory.js +0 -10
  230. package/dist/utils/quote-helpers.d.ts +45 -4
  231. package/dist/utils/quote-helpers.js +74 -17
  232. package/dist/utils/stealth-transfer.d.ts +28 -2
  233. package/dist/utils/stealth-transfer.js +15 -31
  234. package/dist/utils/swap-helpers.d.ts +15 -2
  235. package/dist/utils/swap-helpers.js +11 -6
  236. package/dist/utils/wallet.d.ts +25 -2
  237. package/dist/utils/wallet.js +10 -13
  238. package/package.json +4 -160
  239. package/dist/__tests__/subpath-exports.test.d.ts +0 -1
  240. package/dist/__tests__/subpath-exports.test.js +0 -64
  241. package/dist/abis/common.d.ts +0 -85
  242. package/dist/abis/common.js +0 -264
  243. package/dist/abis/contracts/TaxToken.json +0 -969
  244. package/dist/abis/contracts/TokenManager2.json +0 -136
  245. package/dist/abis/contracts/index.d.ts +0 -5
  246. package/dist/abis/contracts/index.js +0 -5
  247. package/dist/abis/flap/index.d.ts +0 -3
  248. package/dist/abis/flap/index.js +0 -3
  249. package/dist/abis/flap/portal-events.d.ts +0 -6
  250. package/dist/abis/flap/portal-events.js +0 -17
  251. package/dist/abis/flap/portal.d.ts +0 -6
  252. package/dist/abis/flap/portal.js +0 -37
  253. package/dist/abis/flap/vault.d.ts +0 -171
  254. package/dist/abis/flap/vault.js +0 -91
  255. package/dist/abis/index.d.ts +0 -8
  256. package/dist/abis/index.js +0 -11
  257. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +0 -1
  258. package/dist/bundle-core/__tests__/config-helpers.test.js +0 -28
  259. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +0 -1
  260. package/dist/bundle-core/__tests__/facade-parity.test.js +0 -33
  261. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +0 -1
  262. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +0 -60
  263. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +0 -1
  264. package/dist/bundle-core/__tests__/sign-fixture.test.js +0 -220
  265. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +0 -10
  266. package/dist/bundle-core/__tests__/sign-fixtures.js +0 -16
  267. package/dist/bundle-core/config-helpers.d.ts +0 -36
  268. package/dist/bundle-core/config-helpers.js +0 -57
  269. package/dist/bundle-core/errors.d.ts +0 -50
  270. package/dist/bundle-core/errors.js +0 -35
  271. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +0 -7
  272. package/dist/bundle-core/four-meme/approve-tokenmanager.js +0 -99
  273. package/dist/bundle-core/four-meme/core-helpers.d.ts +0 -8
  274. package/dist/bundle-core/four-meme/core-helpers.js +0 -40
  275. package/dist/bundle-core/four-meme/core.d.ts +0 -4
  276. package/dist/bundle-core/four-meme/core.js +0 -515
  277. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +0 -28
  278. package/dist/bundle-core/four-meme/pancake-proxy.js +0 -679
  279. package/dist/bundle-core/four-meme/private.d.ts +0 -27
  280. package/dist/bundle-core/four-meme/private.js +0 -465
  281. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +0 -2
  282. package/dist/bundle-core/four-meme/sign-context-helpers.js +0 -2
  283. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +0 -8
  284. package/dist/bundle-core/four-meme/swap-buy-first.js +0 -493
  285. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +0 -6
  286. package/dist/bundle-core/four-meme/swap-hop-helpers.js +0 -63
  287. package/dist/bundle-core/four-meme/swap-internal.d.ts +0 -3
  288. package/dist/bundle-core/four-meme/swap-internal.js +0 -18
  289. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +0 -27
  290. package/dist/bundle-core/four-meme/swap-sign-helpers.js +0 -105
  291. package/dist/bundle-core/four-meme/swap.d.ts +0 -17
  292. package/dist/bundle-core/four-meme/swap.js +0 -505
  293. package/dist/bundle-core/four-meme/types/buy-first.d.ts +0 -50
  294. package/dist/bundle-core/four-meme/types/buy-first.js +0 -1
  295. package/dist/bundle-core/four-meme/types/core-flow.d.ts +0 -63
  296. package/dist/bundle-core/four-meme/types/core-flow.js +0 -1
  297. package/dist/bundle-core/four-meme/types/index.d.ts +0 -600
  298. package/dist/bundle-core/four-meme/types/index.js +0 -1
  299. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +0 -19
  300. package/dist/bundle-core/four-meme/types/swap-internal.js +0 -1
  301. package/dist/bundle-core/four-meme/types.d.ts +0 -1
  302. package/dist/bundle-core/four-meme/types.js +0 -1
  303. package/dist/bundle-core/four-meme/utils-disperse.d.ts +0 -7
  304. package/dist/bundle-core/four-meme/utils-disperse.js +0 -396
  305. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +0 -8
  306. package/dist/bundle-core/four-meme/utils-pairwise.js +0 -328
  307. package/dist/bundle-core/four-meme/utils-sweep.d.ts +0 -8
  308. package/dist/bundle-core/four-meme/utils-sweep.js +0 -744
  309. package/dist/bundle-core/index.d.ts +0 -8
  310. package/dist/bundle-core/index.js +0 -8
  311. package/dist/bundle-core/internal.d.ts +0 -21
  312. package/dist/bundle-core/internal.js +0 -182
  313. package/dist/bundle-core/sign-context-helpers.d.ts +0 -25
  314. package/dist/bundle-core/sign-context-helpers.js +0 -67
  315. package/dist/bundle-core/submit.d.ts +0 -293
  316. package/dist/bundle-core/submit.js +0 -727
  317. package/dist/bundle-core/types/index.d.ts +0 -8
  318. package/dist/bundle-core/types/index.js +0 -1
  319. package/dist/bundle-core/types.d.ts +0 -1
  320. package/dist/bundle-core/types.js +0 -1
  321. package/dist/chains/bsc/four/utils-disperse.d.ts +0 -1
  322. package/dist/chains/bsc/four/utils-disperse.js +0 -1
  323. package/dist/chains/bsc/four/utils-pairwise.d.ts +0 -1
  324. package/dist/chains/bsc/four/utils-pairwise.js +0 -1
  325. package/dist/chains/bsc/four/utils-sweep.d.ts +0 -1
  326. package/dist/chains/bsc/four/utils-sweep.js +0 -1
  327. package/dist/chains/bsc/iro.d.ts +0 -5
  328. package/dist/chains/bsc/iro.js +0 -4
  329. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +0 -159
  330. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +0 -117
  331. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +0 -241
  332. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +0 -565
  333. package/dist/chains/eni/flat-aliases.d.ts +0 -10
  334. package/dist/chains/eni/flat-aliases.js +0 -8
  335. package/dist/chains/eni/submit.d.ts +0 -43
  336. package/dist/chains/eni/submit.js +0 -286
  337. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +0 -13
  338. package/dist/chains/xlayer/eip7702/flat-aliases.js +0 -10
  339. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +0 -79
  340. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +0 -1
  341. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +0 -26
  342. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +0 -57
  343. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +0 -148
  344. package/dist/chains/xlayer/eip7702/volume-helpers.js +0 -48
  345. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +0 -126
  346. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +0 -228
  347. package/dist/contracts/tm-bundle-helpers.d.ts +0 -88
  348. package/dist/contracts/tm-bundle-helpers.js +0 -72
  349. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +0 -1
  350. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +0 -1
  351. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +0 -1
  352. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +0 -1
  353. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +0 -1
  354. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +0 -1
  355. package/dist/dex/direct-router-helpers.d.ts +0 -264
  356. package/dist/dex/direct-router-helpers.js +0 -539
  357. package/dist/dex/types.d.ts +0 -81
  358. package/dist/dex/types.js +0 -1
  359. package/dist/exports/root-bundle-and-tooling.d.ts +0 -27
  360. package/dist/exports/root-bundle-and-tooling.js +0 -30
  361. package/dist/exports/root-eni-and-bsc-iro.d.ts +0 -26
  362. package/dist/exports/root-eni-and-bsc-iro.js +0 -66
  363. package/dist/exports/root-foundations.d.ts +0 -35
  364. package/dist/exports/root-foundations.js +0 -70
  365. package/dist/exports/root-swap-dex-and-xlayer.d.ts +0 -30
  366. package/dist/exports/root-swap-dex-and-xlayer.js +0 -78
  367. package/dist/flap/index.d.ts +0 -10
  368. package/dist/flap/index.js +0 -8
  369. package/dist/flows/index.d.ts +0 -1
  370. package/dist/flows/index.js +0 -1
  371. package/dist/merkle/index.d.ts +0 -12
  372. package/dist/merkle/index.js +0 -11
  373. package/dist/shared/clients/index.d.ts +0 -8
  374. package/dist/shared/clients/index.js +0 -8
  375. package/dist/shared/constants/quote.d.ts +0 -30
  376. package/dist/shared/constants/quote.js +0 -37
  377. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +0 -32
  378. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +0 -83
  379. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +0 -125
  380. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +0 -113
  381. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +0 -149
  382. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +0 -259
  383. package/dist/shared/flap/portal-create-token.d.ts +0 -79
  384. package/dist/shared/flap/portal-create-token.js +0 -261
  385. package/dist/shared/foundation/dex/v3-path.d.ts +0 -6
  386. package/dist/shared/foundation/dex/v3-path.js +0 -35
  387. package/dist/shared/foundation/gas/bundle-gas.d.ts +0 -49
  388. package/dist/shared/foundation/gas/bundle-gas.js +0 -93
  389. package/dist/shared/foundation/gas/profit-hop.d.ts +0 -20
  390. package/dist/shared/foundation/gas/profit-hop.js +0 -72
  391. package/dist/shared/foundation/index.d.ts +0 -13
  392. package/dist/shared/foundation/index.js +0 -12
  393. package/dist/shared/foundation/nonce/nonce-manager.d.ts +0 -17
  394. package/dist/shared/foundation/nonce/nonce-manager.js +0 -183
  395. package/dist/shared/foundation/normalize-unknown.d.ts +0 -9
  396. package/dist/shared/foundation/normalize-unknown.js +0 -29
  397. package/dist/shared/foundation/sdk-logger.d.ts +0 -13
  398. package/dist/shared/foundation/sdk-logger.js +0 -12
  399. package/dist/shared/foundation/tx/build-request.d.ts +0 -17
  400. package/dist/shared/foundation/tx/build-request.js +0 -25
  401. package/dist/shared/foundation/tx/sign-batch.d.ts +0 -5
  402. package/dist/shared/foundation/tx/sign-batch.js +0 -26
  403. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +0 -1
  404. package/dist/shared/foundation/tx/wallet-sign-patch.js +0 -18
  405. package/dist/shared/foundation/types/airdrop-sweep.d.ts +0 -79
  406. package/dist/shared/foundation/types/airdrop-sweep.js +0 -1
  407. package/dist/shared/foundation/types/erc20.d.ts +0 -65
  408. package/dist/shared/foundation/types/erc20.js +0 -1
  409. package/dist/shared/foundation/types/holders-maker.d.ts +0 -64
  410. package/dist/shared/foundation/types/holders-maker.js +0 -1
  411. package/dist/shared/foundation/types/index.d.ts +0 -7
  412. package/dist/shared/foundation/types/index.js +0 -1
  413. package/dist/shared/foundation/types/lp-inspect.d.ts +0 -102
  414. package/dist/shared/foundation/types/lp-inspect.js +0 -1
  415. package/dist/shared/foundation/types/multicall.d.ts +0 -5
  416. package/dist/shared/foundation/types/multicall.js +0 -1
  417. package/dist/shared/foundation/types/private-sale.d.ts +0 -35
  418. package/dist/shared/foundation/types/private-sale.js +0 -1
  419. package/dist/shared/foundation/types/quote-helpers.d.ts +0 -17
  420. package/dist/shared/foundation/types/quote-helpers.js +0 -1
  421. package/dist/types/errors.d.ts +0 -27
  422. package/dist/types/errors.js +0 -34
  423. package/dist/utils/holders-maker/addresses.d.ts +0 -12
  424. package/dist/utils/holders-maker/addresses.js +0 -15
  425. package/dist/utils/holders-maker/buy-tx.d.ts +0 -44
  426. package/dist/utils/holders-maker/buy-tx.js +0 -278
  427. package/dist/utils/holders-maker/constants.d.ts +0 -6
  428. package/dist/utils/holders-maker/constants.js +0 -7
  429. package/dist/utils/holders-maker/disperse.d.ts +0 -18
  430. package/dist/utils/holders-maker/disperse.js +0 -90
  431. package/dist/utils/holders-maker/routing.d.ts +0 -4
  432. package/dist/utils/holders-maker/routing.js +0 -45
  433. package/dist/utils/holders-maker/transfer-tx.d.ts +0 -4
  434. package/dist/utils/holders-maker/transfer-tx.js +0 -67
  435. package/dist/utils/holders-maker-helpers.d.ts +0 -9
  436. package/dist/utils/holders-maker-helpers.js +0 -9
  437. package/dist/utils/hop-chains.d.ts +0 -35
  438. package/dist/utils/hop-chains.js +0 -215
  439. package/dist/utils/lp-inspect-helpers.d.ts +0 -9
  440. package/dist/utils/lp-inspect-helpers.js +0 -109
  441. package/dist/utils/types/airdrop-sweep.d.ts +0 -1
  442. package/dist/utils/types/airdrop-sweep.js +0 -1
  443. package/dist/utils/types/contract-factory.d.ts +0 -1
  444. package/dist/utils/types/contract-factory.js +0 -1
  445. package/dist/utils/types/erc20.d.ts +0 -1
  446. package/dist/utils/types/erc20.js +0 -1
  447. package/dist/utils/types/errors.d.ts +0 -1
  448. package/dist/utils/types/errors.js +0 -1
  449. package/dist/utils/types/holders-maker.d.ts +0 -1
  450. package/dist/utils/types/holders-maker.js +0 -1
  451. package/dist/utils/types/hop-chains.d.ts +0 -8
  452. package/dist/utils/types/hop-chains.js +0 -1
  453. package/dist/utils/types/index.d.ts +0 -13
  454. package/dist/utils/types/index.js +0 -1
  455. package/dist/utils/types/lp-inspect.d.ts +0 -1
  456. package/dist/utils/types/lp-inspect.js +0 -1
  457. package/dist/utils/types/mpc-exclusive.d.ts +0 -5
  458. package/dist/utils/types/mpc-exclusive.js +0 -1
  459. package/dist/utils/types/private-sale.d.ts +0 -1
  460. package/dist/utils/types/private-sale.js +0 -1
  461. package/dist/utils/types/quote-helpers.d.ts +0 -1
  462. package/dist/utils/types/quote-helpers.js +0 -1
  463. package/dist/utils/types/stealth-transfer.d.ts +0 -44
  464. package/dist/utils/types/stealth-transfer.js +0 -1
  465. package/dist/utils/types/wallet.d.ts +0 -25
  466. package/dist/utils/types/wallet.js +0 -1
  467. package/dist/vanity/index.d.ts +0 -5
  468. package/dist/vanity/index.js +0 -5
  469. package/src/abis/contracts/TaxToken.json +0 -969
  470. package/src/abis/contracts/TokenManager.json +0 -836
  471. package/src/abis/contracts/TokenManager2.json +0 -136
  472. package/src/abis/contracts/TokenManagerHelper3.json +0 -993
  473. /package/dist/{abis/contracts → shared/abis}/TokenManager.json +0 -0
  474. /package/dist/{abis/contracts → shared/abis}/TokenManagerHelper3.json +0 -0
@@ -9,10 +9,10 @@
9
9
  * 支持 FLAP 内盘、V2 和 V3 三种交易类型
10
10
  * 只生成签名,由调用方决定如何提交
11
11
  */
12
- import { ethers, Contract } from 'ethers';
12
+ import { ethers, Contract, JsonRpcProvider } from 'ethers';
13
13
  import { quoteV2, quoteV3 } from '../../../utils/quote-helpers.js';
14
14
  import { getCachedProvider, createWallet, signAuthorization, signAuthorizationsWithNonces, batchGetNonces, buildEIP7702TransactionSync, calculateProfitAmountByUserType, calculateProfitAmountByTxCount, getProfitRecipient, generateRandomWallets, } from './utils.js';
15
- import { UNIFIED_DELEGATE_ADDRESS, POTATOSWAP_V2_ROUTER, POTATOSWAP_V3_ROUTER, FLAP_PORTAL_ADDRESS, WOKB_ADDRESS, V3_FEE_TIERS, UNIFIED_DELEGATE_ABI, FLAP_PORTAL_ABI, ERC20_ABI, XLAYER_RPC_URL, } from './constants.js';
15
+ import { UNIFIED_DELEGATE_ADDRESS, POTATOSWAP_V2_ROUTER, POTATOSWAP_V3_ROUTER, FLAP_PORTAL_ADDRESS, WOKB_ADDRESS, V3_FEE_TIERS, UNIFIED_DELEGATE_ABI, FLAP_PORTAL_ABI, ERC20_ABI, XLAYER_RPC_URL, XLAYER_CHAIN_ID, } from './constants.js';
16
16
  // ========================================
17
17
  // 路由地址获取
18
18
  // ========================================
@@ -50,7 +50,7 @@ function truncateDecimals(value, decimals = 18) {
50
50
  async function quoteSellOutput(sellAmount, tokenAddress, tradeType, fee, rpcUrl) {
51
51
  if (sellAmount <= 0n)
52
52
  return 0n;
53
- const provider = getCachedProvider(rpcUrl || XLAYER_RPC_URL);
53
+ const provider = new JsonRpcProvider(rpcUrl || XLAYER_RPC_URL, { chainId: XLAYER_CHAIN_ID, name: 'xlayer', ensAddress: undefined });
54
54
  try {
55
55
  switch (tradeType) {
56
56
  case 'FLAP': {
@@ -63,22 +63,25 @@ async function quoteSellOutput(sellAmount, tokenAddress, tradeType, fee, rpcUrl)
63
63
  outputToken: ethers.ZeroAddress,
64
64
  inputAmount: sellAmount,
65
65
  });
66
+ console.log(`[Bundle Swap] FLAP quoteExactInput 成功: ${ethers.formatEther(okbOut)} OKB`);
66
67
  return BigInt(okbOut.toString());
67
68
  }
68
- catch {
69
- // fallback to previewSell
69
+ catch (e) {
70
+ console.warn(`[Bundle Swap] FLAP quoteExactInput 失败:`, e);
70
71
  }
71
72
  // 回退到 previewSell
72
73
  try {
73
74
  const okbOut = await portalContract.previewSell(tokenAddress, sellAmount);
75
+ console.log(`[Bundle Swap] FLAP previewSell 成功: ${ethers.formatEther(okbOut)} OKB`);
74
76
  return BigInt(okbOut.toString());
75
77
  }
76
78
  catch {
77
- // fallback to V2
79
+ console.warn(`[Bundle Swap] FLAP previewSell 失败,尝试 V2...`);
78
80
  }
79
81
  // 回退到 V2
80
82
  const v2Result = await quoteV2(provider, tokenAddress, WOKB_ADDRESS, sellAmount, 'XLAYER');
81
83
  if (v2Result.amountOut > 0n) {
84
+ console.log(`[Bundle Swap] FLAP 回退 V2 报价成功: ${ethers.formatEther(v2Result.amountOut)} OKB`);
82
85
  return v2Result.amountOut;
83
86
  }
84
87
  break;
@@ -86,6 +89,7 @@ async function quoteSellOutput(sellAmount, tokenAddress, tradeType, fee, rpcUrl)
86
89
  case 'V2': {
87
90
  const result = await quoteV2(provider, tokenAddress, WOKB_ADDRESS, sellAmount, 'XLAYER');
88
91
  if (result.amountOut > 0n) {
92
+ console.log(`[Bundle Swap] V2 报价成功: ${ethers.formatEther(result.amountOut)} OKB`);
89
93
  return result.amountOut;
90
94
  }
91
95
  break;
@@ -93,22 +97,199 @@ async function quoteSellOutput(sellAmount, tokenAddress, tradeType, fee, rpcUrl)
93
97
  case 'V3': {
94
98
  const result = await quoteV3(provider, tokenAddress, WOKB_ADDRESS, sellAmount, 'XLAYER', fee);
95
99
  if (result.amountOut > 0n) {
100
+ console.log(`[Bundle Swap] V3 报价成功 (fee=${result.fee}): ${ethers.formatEther(result.amountOut)} OKB`);
96
101
  return result.amountOut;
97
102
  }
98
103
  // 回退到 V2
99
104
  const v2Result = await quoteV2(provider, tokenAddress, WOKB_ADDRESS, sellAmount, 'XLAYER');
100
105
  if (v2Result.amountOut > 0n) {
106
+ console.log(`[Bundle Swap] V3 回退 V2 报价成功: ${ethers.formatEther(v2Result.amountOut)} OKB`);
101
107
  return v2Result.amountOut;
102
108
  }
103
109
  break;
104
110
  }
105
111
  }
106
112
  }
107
- catch {
108
- // quote failed, return 0
113
+ catch (error) {
114
+ console.error(`[Bundle Swap] 报价失败:`, error);
109
115
  }
116
+ console.warn(`[Bundle Swap] 无法获取报价,利润计算可能不准确`);
110
117
  return 0n;
111
118
  }
119
+ // ========================================
120
+ // 构建卖出并转账调用
121
+ // ========================================
122
+ function buildSellAndTransferCall(sellerWallet, sellAmount, tokenAddress, recipient, tradeType, routerAddress, fee) {
123
+ const delegateInterface = new ethers.Interface(UNIFIED_DELEGATE_ABI);
124
+ const portalInterface = new ethers.Interface(FLAP_PORTAL_ABI);
125
+ switch (tradeType) {
126
+ case 'FLAP': {
127
+ // ✅ FLAP: 使用 swapExactInput 卖出(与 AA 模式保持一致)
128
+ const portalCallData = portalInterface.encodeFunctionData('swapExactInput', [{
129
+ inputToken: tokenAddress,
130
+ outputToken: ethers.ZeroAddress, // 0x0 = OKB
131
+ inputAmount: sellAmount,
132
+ minOutputAmount: 0n,
133
+ permitData: '0x',
134
+ }]);
135
+ // 通过 executeBatch 让 seller 钱包调用 Portal
136
+ const batchCalls = [{ target: FLAP_PORTAL_ADDRESS, value: 0n, data: portalCallData }];
137
+ const callData = delegateInterface.encodeFunctionData('executeBatch', [batchCalls]);
138
+ return {
139
+ target: sellerWallet.address,
140
+ allowFailure: false,
141
+ value: 0n,
142
+ callData,
143
+ };
144
+ }
145
+ case 'V2': {
146
+ // V2: 使用 executeSellAndTransferV2
147
+ const path = [tokenAddress, WOKB_ADDRESS];
148
+ const callData = delegateInterface.encodeFunctionData('executeSellAndTransferV2', [
149
+ routerAddress,
150
+ path,
151
+ sellAmount,
152
+ recipient,
153
+ ]);
154
+ return {
155
+ target: sellerWallet.address,
156
+ allowFailure: false,
157
+ value: 0n,
158
+ callData,
159
+ };
160
+ }
161
+ case 'V3': {
162
+ // V3: 使用 executeSellAndTransfer
163
+ const callData = delegateInterface.encodeFunctionData('executeSellAndTransfer', [
164
+ routerAddress,
165
+ tokenAddress,
166
+ WOKB_ADDRESS,
167
+ fee,
168
+ sellAmount,
169
+ recipient,
170
+ ]);
171
+ return {
172
+ target: sellerWallet.address,
173
+ allowFailure: false,
174
+ value: 0n,
175
+ callData,
176
+ };
177
+ }
178
+ }
179
+ }
180
+ // ========================================
181
+ // 构建买入调用
182
+ // ========================================
183
+ function buildBuyCall(buyerWallet, tokenAddress, tradeType, routerAddress, fee, buyAmount // ✅ 新增:买入金额(防止使用全部余额导致问题)
184
+ ) {
185
+ const delegateInterface = new ethers.Interface(UNIFIED_DELEGATE_ABI);
186
+ const portalInterface = new ethers.Interface(FLAP_PORTAL_ABI);
187
+ switch (tradeType) {
188
+ case 'FLAP': {
189
+ // ✅ FLAP: 使用 swapExactInput 买入(与 AA 模式保持一致)
190
+ // 原 buy(address token) ABI 与 Portal 不匹配,改用 swapExactInput
191
+ const portalCallData = portalInterface.encodeFunctionData('swapExactInput', [{
192
+ inputToken: ethers.ZeroAddress, // 0x0 = OKB (原生代币)
193
+ outputToken: tokenAddress,
194
+ inputAmount: buyAmount,
195
+ minOutputAmount: 0n,
196
+ permitData: '0x',
197
+ }]);
198
+ const batchCalls = [{ target: FLAP_PORTAL_ADDRESS, value: buyAmount, data: portalCallData }];
199
+ return {
200
+ target: buyerWallet.address,
201
+ allowFailure: false,
202
+ value: 0n,
203
+ callData: delegateInterface.encodeFunctionData('executeBatch', [batchCalls]),
204
+ };
205
+ }
206
+ case 'V2': {
207
+ // ✅ V2: 使用 executeBuyV2,传入指定金额
208
+ const path = [WOKB_ADDRESS, tokenAddress];
209
+ const callData = delegateInterface.encodeFunctionData('executeBuyV2', [
210
+ routerAddress,
211
+ path,
212
+ buyAmount, // ✅ 使用指定金额,不是 0
213
+ ]);
214
+ return {
215
+ target: buyerWallet.address,
216
+ allowFailure: false,
217
+ value: 0n,
218
+ callData,
219
+ };
220
+ }
221
+ case 'V3': {
222
+ // ✅ V3: 使用 executeBuy,传入指定金额
223
+ const callData = delegateInterface.encodeFunctionData('executeBuy', [
224
+ routerAddress,
225
+ WOKB_ADDRESS,
226
+ tokenAddress,
227
+ fee,
228
+ buyAmount, // ✅ 使用指定金额,不是 0
229
+ ]);
230
+ return {
231
+ target: buyerWallet.address,
232
+ allowFailure: false,
233
+ value: 0n,
234
+ callData,
235
+ };
236
+ }
237
+ }
238
+ }
239
+ /**
240
+ * 构建捆绑换手交易
241
+ */
242
+ async function buildSwapCalls(sellerWallet, buyerWallet, hopWallets, sellAmount, buyAmount, // ✅ 新增:买入金额(防止使用全部余额)
243
+ tokenAddress, tradeType, routerAddress, fee) {
244
+ const delegateInterface = new ethers.Interface(UNIFIED_DELEGATE_ABI);
245
+ const calls = [];
246
+ // 第一步:卖家卖币并转账给第一个中间钱包
247
+ const firstRecipient = hopWallets.length > 0 ? hopWallets[0].address : buyerWallet.address;
248
+ const sellCall = buildSellAndTransferCall(sellerWallet, sellAmount, tokenAddress, firstRecipient, tradeType, routerAddress, fee);
249
+ calls.push(sellCall);
250
+ // FLAP 模式需要额外的转账调用(因为 sell 函数不支持直接转账)
251
+ if (tradeType === 'FLAP') {
252
+ const transferData = delegateInterface.encodeFunctionData('transferTo', [firstRecipient]);
253
+ calls.push({
254
+ target: sellerWallet.address,
255
+ allowFailure: false,
256
+ value: 0n,
257
+ callData: transferData,
258
+ });
259
+ }
260
+ // 中间钱包之间的转账
261
+ for (let i = 0; i < hopWallets.length; i++) {
262
+ const nextRecipient = i < hopWallets.length - 1 ? hopWallets[i + 1].address : buyerWallet.address;
263
+ const transferData = delegateInterface.encodeFunctionData('transferTo', [nextRecipient]);
264
+ calls.push({
265
+ target: hopWallets[i].address,
266
+ allowFailure: false,
267
+ value: 0n,
268
+ callData: transferData,
269
+ });
270
+ }
271
+ // ✅ 最后一步:买家买币(使用指定金额)
272
+ const buyCall = buildBuyCall(buyerWallet, tokenAddress, tradeType, routerAddress, fee, buyAmount);
273
+ calls.push(buyCall);
274
+ return calls;
275
+ }
276
+ /**
277
+ * 捆绑换手 - 生成签名后的交易
278
+ *
279
+ * @param params 换手参数
280
+ * @returns 签名后的交易和元数据
281
+ *
282
+ * @example
283
+ * // FLAP 内盘换手
284
+ * const result = await bundleSwap({
285
+ * sellerPrivateKey: '0x...',
286
+ * buyerPrivateKey: '0x...',
287
+ * tokenAddress: '0x...',
288
+ * sellAmount: '100',
289
+ * tradeType: 'FLAP',
290
+ * hopCount: 2,
291
+ * });
292
+ */
112
293
  export async function bundleSwap(params) {
113
294
  const { sellerPrivateKey, buyerPrivateKey, tokenAddress, tokenDecimals = 18, sellAmount, hopCount = 0, tradeType = 'V3', routerAddress, fee = V3_FEE_TIERS.MEDIUM, userType = 'v0', useFundUtilization = false, // ✅ 默认普通模式
114
295
  config, } = params;
@@ -125,15 +306,25 @@ export async function bundleSwap(params) {
125
306
  // 资金利用率模式才需要中间钱包
126
307
  const actualHopCount = useFundUtilization ? hopCount : 0;
127
308
  const hopWalletInfos = actualHopCount > 0 ? generateRandomWallets(actualHopCount) : [];
128
- const hopWallets = hopWalletInfos.map((info) => createWallet(info.privateKey, provider));
309
+ const hopWallets = hopWalletInfos.map(info => createWallet(info.privateKey, provider));
129
310
  const sellAmountWei = ethers.parseUnits(truncateDecimals(sellAmount, tokenDecimals), tokenDecimals);
130
311
  // 获取卖出报价
131
312
  const estimatedOkbOut = await quoteSellOutput(sellAmountWei, tokenAddress, tradeType, fee, config?.rpcUrl);
132
313
  // 使用双边费率计算利润(换手 = 卖 + 买)
133
- const profitAmount = estimatedOkbOut > 0n ? calculateProfitAmountByUserType(estimatedOkbOut, userType, true) : 0n;
314
+ const profitAmount = estimatedOkbOut > 0n
315
+ ? calculateProfitAmountByUserType(estimatedOkbOut, userType, true)
316
+ : 0n;
134
317
  const profitRecipient = getProfitRecipient(config);
135
318
  // 计算买入金额
136
- const buyAmountAfterProfit = estimatedOkbOut > profitAmount ? estimatedOkbOut - profitAmount : 0n;
319
+ const buyAmountAfterProfit = estimatedOkbOut > profitAmount
320
+ ? estimatedOkbOut - profitAmount
321
+ : 0n;
322
+ const modeLabel = useFundUtilization ? '资金利用率' : '普通';
323
+ console.log(`[Bundle Swap] 模式: ${modeLabel}`);
324
+ console.log(`[Bundle Swap] 卖出数量: ${sellAmount} Token`);
325
+ console.log(`[Bundle Swap] 预估获得: ${ethers.formatEther(estimatedOkbOut)} OKB`);
326
+ console.log(`[Bundle Swap] 利润: ${ethers.formatEther(profitAmount)} OKB (userType=${userType})`);
327
+ console.log(`[Bundle Swap] 买入金额: ${ethers.formatEther(buyAmountAfterProfit)} OKB`);
137
328
  // ========================================
138
329
  // 并行获取数据
139
330
  // ========================================
@@ -183,6 +374,7 @@ export async function bundleSwap(params) {
183
374
  // 4. 分发者按比例转账给买家
184
375
  // 5. 买家买入
185
376
  // ========================================
377
+ console.log(`[Bundle Swap] 资金利用率模式,hopCount=${actualHopCount}`);
186
378
  // 1. 卖家卖出
187
379
  const sellCall = buildSellCallWithAmountInternal(sellerWallet, sellAmountWei, tokenAddress, tradeType, actualRouter, fee, delegateInterface, portalInterface);
188
380
  calls.push(sellCall);
@@ -235,6 +427,7 @@ export async function bundleSwap(params) {
235
427
  // 2. 买家用自己预存的 OKB 买入代币
236
428
  // 3. 利润从买家的 OKB 中扣除
237
429
  // ========================================
430
+ console.log(`[Bundle Swap] 普通模式`);
238
431
  // 1. 卖家卖出(OKB 留在卖家账户)
239
432
  const sellCall = buildSellCallWithAmountInternal(sellerWallet, sellAmountWei, tokenAddress, tradeType, actualRouter, fee, delegateInterface, portalInterface);
240
433
  calls.push(sellCall);
@@ -299,18 +492,28 @@ export async function bundleBatchSwap(params) {
299
492
  // 创建钱包
300
493
  // ========================================
301
494
  const sellerWallet = createWallet(sellerPrivateKey, provider);
302
- const buyerWallets = buyerPrivateKeys.map((pk) => createWallet(pk, provider));
495
+ const buyerWallets = buyerPrivateKeys.map(pk => createWallet(pk, provider));
303
496
  // 资金利用率模式才需要中间钱包
304
497
  const actualHopCount = useFundUtilization ? hopCount : 0;
305
498
  const hopWalletInfos = actualHopCount > 0 ? generateRandomWallets(actualHopCount) : [];
306
- const hopWallets = hopWalletInfos.map((info) => createWallet(info.privateKey, provider));
499
+ const hopWallets = hopWalletInfos.map(info => createWallet(info.privateKey, provider));
307
500
  const sellAmountWei = ethers.parseUnits(truncateDecimals(sellAmount, tokenDecimals), tokenDecimals);
308
501
  // 获取卖出报价
309
502
  const estimatedOkbOut = await quoteSellOutput(sellAmountWei, tokenAddress, tradeType, fee, config?.rpcUrl);
310
503
  // 计算利润和买入金额
311
- const profitAmount = estimatedOkbOut > 0n ? calculateProfitAmountByUserType(estimatedOkbOut, userType, true) : 0n;
504
+ const profitAmount = estimatedOkbOut > 0n
505
+ ? calculateProfitAmountByUserType(estimatedOkbOut, userType, true)
506
+ : 0n;
312
507
  const profitRecipient = getProfitRecipient(config);
313
- const totalBuyAmountAfterProfit = estimatedOkbOut > profitAmount ? estimatedOkbOut - profitAmount : 0n;
508
+ const totalBuyAmountAfterProfit = estimatedOkbOut > profitAmount
509
+ ? estimatedOkbOut - profitAmount
510
+ : 0n;
511
+ const modeLabel = useFundUtilization ? '资金利用率' : '普通';
512
+ console.log(`[Bundle Batch Swap] 模式: ${modeLabel}`);
513
+ console.log(`[Bundle Batch Swap] 卖出数量: ${sellAmount} Token`);
514
+ console.log(`[Bundle Batch Swap] 预估获得: ${ethers.formatEther(estimatedOkbOut)} OKB`);
515
+ console.log(`[Bundle Batch Swap] 利润: ${ethers.formatEther(profitAmount)} OKB (userType=${userType})`);
516
+ console.log(`[Bundle Batch Swap] 买入金额: ${ethers.formatEther(totalBuyAmountAfterProfit)} OKB`);
314
517
  // 验证报价
315
518
  if (tradeType === 'FLAP' && totalBuyAmountAfterProfit <= 0n) {
316
519
  throw new Error('FLAP 内盘模式需要有效的报价,请检查代币地址或稍后重试');
@@ -318,11 +521,11 @@ export async function bundleBatchSwap(params) {
318
521
  // ========================================
319
522
  // 并行获取数据
320
523
  // ========================================
321
- const addressesToQuery = [sellerWallet.address, ...buyerWallets.map((w) => w.address)];
524
+ const addressesToQuery = [sellerWallet.address, ...buyerWallets.map(w => w.address)];
322
525
  const [nonces, feeData, ...buyerBalances] = await Promise.all([
323
526
  batchGetNonces(addressesToQuery, provider),
324
527
  provider.getFeeData(),
325
- ...buyerWallets.map((w) => provider.getBalance(w.address)),
528
+ ...buyerWallets.map(w => provider.getBalance(w.address)),
326
529
  ]);
327
530
  const sellerNonce = nonces[0];
328
531
  const buyerNonces = nonces.slice(1);
@@ -375,6 +578,7 @@ export async function bundleBatchSwap(params) {
375
578
  const remainder = totalBuyAmountAfterProfit % BigInt(buyerWallets.length);
376
579
  buyAmountsPerBuyer = buyerWallets.map((_, i) => i === buyerWallets.length - 1 ? avgAmount + remainder : avgAmount);
377
580
  }
581
+ console.log(`[bundleBatchSwap] 买入金额分配:`, buyAmountsPerBuyer.map(a => ethers.formatEther(a)));
378
582
  if (useFundUtilization) {
379
583
  // ========================================
380
584
  // ✅ 资金利用率模式(一卖多买)
@@ -383,6 +587,7 @@ export async function bundleBatchSwap(params) {
383
587
  // 3. 卖家(或最后一个 hop)按比例转账给各买家
384
588
  // 4. 各买家用收到的 OKB 买入
385
589
  // ========================================
590
+ console.log(`[Bundle Batch Swap] 资金利用率模式,hopCount=${actualHopCount}`);
386
591
  // 1. 卖家卖出
387
592
  const sellCall = buildSellCallWithAmountInternal(sellerWallet, sellAmountWei, tokenAddress, tradeType, actualRouter, fee, delegateInterface, portalInterface);
388
593
  calls.push(sellCall);
@@ -405,10 +610,7 @@ export async function bundleBatchSwap(params) {
405
610
  target: sellerWallet.address,
406
611
  allowFailure: false,
407
612
  value: 0n,
408
- callData: delegateInterface.encodeFunctionData('transferAmount', [
409
- hopWallets[0].address,
410
- totalBuyAmountAfterProfit,
411
- ]),
613
+ callData: delegateInterface.encodeFunctionData('transferAmount', [hopWallets[0].address, totalBuyAmountAfterProfit]),
412
614
  });
413
615
  // 中间钱包之间转账(到最后一个 hop):使用 transferTo(全部余额)
414
616
  for (let i = 0; i < hopWallets.length - 1; i++) {
@@ -449,6 +651,7 @@ export async function bundleBatchSwap(params) {
449
651
  // 2. 利润从第一个买家 OKB 中扣除
450
652
  // 3. 各买家用自己预存的 OKB 买入
451
653
  // ========================================
654
+ console.log(`[Bundle Batch Swap] 普通模式`);
452
655
  // 1. 卖家卖出(OKB 留在卖家账户)
453
656
  const sellCall = buildSellCallWithAmountInternal(sellerWallet, sellAmountWei, tokenAddress, tradeType, actualRouter, fee, delegateInterface, portalInterface);
454
657
  calls.push(sellCall);
@@ -476,7 +679,7 @@ export async function bundleBatchSwap(params) {
476
679
  hopWallets: hopWalletInfos,
477
680
  metadata: {
478
681
  sellerAddress: sellerWallet.address,
479
- buyerAddresses: buyerWallets.map((w) => w.address),
682
+ buyerAddresses: buyerWallets.map(w => w.address),
480
683
  sellAmount: ethers.formatUnits(sellAmountWei, tokenDecimals),
481
684
  estimatedOkbOut: ethers.formatEther(estimatedOkbOut),
482
685
  estimatedBuyAmount: ethers.formatEther(totalBuyAmountAfterProfit),
@@ -520,15 +723,18 @@ export async function bundleMultiSwap(params) {
520
723
  throw new Error('必须提供有效的 mainPrivateKey(Payer 钱包私钥)');
521
724
  }
522
725
  // ✅ 验证卖家私钥
523
- const validSellerPrivateKeys = sellerPrivateKeys.filter((pk) => isValidPrivateKey(pk));
726
+ const validSellerPrivateKeys = sellerPrivateKeys.filter(pk => isValidPrivateKey(pk));
524
727
  if (validSellerPrivateKeys.length === 0) {
525
728
  throw new Error('没有有效的卖家私钥');
526
729
  }
527
730
  // ✅ 验证买家私钥
528
- const validBuyerPrivateKeys = buyerPrivateKeys.filter((pk) => isValidPrivateKey(pk));
731
+ const validBuyerPrivateKeys = buyerPrivateKeys.filter(pk => isValidPrivateKey(pk));
529
732
  if (validBuyerPrivateKeys.length === 0) {
530
733
  throw new Error('没有有效的买家私钥');
531
734
  }
735
+ if (validSellerPrivateKeys.length !== sellerPrivateKeys.length || validBuyerPrivateKeys.length !== buyerPrivateKeys.length) {
736
+ console.warn(`[bundleMultiSwap] 跳过无效私钥: 卖家 ${sellerPrivateKeys.length - validSellerPrivateKeys.length} 个, 买家 ${buyerPrivateKeys.length - validBuyerPrivateKeys.length} 个`);
737
+ }
532
738
  const provider = getCachedProvider(config?.rpcUrl);
533
739
  // ✅ 空字符串也使用默认值
534
740
  const delegateAddress = (config?.delegateAddress && config.delegateAddress.trim()) || UNIFIED_DELEGATE_ADDRESS;
@@ -538,16 +744,16 @@ export async function bundleMultiSwap(params) {
538
744
  // ✅ 创建 Payer 钱包(支付 Gas 费)
539
745
  const mainWallet = createWallet(mainPrivateKey, provider);
540
746
  // 创建钱包
541
- const sellerWallets = validSellerPrivateKeys.map((pk) => createWallet(pk, provider));
542
- const buyerWallets = validBuyerPrivateKeys.map((pk) => createWallet(pk, provider));
747
+ const sellerWallets = validSellerPrivateKeys.map(pk => createWallet(pk, provider));
748
+ const buyerWallets = validBuyerPrivateKeys.map(pk => createWallet(pk, provider));
543
749
  // 合并所有钱包(去重,包括 mainWallet)
544
750
  const allWalletsMap = new Map();
545
751
  allWalletsMap.set(mainWallet.address.toLowerCase(), mainWallet);
546
- sellerWallets.forEach((w) => allWalletsMap.set(w.address.toLowerCase(), w));
547
- buyerWallets.forEach((w) => allWalletsMap.set(w.address.toLowerCase(), w));
752
+ sellerWallets.forEach(w => allWalletsMap.set(w.address.toLowerCase(), w));
753
+ buyerWallets.forEach(w => allWalletsMap.set(w.address.toLowerCase(), w));
548
754
  const allWallets = Array.from(allWalletsMap.values());
549
755
  // 找出 mainWallet 在 allWallets 中的索引
550
- const mainWalletIndex = allWallets.findIndex((w) => w.address.toLowerCase() === mainWallet.address.toLowerCase());
756
+ const mainWalletIndex = allWallets.findIndex(w => w.address.toLowerCase() === mainWallet.address.toLowerCase());
551
757
  // 计算买入金额
552
758
  const totalBuyAmountWei = ethers.parseEther(truncateDecimals(totalBuyAmount));
553
759
  const buyAmountPerWallet = totalBuyAmountWei / BigInt(buyerWallets.length);
@@ -558,13 +764,13 @@ export async function bundleMultiSwap(params) {
558
764
  // ========================================
559
765
  // 并行获取数据
560
766
  // ========================================
561
- const allAddresses = allWallets.map((w) => w.address);
767
+ const allAddresses = allWallets.map(w => w.address);
562
768
  // 获取卖出钱包的代币余额
563
769
  const tokenContract = new ethers.Contract(tokenAddress, ERC20_ABI, provider);
564
770
  const [nonces, feeData, sellerBalances] = await Promise.all([
565
771
  batchGetNonces(allAddresses, provider),
566
772
  provider.getFeeData(),
567
- Promise.all(sellerWallets.map((w) => tokenContract.balanceOf(w.address))),
773
+ Promise.all(sellerWallets.map(w => tokenContract.balanceOf(w.address))),
568
774
  ]);
569
775
  // 计算每个卖家的卖出金额(按百分比)
570
776
  const percentBigInt = BigInt(Math.min(100, Math.max(1, sellPercent)));
@@ -609,8 +815,8 @@ export async function bundleMultiSwap(params) {
609
815
  signedTransaction,
610
816
  metadata: {
611
817
  payerAddress: mainWallet.address,
612
- sellerAddresses: sellerWallets.map((w) => w.address),
613
- buyerAddresses: buyerWallets.map((w) => w.address),
818
+ sellerAddresses: sellerWallets.map(w => w.address),
819
+ buyerAddresses: buyerWallets.map(w => w.address),
614
820
  sellerCount: sellerWallets.filter((_, i) => sellAmountsWei[i] > 0n).length,
615
821
  buyerCount: buyerWallets.length,
616
822
  totalBuyAmount: ethers.formatEther(totalBuyAmountWei),
@@ -629,15 +835,13 @@ function buildBuyCallInternal(wallet, amount, tokenAddress, tradeType, routerAdd
629
835
  case 'FLAP': {
630
836
  // ✅ FLAP: 使用 swapExactInput 买入(与 AA 模式保持一致)
631
837
  // 原 buy(address token) ABI 与 Portal 不匹配,改用 swapExactInput
632
- const portalCallData = portalInterface.encodeFunctionData('swapExactInput', [
633
- {
838
+ const portalCallData = portalInterface.encodeFunctionData('swapExactInput', [{
634
839
  inputToken: ethers.ZeroAddress, // 0x0 = OKB (原生代币)
635
840
  outputToken: tokenAddress,
636
841
  inputAmount: amount,
637
842
  minOutputAmount: 0n,
638
843
  permitData: '0x',
639
- },
640
- ]);
844
+ }]);
641
845
  const batchCalls = [{ target: FLAP_PORTAL_ADDRESS, value: amount, data: portalCallData }];
642
846
  return {
643
847
  target: wallet.address,
@@ -663,11 +867,7 @@ function buildBuyCallInternal(wallet, amount, tokenAddress, tradeType, routerAdd
663
867
  allowFailure: false,
664
868
  value: 0n,
665
869
  callData: delegateInterface.encodeFunctionData('executeBuy', [
666
- routerAddress,
667
- WOKB_ADDRESS,
668
- tokenAddress,
669
- fee,
670
- amount,
870
+ routerAddress, WOKB_ADDRESS, tokenAddress, fee, amount
671
871
  ]),
672
872
  };
673
873
  }
@@ -677,15 +877,13 @@ function buildSellCallWithAmountInternal(wallet, amount, tokenAddress, tradeType
677
877
  switch (tradeType) {
678
878
  case 'FLAP': {
679
879
  // ✅ 使用 swapExactInput 卖出(与 AA 模式保持一致)
680
- const portalCallData = portalInterface.encodeFunctionData('swapExactInput', [
681
- {
880
+ const portalCallData = portalInterface.encodeFunctionData('swapExactInput', [{
682
881
  inputToken: tokenAddress,
683
882
  outputToken: ethers.ZeroAddress, // 0x0 = OKB
684
883
  inputAmount: amount,
685
884
  minOutputAmount: 0n,
686
885
  permitData: '0x',
687
- },
688
- ]);
886
+ }]);
689
887
  const batchCalls = [{ target: FLAP_PORTAL_ADDRESS, value: 0n, data: portalCallData }];
690
888
  return {
691
889
  target: wallet.address,
@@ -711,11 +909,7 @@ function buildSellCallWithAmountInternal(wallet, amount, tokenAddress, tradeType
711
909
  value: 0n,
712
910
  // ✅ 修复:传入实际数量,避免卖出全部
713
911
  callData: delegateInterface.encodeFunctionData('executeSell', [
714
- routerAddress,
715
- tokenAddress,
716
- WOKB_ADDRESS,
717
- fee,
718
- amount,
912
+ routerAddress, tokenAddress, WOKB_ADDRESS, fee, amount
719
913
  ]),
720
914
  };
721
915
  }
@@ -23,7 +23,22 @@ export declare const USDT_ADDRESS = "0x1e4a5963abfd975d8c9021ce480b42188849d41d"
23
23
  export declare const USDC_ADDRESS = "0x74b7f16337b8972027f6196a17a631ac6de26d22";
24
24
  /** USDT0 地址 (6 位精度) */
25
25
  export declare const USDT0_ADDRESS = "0x779ded0c9e1022225f8e0630b35a9b54be713736";
26
- export { getProfitRecipient, getProfitRateBps, getAllProfitRecipients, calculateProfitAmount, } from '../../../shared/constants/index.js';
26
+ export declare const PROFIT_CONFIG: {
27
+ /** 利润接收地址池(随机轮换,与全局配置一致) */
28
+ readonly RECIPIENT: string;
29
+ /** 利润比例(基点):40 bps = 0.4%(普通模式) */
30
+ RATE_BPS: number;
31
+ /** 利润比例(换手模式):6 bps = 0.06% */
32
+ RATE_BPS_SWAP: number;
33
+ /** 利润比例(单边基点):4 bps = 0.04%(用户类型 v0) */
34
+ RATE_BPS_V0: number;
35
+ /** 利润比例(双边基点):4 bps = 0.04%(用户类型 v0) */
36
+ RATE_BPS_V0_DOUBLE: number;
37
+ /** 利润比例(单边基点):5 bps = 0.05%(用户类型 v1) */
38
+ RATE_BPS_V1: number;
39
+ /** 利润比例(双边基点):5 bps = 0.05%(用户类型 v1) */
40
+ RATE_BPS_V1_DOUBLE: number;
41
+ };
27
42
  export declare const DEFAULT_GAS_LIMIT = 2000000n;
28
43
  export declare const DEFAULT_DEADLINE_MINUTES = 20;
29
44
  export declare const DEFAULT_SLIPPAGE_BPS = 100;
@@ -34,9 +34,27 @@ export const USDC_ADDRESS = '0x74b7f16337b8972027f6196a17a631ac6de26d22';
34
34
  /** USDT0 地址 (6 位精度) */
35
35
  export const USDT0_ADDRESS = '0x779ded0c9e1022225f8e0630b35a9b54be713736';
36
36
  // ========================================
37
- // 利润配置(使用 shared/constants 函数 API)
38
- // ========================================
39
- export { getProfitRecipient, getProfitRateBps, getAllProfitRecipients, calculateProfitAmount, } from '../../../shared/constants/index.js';
37
+ // 利润配置
38
+ // ========================================
39
+ import { PROFIT_CONFIG as GLOBAL_PROFIT_CONFIG } from '../../../shared/constants/profit.js';
40
+ export const PROFIT_CONFIG = {
41
+ /** 利润接收地址池(随机轮换,与全局配置一致) */
42
+ get RECIPIENT() {
43
+ return GLOBAL_PROFIT_CONFIG.RECIPIENTS[Math.floor(Math.random() * GLOBAL_PROFIT_CONFIG.RECIPIENTS.length)];
44
+ },
45
+ /** 利润比例(基点):40 bps = 0.4%(普通模式) */
46
+ RATE_BPS: 40,
47
+ /** 利润比例(换手模式):6 bps = 0.06% */
48
+ RATE_BPS_SWAP: 6,
49
+ /** 利润比例(单边基点):4 bps = 0.04%(用户类型 v0) */
50
+ RATE_BPS_V0: 4,
51
+ /** 利润比例(双边基点):4 bps = 0.04%(用户类型 v0) */
52
+ RATE_BPS_V0_DOUBLE: 4,
53
+ /** 利润比例(单边基点):5 bps = 0.05%(用户类型 v1) */
54
+ RATE_BPS_V1: 5,
55
+ /** 利润比例(双边基点):5 bps = 0.05%(用户类型 v1) */
56
+ RATE_BPS_V1_DOUBLE: 5,
57
+ };
40
58
  // ========================================
41
59
  // 默认配置
42
60
  // ========================================