four-flap-meme-sdk 2.2.2 → 2.2.4

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