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
@@ -0,0 +1,57 @@
1
+ import { ethers } from 'ethers';
2
+ import { getCachedProvider, createWallet, generateRandomWallets, getProfitRecipient } from './utils.js';
3
+ import { UNIFIED_DELEGATE_ADDRESS, UNIFIED_DELEGATE_ABI } from './constants.js';
4
+ export function createEip7702DelegateContext(config) {
5
+ const provider = getCachedProvider(config?.rpcUrl);
6
+ const delegateAddress = (config?.delegateAddress && config.delegateAddress.trim()) || UNIFIED_DELEGATE_ADDRESS;
7
+ const delegateInterface = new ethers.Interface(UNIFIED_DELEGATE_ABI);
8
+ const profitRecipient = getProfitRecipient(config);
9
+ return { provider, delegateAddress, delegateInterface, profitRecipient };
10
+ }
11
+ export function isNativeTransferToken(tokenAddress) {
12
+ return !tokenAddress;
13
+ }
14
+ export function generateHopWalletMatrix(rowCount, hopCount, provider) {
15
+ const allHopWalletInfos = [];
16
+ const allHopWallets = [];
17
+ for (let i = 0; i < rowCount; i++) {
18
+ if (hopCount > 0) {
19
+ const hopInfos = generateRandomWallets(hopCount);
20
+ allHopWalletInfos.push(hopInfos);
21
+ allHopWallets.push(hopInfos.map((info) => createWallet(info.privateKey, provider)));
22
+ }
23
+ else {
24
+ allHopWalletInfos.push([]);
25
+ allHopWallets.push([]);
26
+ }
27
+ }
28
+ return { allHopWalletInfos, allHopWallets };
29
+ }
30
+ export function resolveDispersePayerWallets(mainPrivateKey, payerPrivateKey, provider) {
31
+ const mainWallet = createWallet(mainPrivateKey, provider);
32
+ const hasSeparatePayer = Boolean(payerPrivateKey && payerPrivateKey !== mainPrivateKey);
33
+ const payerWallet = hasSeparatePayer ? createWallet(payerPrivateKey, provider) : null;
34
+ const txSender = payerWallet ?? mainWallet;
35
+ return { mainWallet, payerWallet, txSender, hasSeparatePayer };
36
+ }
37
+ export function resolveListPayerWallet(ownerPrivateKeys, payerPrivateKey, provider, fallbackToFirst = true) {
38
+ const hasSeparatePayer = Boolean(payerPrivateKey && !ownerPrivateKeys.includes(payerPrivateKey));
39
+ const payerWallet = hasSeparatePayer ? createWallet(payerPrivateKey, provider) : null;
40
+ const mainWallet = payerWallet ?? (fallbackToFirst ? createWallet(ownerPrivateKeys[0], provider) : null);
41
+ return { payerWallet, hasSeparatePayer, mainWallet };
42
+ }
43
+ export function parseTransferAmountsWei(amounts, isNative, tokenDecimals) {
44
+ return amounts.map((amt) => (isNative ? ethers.parseEther(amt) : ethers.parseUnits(amt, tokenDecimals)));
45
+ }
46
+ export function normalizePairwiseAmounts(pairCount, amount, amounts) {
47
+ if (amounts && amounts.length > 0) {
48
+ if (amounts.length !== pairCount) {
49
+ throw new Error(`amounts 长度 (${amounts.length}) 必须与对数 (${pairCount}) 相同`);
50
+ }
51
+ return amounts;
52
+ }
53
+ if (amount !== undefined && amount.trim().length > 0) {
54
+ return new Array(pairCount).fill(amount);
55
+ }
56
+ throw new Error('必须提供 amount 或 amounts');
57
+ }
@@ -53,6 +53,8 @@ export interface BundleBuyParams {
53
53
  routerAddress?: string;
54
54
  /** V3 费率(可选,默认 2500,仅 V3 使用) */
55
55
  fee?: number;
56
+ /** 用户类型(影响利润率) */
57
+ userType?: UserType;
56
58
  /** 配置 */
57
59
  config?: EIP7702Config;
58
60
  }
@@ -87,6 +89,8 @@ export interface BundleSellParams {
87
89
  routerAddress?: string;
88
90
  /** V3 费率(可选,默认 2500,仅 V3 使用) */
89
91
  fee?: number;
92
+ /** 用户类型(影响利润率) */
93
+ userType?: UserType;
90
94
  /** 配置 */
91
95
  config?: EIP7702Config;
92
96
  }
@@ -156,6 +160,14 @@ export interface BundleSwapParams {
156
160
  routerAddress?: string;
157
161
  /** V3 费率(可选,默认 2500,仅 V3 使用) */
158
162
  fee?: number;
163
+ /** 用户类型(影响利润率) */
164
+ userType?: UserType;
165
+ /**
166
+ * 是否使用资金利用率模式(默认 false)
167
+ * - false(普通模式): 卖家卖出 OKB 留在卖家账户,买家用自己预存的 OKB 买入
168
+ * - true(资金利用率模式): 卖家卖出的 OKB 通过多跳转账给买家,买家用收到的 OKB 买入
169
+ */
170
+ useFundUtilization?: boolean;
159
171
  /** 配置 */
160
172
  config?: EIP7702Config;
161
173
  }
@@ -180,6 +192,14 @@ export interface BundleBatchSwapParams {
180
192
  routerAddress?: string;
181
193
  /** V3 费率(可选,默认 2500,仅 V3 使用) */
182
194
  fee?: number;
195
+ /** 用户类型(影响利润率) */
196
+ userType?: UserType;
197
+ /**
198
+ * 是否使用资金利用率模式(默认 false)
199
+ * - false(普通模式): 卖家卖出 OKB 留在卖家账户,买家用自己预存的 OKB 买入
200
+ * - true(资金利用率模式): 卖家卖出的 OKB 通过多跳转账给买家,买家用收到的 OKB 买入
201
+ */
202
+ useFundUtilization?: boolean;
183
203
  /** 配置 */
184
204
  config?: EIP7702Config;
185
205
  }
@@ -442,6 +462,74 @@ export interface BundleCreateToDexResult {
442
462
  profitAmount: string;
443
463
  };
444
464
  }
465
+ export interface BundleMultiSwapParams {
466
+ /** Payer 钱包私钥(支付 Gas 费) */
467
+ mainPrivateKey: string;
468
+ /** 卖出钱包私钥列表 */
469
+ sellerPrivateKeys: string[];
470
+ /** 买入钱包私钥列表 */
471
+ buyerPrivateKeys: string[];
472
+ /** 买入总金额 (OKB) */
473
+ totalBuyAmount: string;
474
+ /** 代币地址 */
475
+ tokenAddress: string;
476
+ /** 代币精度 */
477
+ tokenDecimals?: number;
478
+ /** 卖出百分比(1-100,默认 100) */
479
+ sellPercent?: number;
480
+ /** 交易类型:FLAP 内盘 / V2 / V3(默认 V3) */
481
+ tradeType?: TradeType;
482
+ /** 路由地址(可选,根据 tradeType 自动选择) */
483
+ routerAddress?: string;
484
+ /** V3 费率(可选,默认 2500,仅 V3 使用) */
485
+ fee?: number;
486
+ /** 用户类型(影响利润率) */
487
+ userType?: UserType;
488
+ /** 配置 */
489
+ config?: EIP7702Config;
490
+ }
491
+ export interface BundleMultiSwapResult {
492
+ /** 签名后的交易 */
493
+ signedTransaction: string;
494
+ /** 元数据 */
495
+ metadata: {
496
+ payerAddress: string;
497
+ sellerAddresses: string[];
498
+ buyerAddresses: string[];
499
+ sellerCount: number;
500
+ buyerCount: number;
501
+ totalBuyAmount: string;
502
+ totalSellAmount: string;
503
+ profitAmount: string;
504
+ profitRecipient: string;
505
+ userType: string;
506
+ };
507
+ }
508
+ export interface BundleApproveMultiSpendersParams {
509
+ /** 主钱包(发起交易,支付 gas) */
510
+ mainPrivateKey: string;
511
+ /** 需要授权的钱包私钥列表 */
512
+ privateKeys: string[];
513
+ /** 代币地址 */
514
+ tokenAddress: string;
515
+ /** 授权给的地址列表(多个 spender) */
516
+ spenderAddresses: string[];
517
+ /** 授权金额(可选,默认 MaxUint256) */
518
+ amount?: bigint;
519
+ /** 配置 */
520
+ config?: EIP7702Config;
521
+ }
522
+ export interface BundleApproveMultiSpendersResult {
523
+ /** 签名后的交易 */
524
+ signedTransaction: string;
525
+ /** 元数据 */
526
+ metadata: {
527
+ walletCount: number;
528
+ tokenAddress: string;
529
+ spenderAddresses: string[];
530
+ totalApproveCalls: number;
531
+ };
532
+ }
445
533
  export type AmountMode = 'average' | 'random' | 'custom';
446
534
  export interface BundleGraduateBuyParams {
447
535
  /** 代币地址 */
@@ -62,9 +62,6 @@ export type UserType = 'v0' | 'v1' | 'default';
62
62
  export declare function getProfitRateBps(userType?: UserType): number;
63
63
  /**
64
64
  * 根据用户类型获取利润率(双边/换手模式)
65
- * - v0: 4 bps = 0.04%
66
- * - v1: 5 bps = 0.05%
67
- * - default: 4 bps = 0.04%
68
65
  */
69
66
  export declare function getProfitRateBpsDouble(userType?: UserType): number;
70
67
  /**
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * EIP-7702 XLayer 工具函数
3
3
  */
4
- import { ethers, Wallet, JsonRpcProvider } from 'ethers';
4
+ import { ethers, Wallet } from 'ethers';
5
+ import { createXLayerProvider } from '../../../utils/provider-factory.js';
5
6
  import * as rlp from '@ethereumjs/rlp';
6
- import { XLAYER_CHAIN_ID, XLAYER_RPC_URL, MULTICALL3_ADDRESS, GAS_ESTIMATE, EIP7702_TX_TYPE, EIP7702_AUTH_PREFIX, MULTICALL3_ABI, PROFIT_CONFIG, DEFAULT_DEADLINE_MINUTES, } from './constants.js';
7
+ import { XLAYER_CHAIN_ID, XLAYER_RPC_URL, MULTICALL3_ADDRESS, GAS_ESTIMATE, EIP7702_TX_TYPE, EIP7702_AUTH_PREFIX, MULTICALL3_ABI, DEFAULT_DEADLINE_MINUTES, } from './constants.js';
8
+ import { getProfitRateBps as getSharedProfitRateBps, getProfitRecipient as pickRandomProfitRecipient, } from '../../../shared/constants/index.js';
7
9
  // ========================================
8
10
  // 字节转换工具
9
11
  // ========================================
@@ -41,7 +43,7 @@ const providerCache = new Map();
41
43
  export function getCachedProvider(rpcUrl = XLAYER_RPC_URL) {
42
44
  let provider = providerCache.get(rpcUrl);
43
45
  if (!provider) {
44
- provider = new JsonRpcProvider(rpcUrl, { chainId: XLAYER_CHAIN_ID, name: 'xlayer' });
46
+ provider = createXLayerProvider(rpcUrl);
45
47
  providerCache.set(rpcUrl, provider);
46
48
  }
47
49
  return provider;
@@ -220,11 +222,7 @@ export function generateRandomWallets(count) {
220
222
  // EIP-7702 授权签名
221
223
  // ========================================
222
224
  export async function signAuthorization(wallet, delegateAddress, nonce, chainId = XLAYER_CHAIN_ID) {
223
- const authData = [
224
- bigintToBytes(BigInt(chainId)),
225
- addressToBytes(delegateAddress),
226
- bigintToBytes(nonce),
227
- ];
225
+ const authData = [bigintToBytes(BigInt(chainId)), addressToBytes(delegateAddress), bigintToBytes(nonce)];
228
226
  const rlpEncoded = rlp.encode(authData);
229
227
  const toSign = new Uint8Array(1 + rlpEncoded.length);
230
228
  toSign[0] = EIP7702_AUTH_PREFIX;
@@ -253,7 +251,7 @@ export async function signAuthorizationWithNonce(wallet, delegateAddress, provid
253
251
  */
254
252
  export async function signAuthorizationsBatch(wallets, delegateAddress, provider, mainWalletIndex) {
255
253
  // 并行获取所有钱包的 nonce
256
- const nonces = await Promise.all(wallets.map(w => provider.getTransactionCount(w.address, 'pending')));
254
+ const nonces = await Promise.all(wallets.map((w) => provider.getTransactionCount(w.address, 'pending')));
257
255
  // 并行签署所有授权(签名是同步 CPU 操作,但包装成 Promise 以保持一致性)
258
256
  return Promise.all(wallets.map((wallet, i) => {
259
257
  const isMainWallet = mainWalletIndex !== undefined && i === mainWalletIndex;
@@ -295,7 +293,7 @@ export function signAuthorizationsWithNonces(wallets, nonces, delegateAddress, m
295
293
  * 批量获取多个地址的 nonce - 并行
296
294
  */
297
295
  export async function batchGetNonces(addresses, provider) {
298
- return Promise.all(addresses.map(addr => provider.getTransactionCount(addr, 'pending')));
296
+ return Promise.all(addresses.map((addr) => provider.getTransactionCount(addr, 'pending')));
299
297
  }
300
298
  // ========================================
301
299
  // EIP-7702 交易构建
@@ -314,14 +312,14 @@ export async function buildEIP7702Transaction(mainWallet, authorizations, calls,
314
312
  const maxFeePerGas = feeData.maxFeePerGas || ethers.parseUnits('50', 'gwei');
315
313
  const multicall3 = new ethers.Interface(MULTICALL3_ABI);
316
314
  const callData = multicall3.encodeFunctionData('aggregate3Value', [
317
- calls.map(c => ({
315
+ calls.map((c) => ({
318
316
  target: c.target,
319
317
  allowFailure: c.allowFailure,
320
318
  value: c.value,
321
319
  callData: c.callData,
322
- }))
320
+ })),
323
321
  ]);
324
- const authList = authorizations.map(auth => [
322
+ const authList = authorizations.map((auth) => [
325
323
  bigintToBytes(auth.chainId),
326
324
  addressToBytes(auth.address),
327
325
  bigintToBytes(auth.nonce),
@@ -372,14 +370,14 @@ export function buildEIP7702TransactionSync(mainWallet, authorizations, calls, t
372
370
  const maxFeePerGas = feeData.maxFeePerGas || ethers.parseUnits('50', 'gwei');
373
371
  const multicall3 = new ethers.Interface(MULTICALL3_ABI);
374
372
  const callData = multicall3.encodeFunctionData('aggregate3Value', [
375
- calls.map(c => ({
373
+ calls.map((c) => ({
376
374
  target: c.target,
377
375
  allowFailure: c.allowFailure,
378
376
  value: c.value,
379
377
  callData: c.callData,
380
- }))
378
+ })),
381
379
  ]);
382
- const authList = authorizations.map(auth => [
380
+ const authList = authorizations.map((auth) => [
383
381
  bigintToBytes(auth.chainId),
384
382
  addressToBytes(auth.address),
385
383
  bigintToBytes(auth.nonce),
@@ -427,29 +425,26 @@ export function buildEIP7702TransactionSync(mainWallet, authorizations, calls, t
427
425
  */
428
426
  export function getProfitRateBps(userType) {
429
427
  if (userType === 'v0')
430
- return PROFIT_CONFIG.RATE_BPS_V0;
428
+ return getSharedProfitRateBps('v0Single');
431
429
  if (userType === 'v1')
432
- return PROFIT_CONFIG.RATE_BPS_V1;
433
- return PROFIT_CONFIG.RATE_BPS_V0; // 默认使用 v0 费率
430
+ return getSharedProfitRateBps('v1Single');
431
+ return getSharedProfitRateBps('v0Single');
434
432
  }
435
433
  /**
436
434
  * 根据用户类型获取利润率(双边/换手模式)
437
- * - v0: 4 bps = 0.04%
438
- * - v1: 5 bps = 0.05%
439
- * - default: 4 bps = 0.04%
440
435
  */
441
436
  export function getProfitRateBpsDouble(userType) {
442
437
  if (userType === 'v0')
443
- return PROFIT_CONFIG.RATE_BPS_V0_DOUBLE;
438
+ return getSharedProfitRateBps('v0Double');
444
439
  if (userType === 'v1')
445
- return PROFIT_CONFIG.RATE_BPS_V1_DOUBLE;
446
- return PROFIT_CONFIG.RATE_BPS_V0_DOUBLE; // 默认使用 v0 费率
440
+ return getSharedProfitRateBps('v1Double');
441
+ return getSharedProfitRateBps('v0Double');
447
442
  }
448
443
  /**
449
444
  * 计算利润金额(旧版兼容)
450
445
  */
451
446
  export function calculateProfitAmount(totalFlowWei, isSwapMode = false) {
452
- const rateBps = isSwapMode ? PROFIT_CONFIG.RATE_BPS_SWAP : PROFIT_CONFIG.RATE_BPS;
447
+ const rateBps = getSharedProfitRateBps(isSwapMode ? 'bundleSwap' : 'normal');
453
448
  return (totalFlowWei * BigInt(rateBps)) / 10000n;
454
449
  }
455
450
  /**
@@ -478,7 +473,7 @@ export function calculateProfitAmountByTxCount(totalFlowWei, txCount, userType)
478
473
  return (totalFlowWei * BigInt(totalRateBps)) / 10000n;
479
474
  }
480
475
  export function getProfitRecipient(config) {
481
- return config?.profitRecipient ?? PROFIT_CONFIG.RECIPIENT;
476
+ return config?.profitRecipient ?? pickRandomProfitRecipient();
482
477
  }
483
478
  // ========================================
484
479
  // 时间工具
@@ -487,5 +482,5 @@ export function getDeadline(minutes = DEFAULT_DEADLINE_MINUTES) {
487
482
  return Math.floor(Date.now() / 1000) + minutes * 60;
488
483
  }
489
484
  export function delay(ms) {
490
- return new Promise(resolve => setTimeout(resolve, ms));
485
+ return new Promise((resolve) => setTimeout(resolve, ms));
491
486
  }
@@ -0,0 +1,148 @@
1
+ /**
2
+ * EIP-7702 XLayer 刷量功能
3
+ *
4
+ * 支持两种模式:
5
+ * 1. 无币模式 (Wash): 单钱包买入+卖出,不需要预先持有代币
6
+ * 2. 捆绑模式 (Bundle): 多钱包批量买入 + 批量卖出
7
+ *
8
+ * 支持池子类型:
9
+ * - FLAP: 内盘 (Flap Portal)
10
+ * - V2: PotatoSwap V2 外盘
11
+ * - V3: PotatoSwap V3 外盘
12
+ *
13
+ * 只生成签名,由调用方决定如何提交
14
+ */
15
+ import type { EIP7702Config, TradeType, GeneratedWallet } from './types.js';
16
+ import type { UserType } from './utils.js';
17
+ export type VolumeMode = 'wash' | 'bundle';
18
+ export type PoolType = 'FLAP' | 'V2' | 'V3';
19
+ /**
20
+ * 截断小数位数,避免 parseEther/parseUnits 报错
21
+ * @param value 数值字符串
22
+ * @param decimals 保留的小数位数(默认 18)
23
+ */
24
+ export declare function truncateDecimals(value: string, decimals?: number): string;
25
+ export interface VolumeProgress {
26
+ currentRound: number;
27
+ totalRounds: number;
28
+ status: 'pending' | 'running' | 'completed' | 'failed';
29
+ message?: string;
30
+ }
31
+ export interface WashVolumeParams {
32
+ /** Payer 钱包私钥(支付 Gas 费) */
33
+ mainPrivateKey: string;
34
+ /** 钱包私钥列表(每个钱包独立执行买入+卖出) */
35
+ privateKeys: string[];
36
+ /** 代币地址 */
37
+ tokenAddress: string;
38
+ /** 代币精度 */
39
+ tokenDecimals?: number;
40
+ /** 每个钱包的买入金额 (OKB) */
41
+ buyAmountPerWallet: string;
42
+ /** 卖出百分比(1-100) */
43
+ sellPercent?: number;
44
+ /** 池子类型 */
45
+ poolType?: PoolType;
46
+ /** 路由地址(V2/V3 模式) */
47
+ routerAddress?: string;
48
+ /** V3 费率 */
49
+ fee?: number;
50
+ /** 用户类型(影响利润率) */
51
+ userType?: UserType;
52
+ /** EIP-7702 配置 */
53
+ config?: EIP7702Config;
54
+ }
55
+ export interface WashVolumeResult {
56
+ signedTransaction: string;
57
+ metadata: {
58
+ walletCount: number;
59
+ buyAmountPerWallet: string;
60
+ totalBuyAmount: string;
61
+ sellPercent: number;
62
+ poolType: PoolType;
63
+ profitAmount: string;
64
+ };
65
+ }
66
+ export interface BundleVolumeParams {
67
+ mainPrivateKey: string;
68
+ buyerPrivateKeys: string[];
69
+ buyAmounts: string[];
70
+ sellerPrivateKeys: string[];
71
+ sellAmounts?: string[];
72
+ sellPercent?: number;
73
+ tokenAddress: string;
74
+ tokenDecimals?: number;
75
+ poolType?: PoolType;
76
+ routerAddress?: string;
77
+ fee?: number;
78
+ userType?: UserType;
79
+ config?: EIP7702Config;
80
+ }
81
+ export interface BundleVolumeResult {
82
+ signedTransaction: string;
83
+ metadata: {
84
+ buyerCount: number;
85
+ sellerCount: number;
86
+ totalBuyAmount: string;
87
+ totalSellAmount: string;
88
+ poolType: PoolType;
89
+ profitAmount: string;
90
+ };
91
+ }
92
+ export interface SingleRoundVolumeResult {
93
+ buySignedTransaction: string;
94
+ sellSignedTransaction: string;
95
+ metadata: {
96
+ buyAmount: string;
97
+ sellPercent: number;
98
+ walletCount: number;
99
+ };
100
+ }
101
+ export interface MakeVolumeParams {
102
+ privateKeys: string[];
103
+ tokenAddress: string;
104
+ tokenDecimals?: number;
105
+ buyAmountPerRound: string;
106
+ rounds: number;
107
+ tradeType?: TradeType;
108
+ routerAddress?: string;
109
+ fee?: number;
110
+ onProgress?: (progress: VolumeProgress) => void;
111
+ config?: EIP7702Config;
112
+ }
113
+ export interface MakeVolumeSignResult {
114
+ rounds: SingleRoundVolumeResult[];
115
+ metadata: {
116
+ totalRounds: number;
117
+ totalBuyAmount: string;
118
+ walletCount: number;
119
+ };
120
+ }
121
+ export interface SwapVolumeSignResult {
122
+ signedTransaction: string;
123
+ hopWallets: GeneratedWallet[];
124
+ metadata: {
125
+ sellerAddress: string;
126
+ buyerAddress: string;
127
+ sellAmount: string;
128
+ };
129
+ }
130
+ /**
131
+ * 无币刷量 - 每个钱包执行买入+卖出
132
+ *
133
+ * 核心逻辑:[利润刮取] + [钱包1买入] + [钱包1卖出] + [钱包2买入] + [钱包2卖出] + ...
134
+ *
135
+ * 特点:
136
+ * - 钱包不需要预先持有代币
137
+ * - 每个钱包在同一笔交易中完成买入和卖出
138
+ * - 利润从主钱包统一支付
139
+ *
140
+ * @example
141
+ * const result = await washVolume({
142
+ * privateKeys: ['0x...', '0x...'],
143
+ * tokenAddress: '0x...',
144
+ * buyAmountPerWallet: '0.01',
145
+ * sellPercent: 100,
146
+ * poolType: 'V3',
147
+ * });
148
+ */
@@ -0,0 +1,48 @@
1
+ /**
2
+ * EIP-7702 XLayer 刷量功能
3
+ *
4
+ * 支持两种模式:
5
+ * 1. 无币模式 (Wash): 单钱包买入+卖出,不需要预先持有代币
6
+ * 2. 捆绑模式 (Bundle): 多钱包批量买入 + 批量卖出
7
+ *
8
+ * 支持池子类型:
9
+ * - FLAP: 内盘 (Flap Portal)
10
+ * - V2: PotatoSwap V2 外盘
11
+ * - V3: PotatoSwap V3 外盘
12
+ *
13
+ * 只生成签名,由调用方决定如何提交
14
+ */
15
+ /**
16
+ * 截断小数位数,避免 parseEther/parseUnits 报错
17
+ * @param value 数值字符串
18
+ * @param decimals 保留的小数位数(默认 18)
19
+ */
20
+ export function truncateDecimals(value, decimals = 18) {
21
+ if (!value || value === '0')
22
+ return value;
23
+ const parts = String(value).split('.');
24
+ if (parts.length === 1)
25
+ return value;
26
+ const intPart = parts[0] || '0';
27
+ const decPart = (parts[1] || '').slice(0, decimals);
28
+ return decPart ? `${intPart}.${decPart}` : intPart;
29
+ }
30
+ /**
31
+ * 无币刷量 - 每个钱包执行买入+卖出
32
+ *
33
+ * 核心逻辑:[利润刮取] + [钱包1买入] + [钱包1卖出] + [钱包2买入] + [钱包2卖出] + ...
34
+ *
35
+ * 特点:
36
+ * - 钱包不需要预先持有代币
37
+ * - 每个钱包在同一笔交易中完成买入和卖出
38
+ * - 利润从主钱包统一支付
39
+ *
40
+ * @example
41
+ * const result = await washVolume({
42
+ * privateKeys: ['0x...', '0x...'],
43
+ * tokenAddress: '0x...',
44
+ * buyAmountPerWallet: '0.01',
45
+ * sellPercent: 100,
46
+ * poolType: 'V3',
47
+ * });
48
+ */