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,126 @@
1
+ import { ethers, Wallet, JsonRpcProvider } from 'ethers';
2
+ import { type GeneratedWallet } from '../../../utils/wallet.js';
3
+ /**
4
+
5
+ * XLayer EOA 模式批量换手
6
+
7
+ *
8
+
9
+ * 专门为 XLayer 链设计,不影响 BSC 链的逻辑
10
+
11
+ * - 使用 PotatoSwap V3 Quoter
12
+
13
+ * - 使用 WOKB 作为 Wrapped Native Token
14
+
15
+ * - 支持多跳转账和利润刮取
16
+
17
+ */
18
+ export declare const XLAYER_CHAIN_ID: 196;
19
+ export declare const WOKB_ADDRESS: string;
20
+ export declare const POTATO_V2_ROUTER: string;
21
+ export declare const POTATO_V3_ROUTER: string;
22
+ export declare const NATIVE_TRANSFER_GAS_LIMIT: 21055n;
23
+ export declare const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
24
+ export type UserType = 'v0' | 'v1';
25
+ export type SwapRouteType = 'v2' | 'v3-single' | 'v3-multi';
26
+ export interface V2RouteParams {
27
+ routeType: 'v2';
28
+ v2Path: string[];
29
+ }
30
+ export interface V3SingleRouteParams {
31
+ routeType: 'v3-single';
32
+ v3TokenIn: string;
33
+ v3TokenOut: string;
34
+ v3Fee: number;
35
+ v2Path?: string[];
36
+ }
37
+ export interface V3MultiRouteParams {
38
+ routeType: 'v3-multi';
39
+ v3LpAddresses: string[];
40
+ v3ExactTokenIn: string;
41
+ v2Path?: string[];
42
+ }
43
+ export type RouteParams = V2RouteParams | V3SingleRouteParams | V3MultiRouteParams;
44
+ export interface XLayerEoaSwapConfig {
45
+ rpcUrl: string;
46
+ gasLimit?: number | bigint;
47
+ gasLimitMultiplier?: number;
48
+ minGasPriceGwei?: number;
49
+ maxGasPriceGwei?: number;
50
+ txType?: 0 | 2;
51
+ reserveGasBNB?: number;
52
+ userType?: UserType;
53
+ bribeAmount?: number;
54
+ }
55
+ export interface XLayerQuickBatchSwapParams {
56
+ sellerPrivateKey: string;
57
+ sellAmount?: string;
58
+ sellPercentage?: number;
59
+ buyerPrivateKeys: string[];
60
+ buyerRatios?: number[];
61
+ buyerAmounts?: string[];
62
+ tokenAddress: string;
63
+ routeParams: RouteParams;
64
+ config: XLayerEoaSwapConfig;
65
+ quoteToken?: string;
66
+ quoteTokenDecimals?: number;
67
+ disperseHopCount?: number;
68
+ startNonces?: number[];
69
+ }
70
+ export interface XLayerQuickBatchSwapResult {
71
+ signedTransactions: string[];
72
+ disperseHopWallets?: GeneratedWallet[];
73
+ profitHopWallets?: GeneratedWallet[];
74
+ metadata?: {
75
+ sellerAddress: string;
76
+ buyerAddresses: string[];
77
+ sellAmount: string;
78
+ estimatedOutput: string;
79
+ transferAmounts: string[];
80
+ profitAmount?: string;
81
+ useNativeToken: boolean;
82
+ disperseHopCount?: number;
83
+ };
84
+ }
85
+ export interface XLayerCrossSwapParams {
86
+ sellerPrivateKeys: string[];
87
+ sellAmounts: string[];
88
+ buyerPrivateKeys: string[];
89
+ tokenAddress: string;
90
+ routeParams: RouteParams;
91
+ config: XLayerEoaSwapConfig;
92
+ quoteToken?: string;
93
+ quoteTokenDecimals?: number;
94
+ buyersPerSell?: number;
95
+ disperseHopCount?: number;
96
+ /** ✅ 预获取的 nonce(地址 -> nonce),避免 nonce 不同步 */
97
+ startNonces?: Map<string, number>;
98
+ }
99
+ export interface XLayerCrossSwapResult {
100
+ signedTransactions: string[];
101
+ rounds: Array<{
102
+ sellerAddress: string;
103
+ buyerAddresses: string[];
104
+ sellAmount: string;
105
+ bundleHash?: string;
106
+ }>;
107
+ disperseHopWallets?: GeneratedWallet[];
108
+ profitHopWallets?: GeneratedWallet[];
109
+ }
110
+ export declare function createXLayerContext(config: XLayerEoaSwapConfig): {
111
+ chainId: 196;
112
+ provider: ethers.JsonRpcProvider;
113
+ };
114
+ export declare function getGasLimit(config: XLayerEoaSwapConfig, defaultGas?: number): bigint;
115
+ export declare function getGasPrice(provider: JsonRpcProvider, config: XLayerEoaSwapConfig): Promise<bigint>;
116
+ export declare function getProfitRateBps(userType?: UserType): number;
117
+ export declare function calculateProfitAmount(estimatedOutput: bigint, userType?: UserType): bigint;
118
+ export declare function quoteSellOutput(provider: JsonRpcProvider, routeParams: RouteParams, sellAmountWei: bigint): Promise<bigint>;
119
+ export declare function getERC20ToOkbQuote(provider: JsonRpcProvider, tokenAddress: string, tokenAmount: bigint, version?: 'v2' | 'v3', fee?: number): Promise<bigint>;
120
+ export type DisperseHopPath = {
121
+ targetAddress: string;
122
+ hopWallets: Wallet[];
123
+ hopWalletsInfo: GeneratedWallet[];
124
+ };
125
+ export declare function generateDisperseHopPaths(targetAddresses: string[], hopCount: number, provider: JsonRpcProvider): DisperseHopPath[];
126
+ export declare function buildNativeHopChain(payer: Wallet, path: DisperseHopPath, finalAmount: bigint, gasPrice: bigint, txType: 0 | 2, payerNonce: number): Promise<string[]>;
@@ -0,0 +1,228 @@
1
+ import { ethers, Wallet } from 'ethers';
2
+ import { createXLayerProvider } from '../../../utils/provider-factory.js';
3
+ import { GAS_LIMITS, CHAINS, getProfitRateBps as getSharedProfitRateBps } from '../../../shared/constants/index.js';
4
+ import { quoteV2, quoteV3 } from '../../../utils/quote-helpers.js';
5
+ import { generateWallets } from '../../../utils/wallet.js';
6
+ import { WOKB, POTATOSWAP_V2_ROUTER, POTATOSWAP_SWAP_ROUTER02 } from './constants.js';
7
+ /**
8
+
9
+ * XLayer EOA 模式批量换手
10
+
11
+ *
12
+
13
+ * 专门为 XLayer 链设计,不影响 BSC 链的逻辑
14
+
15
+ * - 使用 PotatoSwap V3 Quoter
16
+
17
+ * - 使用 WOKB 作为 Wrapped Native Token
18
+
19
+ * - 支持多跳转账和利润刮取
20
+
21
+ */
22
+ // ✅ 从 XLayer 常量导入正确的路由地址
23
+ // ==================== XLayer 专用常量 ====================
24
+ export const XLAYER_CHAIN_ID = CHAINS.XLAYER.chainId;
25
+ const XLAYER_CHAIN_NAME = CHAINS.XLAYER.name;
26
+ export const WOKB_ADDRESS = ethers.getAddress(WOKB);
27
+ // ✅ 强制校验和,避免大小写错误导致的 bad address checksum
28
+ export const POTATO_V2_ROUTER = ethers.getAddress(POTATOSWAP_V2_ROUTER);
29
+ export const POTATO_V3_ROUTER = ethers.getAddress(POTATOSWAP_SWAP_ROUTER02); // ✅ SwapRouter02 用于 V3 交易
30
+ export const NATIVE_TRANSFER_GAS_LIMIT = GAS_LIMITS.NATIVE_TRANSFER;
31
+ export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
32
+ // ==================== 工具函数 ====================
33
+ export function createXLayerContext(config) {
34
+ const provider = createXLayerProvider(config.rpcUrl);
35
+ return { chainId: XLAYER_CHAIN_ID, provider };
36
+ }
37
+ export function getGasLimit(config, defaultGas = 800000) {
38
+ if (config.gasLimit !== undefined) {
39
+ return typeof config.gasLimit === 'bigint' ? config.gasLimit : BigInt(config.gasLimit);
40
+ }
41
+ const multiplier = config.gasLimitMultiplier ?? 1.0;
42
+ return BigInt(Math.ceil(defaultGas * multiplier));
43
+ }
44
+ export async function getGasPrice(provider, config) {
45
+ const feeData = await provider.getFeeData();
46
+ let gasPrice = feeData.gasPrice || ethers.parseUnits('0.1', 'gwei');
47
+ if (config.minGasPriceGwei) {
48
+ const minGas = ethers.parseUnits(config.minGasPriceGwei.toString(), 'gwei');
49
+ if (gasPrice < minGas)
50
+ gasPrice = minGas;
51
+ }
52
+ if (config.maxGasPriceGwei) {
53
+ const maxGas = ethers.parseUnits(config.maxGasPriceGwei.toString(), 'gwei');
54
+ if (gasPrice > maxGas)
55
+ gasPrice = maxGas;
56
+ }
57
+ return gasPrice;
58
+ }
59
+ export function getProfitRateBps(userType) {
60
+ if (userType === 'v0')
61
+ return getSharedProfitRateBps('v0Single');
62
+ if (userType === 'v1')
63
+ return getSharedProfitRateBps('v1Single');
64
+ return getSharedProfitRateBps('v0Single');
65
+ }
66
+ export function calculateProfitAmount(estimatedOutput, userType) {
67
+ if (estimatedOutput <= 0n)
68
+ return 0n;
69
+ const rateBps = getProfitRateBps(userType);
70
+ return (estimatedOutput * BigInt(rateBps)) / 10000n;
71
+ }
72
+ // ==================== 报价函数 ====================
73
+ export async function quoteSellOutput(provider, routeParams, sellAmountWei) {
74
+ if (routeParams.routeType === 'v2') {
75
+ const { v2Path } = routeParams;
76
+ const tokenIn = v2Path[0];
77
+ const tokenOut = v2Path[v2Path.length - 1];
78
+ const result = await quoteV2(provider, tokenIn, tokenOut, sellAmountWei, XLAYER_CHAIN_NAME);
79
+ if (result.amountOut > 0n) {
80
+ return result.amountOut;
81
+ }
82
+ throw new Error('V2 报价失败');
83
+ }
84
+ if (routeParams.routeType === 'v3-single') {
85
+ const params = routeParams;
86
+ const result = await quoteV3(provider, params.v3TokenIn, params.v3TokenOut, sellAmountWei, XLAYER_CHAIN_NAME, params.v3Fee);
87
+ if (result.amountOut > 0n) {
88
+ return result.amountOut;
89
+ }
90
+ // ❗️兜底:如果 V3 报价失败且提供了 v2Path,则尝试 V2 报价(避免因为无对应费率池导致失败)
91
+ if (params.v2Path && params.v2Path.length >= 2) {
92
+ const tokenIn = params.v2Path[0];
93
+ const tokenOut = params.v2Path[params.v2Path.length - 1];
94
+ const v2Result = await quoteV2(provider, tokenIn, tokenOut, sellAmountWei, XLAYER_CHAIN_NAME);
95
+ if (v2Result.amountOut > 0n) {
96
+ return v2Result.amountOut;
97
+ }
98
+ }
99
+ throw new Error(`V3 单跳报价失败: tokenIn=${params.v3TokenIn}, tokenOut=${params.v3TokenOut}, fee=${params.v3Fee}`);
100
+ }
101
+ if (routeParams.routeType === 'v3-multi') {
102
+ const params = routeParams;
103
+ const tokenIn = params.v3ExactTokenIn;
104
+ const result = await quoteV3(provider, tokenIn, WOKB_ADDRESS, sellAmountWei, XLAYER_CHAIN_NAME);
105
+ if (result.amountOut > 0n) {
106
+ return result.amountOut;
107
+ }
108
+ // ❗️兜底:如果 V3 多跳失败且提供 v2Path,则尝试 V2 报价
109
+ if (params.v2Path && params.v2Path.length >= 2) {
110
+ const tokenInV2 = params.v2Path[0];
111
+ const tokenOutV2 = params.v2Path[params.v2Path.length - 1];
112
+ const v2Result = await quoteV2(provider, tokenInV2, tokenOutV2, sellAmountWei, XLAYER_CHAIN_NAME);
113
+ if (v2Result.amountOut > 0n) {
114
+ return v2Result.amountOut;
115
+ }
116
+ }
117
+ throw new Error(`V3 多跳报价失败`);
118
+ }
119
+ // ✅ 用类型判断收窄 RouteParams 联合类型
120
+ const routeType = routeParams.routeType ??
121
+ routeParams.routeType ??
122
+ routeParams.routeType;
123
+ throw new Error(`不支持的路由类型: ${routeType}`);
124
+ }
125
+ export async function getERC20ToOkbQuote(provider, tokenAddress, tokenAmount, version = 'v2', fee) {
126
+ if (tokenAmount <= 0n)
127
+ return 0n;
128
+ const tokenLower = tokenAddress.toLowerCase();
129
+ const wokbLower = WOKB_ADDRESS.toLowerCase();
130
+ if (tokenLower === wokbLower)
131
+ return tokenAmount;
132
+ if (version === 'v3') {
133
+ const result = await quoteV3(provider, tokenAddress, WOKB_ADDRESS, tokenAmount, XLAYER_CHAIN_NAME, fee);
134
+ if (result.amountOut > 0n) {
135
+ return result.amountOut;
136
+ }
137
+ return 0n;
138
+ }
139
+ const result = await quoteV2(provider, tokenAddress, WOKB_ADDRESS, tokenAmount, XLAYER_CHAIN_NAME);
140
+ if (result.amountOut > 0n) {
141
+ return result.amountOut;
142
+ }
143
+ return 0n;
144
+ }
145
+ export function generateDisperseHopPaths(targetAddresses, hopCount, provider) {
146
+ if (hopCount <= 0) {
147
+ return targetAddresses.map((addr) => ({
148
+ targetAddress: addr,
149
+ hopWallets: [],
150
+ hopWalletsInfo: [],
151
+ }));
152
+ }
153
+ return targetAddresses.map((targetAddress) => {
154
+ const hopWalletsInfo = generateWallets(hopCount);
155
+ const hopWallets = hopWalletsInfo.map((w) => new Wallet(w.privateKey, provider));
156
+ return { targetAddress, hopWallets, hopWalletsInfo };
157
+ });
158
+ }
159
+ export async function buildNativeHopChain(payer, path, finalAmount, gasPrice, txType, payerNonce) {
160
+ const signedTxs = [];
161
+ const hopCount = path.hopWallets.length;
162
+ if (hopCount === 0) {
163
+ const tx = {
164
+ to: path.targetAddress,
165
+ value: finalAmount,
166
+ nonce: payerNonce,
167
+ gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
168
+ chainId: XLAYER_CHAIN_ID,
169
+ type: txType,
170
+ };
171
+ if (txType === 2) {
172
+ tx.maxFeePerGas = gasPrice;
173
+ tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
174
+ }
175
+ else {
176
+ tx.gasPrice = gasPrice;
177
+ }
178
+ signedTxs.push(await payer.signTransaction(tx));
179
+ return signedTxs;
180
+ }
181
+ const hopGasCost = NATIVE_TRANSFER_GAS_LIMIT * gasPrice;
182
+ const amountsPerHop = [];
183
+ for (let i = 0; i < hopCount; i++) {
184
+ const remainingHops = hopCount - i;
185
+ amountsPerHop.push(finalAmount + hopGasCost * BigInt(remainingHops));
186
+ }
187
+ // payer → hop1
188
+ const firstTx = {
189
+ to: path.hopWallets[0].address,
190
+ value: amountsPerHop[0],
191
+ nonce: payerNonce,
192
+ gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
193
+ chainId: XLAYER_CHAIN_ID,
194
+ type: txType,
195
+ };
196
+ if (txType === 2) {
197
+ firstTx.maxFeePerGas = gasPrice;
198
+ firstTx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
199
+ }
200
+ else {
201
+ firstTx.gasPrice = gasPrice;
202
+ }
203
+ signedTxs.push(await payer.signTransaction(firstTx));
204
+ // hop1 → hop2 → ... → target
205
+ for (let i = 0; i < hopCount; i++) {
206
+ const fromWallet = path.hopWallets[i];
207
+ const toAddress = i === hopCount - 1 ? path.targetAddress : path.hopWallets[i + 1].address;
208
+ const amount = i === hopCount - 1 ? finalAmount : amountsPerHop[i + 1];
209
+ const tx = {
210
+ to: toAddress,
211
+ value: amount,
212
+ nonce: 0,
213
+ gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
214
+ chainId: XLAYER_CHAIN_ID,
215
+ type: txType,
216
+ };
217
+ if (txType === 2) {
218
+ tx.maxFeePerGas = gasPrice;
219
+ tx.maxPriorityFeePerGas = gasPrice / 10n || 1n;
220
+ }
221
+ else {
222
+ tx.gasPrice = gasPrice;
223
+ }
224
+ signedTxs.push(await fromWallet.signTransaction(tx));
225
+ }
226
+ return signedTxs;
227
+ }
228
+ // ==================== XLayer 快捷批量换手 ====================
@@ -1,98 +1,4 @@
1
- /**
2
- * XLayer EOA 模式批量换手
3
- *
4
- * 专门为 XLayer 链设计,不影响 BSC 链的逻辑
5
- * - 使用 PotatoSwap V3 Quoter
6
- * - 使用 WOKB 作为 Wrapped Native Token
7
- * - 支持多跳转账和利润刮取
8
- */
9
- import { type GeneratedWallet } from '../../../utils/wallet.js';
10
- export type UserType = 'v0' | 'v1';
11
- export type SwapRouteType = 'v2' | 'v3-single' | 'v3-multi';
12
- export interface V2RouteParams {
13
- routeType: 'v2';
14
- v2Path: string[];
15
- }
16
- export interface V3SingleRouteParams {
17
- routeType: 'v3-single';
18
- v3TokenIn: string;
19
- v3TokenOut: string;
20
- v3Fee: number;
21
- v2Path?: string[];
22
- }
23
- export interface V3MultiRouteParams {
24
- routeType: 'v3-multi';
25
- v3LpAddresses: string[];
26
- v3ExactTokenIn: string;
27
- v2Path?: string[];
28
- }
29
- export type RouteParams = V2RouteParams | V3SingleRouteParams | V3MultiRouteParams;
30
- export interface XLayerEoaSwapConfig {
31
- rpcUrl: string;
32
- gasLimit?: number | bigint;
33
- gasLimitMultiplier?: number;
34
- minGasPriceGwei?: number;
35
- maxGasPriceGwei?: number;
36
- txType?: 0 | 2;
37
- reserveGasBNB?: number;
38
- userType?: UserType;
39
- bribeAmount?: number;
40
- }
41
- export interface XLayerQuickBatchSwapParams {
42
- sellerPrivateKey: string;
43
- sellAmount?: string;
44
- sellPercentage?: number;
45
- buyerPrivateKeys: string[];
46
- buyerRatios?: number[];
47
- buyerAmounts?: string[];
48
- tokenAddress: string;
49
- routeParams: RouteParams;
50
- config: XLayerEoaSwapConfig;
51
- quoteToken?: string;
52
- quoteTokenDecimals?: number;
53
- disperseHopCount?: number;
54
- startNonces?: number[];
55
- }
56
- export interface XLayerQuickBatchSwapResult {
57
- signedTransactions: string[];
58
- disperseHopWallets?: GeneratedWallet[];
59
- profitHopWallets?: GeneratedWallet[];
60
- metadata?: {
61
- sellerAddress: string;
62
- buyerAddresses: string[];
63
- sellAmount: string;
64
- estimatedOutput: string;
65
- transferAmounts: string[];
66
- profitAmount?: string;
67
- useNativeToken: boolean;
68
- disperseHopCount?: number;
69
- };
70
- }
71
- export interface XLayerCrossSwapParams {
72
- sellerPrivateKeys: string[];
73
- sellAmounts: string[];
74
- buyerPrivateKeys: string[];
75
- tokenAddress: string;
76
- routeParams: RouteParams;
77
- config: XLayerEoaSwapConfig;
78
- quoteToken?: string;
79
- quoteTokenDecimals?: number;
80
- buyersPerSell?: number;
81
- disperseHopCount?: number;
82
- /** ✅ 预获取的 nonce(地址 -> nonce),避免 nonce 不同步 */
83
- startNonces?: Map<string, number>;
84
- }
85
- export interface XLayerCrossSwapResult {
86
- signedTransactions: string[];
87
- rounds: Array<{
88
- sellerAddress: string;
89
- buyerAddresses: string[];
90
- sellAmount: string;
91
- bundleHash?: string;
92
- }>;
93
- disperseHopWallets?: GeneratedWallet[];
94
- profitHopWallets?: GeneratedWallet[];
95
- }
1
+ import { RouteParams, XLayerCrossSwapParams, XLayerCrossSwapResult, XLayerEoaSwapConfig, XLayerQuickBatchSwapParams, XLayerQuickBatchSwapResult } from './eoa-bundle-swap-helpers.js';
96
2
  export declare function xlayerQuickBatchSwapMerkle(params: XLayerQuickBatchSwapParams): Promise<XLayerQuickBatchSwapResult>;
97
3
  export declare function xlayerCrossSwapMerkle(params: XLayerCrossSwapParams): Promise<XLayerCrossSwapResult>;
98
4
  /**