four-flap-meme-sdk 2.2.19 → 2.2.20

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 (493) hide show
  1. package/dist/__tests__/subpath-exports.test.d.ts +1 -0
  2. package/dist/__tests__/subpath-exports.test.js +64 -0
  3. package/dist/abis/common.d.ts +85 -0
  4. package/dist/abis/common.js +240 -0
  5. package/dist/abis/contracts/TaxToken.json +969 -0
  6. package/dist/abis/contracts/TokenManager.json +836 -0
  7. package/dist/abis/contracts/TokenManager2.json +136 -0
  8. package/dist/abis/contracts/TokenManagerHelper3.json +993 -0
  9. package/dist/abis/contracts/index.d.ts +5 -0
  10. package/dist/abis/contracts/index.js +5 -0
  11. package/dist/abis/flap/index.d.ts +5 -0
  12. package/dist/abis/flap/index.js +5 -0
  13. package/dist/abis/flap/portal-eip7702.d.ts +4 -0
  14. package/dist/abis/flap/portal-eip7702.js +39 -0
  15. package/dist/abis/flap/portal-events.d.ts +6 -0
  16. package/dist/abis/flap/portal-events.js +17 -0
  17. package/dist/abis/flap/portal-merkle.d.ts +4 -0
  18. package/dist/abis/flap/portal-merkle.js +25 -0
  19. package/dist/abis/flap/portal.d.ts +6 -0
  20. package/dist/abis/flap/portal.js +37 -0
  21. package/dist/abis/flap/vault.d.ts +171 -0
  22. package/dist/abis/flap/vault.js +91 -0
  23. package/dist/abis/index.d.ts +8 -0
  24. package/dist/abis/index.js +11 -0
  25. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +1 -0
  26. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  27. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +1 -0
  28. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  29. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
  30. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  31. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
  32. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  33. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  34. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  35. package/dist/bundle-core/config-helpers.d.ts +37 -0
  36. package/dist/bundle-core/config-helpers.js +58 -0
  37. package/dist/bundle-core/errors.d.ts +50 -0
  38. package/dist/bundle-core/errors.js +38 -0
  39. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  40. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  41. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  42. package/dist/bundle-core/four-meme/core-helpers.js +41 -0
  43. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  44. package/dist/bundle-core/four-meme/core.js +515 -0
  45. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  46. package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
  47. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  48. package/dist/bundle-core/four-meme/private.js +465 -0
  49. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  50. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  51. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  52. package/dist/bundle-core/four-meme/swap-buy-first.js +456 -0
  53. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  54. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  55. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  56. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  57. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +28 -0
  58. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  59. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  60. package/dist/bundle-core/four-meme/swap.js +505 -0
  61. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  62. package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
  63. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  64. package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
  65. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  66. package/dist/bundle-core/four-meme/types/index.js +1 -0
  67. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  68. package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
  69. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  70. package/dist/bundle-core/four-meme/types.js +1 -0
  71. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  72. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  73. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  74. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  75. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  76. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  77. package/dist/bundle-core/index.d.ts +8 -0
  78. package/dist/bundle-core/index.js +8 -0
  79. package/dist/bundle-core/internal.d.ts +16 -0
  80. package/dist/bundle-core/internal.js +160 -0
  81. package/dist/bundle-core/sign-context-helpers.d.ts +26 -0
  82. package/dist/bundle-core/sign-context-helpers.js +63 -0
  83. package/dist/bundle-core/submit.d.ts +293 -0
  84. package/dist/bundle-core/submit.js +731 -0
  85. package/dist/bundle-core/types/index.d.ts +8 -0
  86. package/dist/bundle-core/types/index.js +1 -0
  87. package/dist/bundle-core/types.d.ts +1 -0
  88. package/dist/bundle-core/types.js +1 -0
  89. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  90. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
  91. package/dist/chains/bsc/four/config.d.ts +5 -67
  92. package/dist/chains/bsc/four/config.js +2 -114
  93. package/dist/chains/bsc/four/core.d.ts +1 -4
  94. package/dist/chains/bsc/four/core.js +1 -592
  95. package/dist/chains/bsc/four/index.d.ts +6 -6
  96. package/dist/chains/bsc/four/index.js +6 -6
  97. package/dist/chains/bsc/four/internal.d.ts +2 -46
  98. package/dist/chains/bsc/four/internal.js +2 -239
  99. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  100. package/dist/chains/bsc/four/pancake-proxy.js +1 -687
  101. package/dist/chains/bsc/four/private.d.ts +1 -27
  102. package/dist/chains/bsc/four/private.js +1 -477
  103. package/dist/chains/bsc/four/submit.d.ts +2 -315
  104. package/dist/chains/bsc/four/submit.js +2 -752
  105. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  106. package/dist/chains/bsc/four/swap-buy-first.js +2 -507
  107. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  108. package/dist/chains/bsc/four/swap-internal.js +1 -18
  109. package/dist/chains/bsc/four/swap.d.ts +2 -144
  110. package/dist/chains/bsc/four/swap.js +2 -766
  111. package/dist/chains/bsc/four/types.d.ts +1 -476
  112. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  113. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  114. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  115. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  116. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  117. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  118. package/dist/chains/bsc/four/utils.d.ts +5 -18
  119. package/dist/chains/bsc/four/utils.js +5 -1552
  120. package/dist/chains/bsc/iro.d.ts +5 -0
  121. package/dist/chains/bsc/iro.js +4 -0
  122. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +155 -0
  123. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +80 -0
  124. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  125. package/dist/chains/bsc/pancake/bundle-buy-first.js +98 -213
  126. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  127. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  128. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  129. package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
  130. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  131. package/dist/chains/bsc/pancake/index.js +1 -3
  132. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  133. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  134. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  135. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  136. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  137. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  138. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  139. package/dist/chains/eni/batch-router/transfer.js +55 -25
  140. package/dist/chains/eni/batch-router/utils.js +32 -6
  141. package/dist/chains/eni/bundler/sign.js +5 -6
  142. package/dist/chains/eni/bundler/submit.js +1 -4
  143. package/dist/chains/eni/constants.js +1 -1
  144. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  145. package/dist/chains/eni/flat-aliases.js +8 -0
  146. package/dist/chains/eni/index.d.ts +2 -1
  147. package/dist/chains/eni/index.js +1 -0
  148. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  149. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  150. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  151. package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
  152. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -44
  153. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  154. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  155. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  156. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  157. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -46
  158. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  159. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  160. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  161. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  162. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  163. package/dist/chains/eni/platforms/iro/index.js +4 -4
  164. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  165. package/dist/chains/eni/platforms/iro/token.js +107 -31
  166. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  167. package/dist/chains/eni/submit.d.ts +43 -0
  168. package/dist/chains/eni/submit.js +287 -0
  169. package/dist/chains/index.d.ts +13 -0
  170. package/dist/chains/index.js +13 -0
  171. package/dist/chains/xlayer/constants.d.ts +5 -0
  172. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  173. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
  174. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  175. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  176. package/dist/chains/xlayer/eip7702/bundle-create.js +104 -74
  177. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  178. package/dist/chains/xlayer/eip7702/bundle-sell.js +29 -111
  179. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  180. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -245
  181. package/dist/chains/xlayer/eip7702/constants.d.ts +11 -26
  182. package/dist/chains/xlayer/eip7702/constants.js +15 -68
  183. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  184. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  185. package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
  186. package/dist/chains/xlayer/eip7702/index.js +28 -81
  187. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  188. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  189. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  190. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +63 -307
  191. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  192. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +58 -0
  193. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  194. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  195. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  196. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  197. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  198. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  199. package/dist/chains/xlayer/eip7702/volume.js +89 -164
  200. package/dist/chains/xlayer/eoa/constants.d.ts +1 -1
  201. package/dist/chains/xlayer/eoa/constants.js +2 -16
  202. package/dist/chains/xlayer/eoa/dex-helpers.d.ts +1 -1
  203. package/dist/chains/xlayer/eoa/dex-helpers.js +7 -37
  204. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  205. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  206. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  207. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
  208. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  209. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
  210. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  211. package/dist/chains/xlayer/eoa/index.js +8 -23
  212. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  213. package/dist/chains/xlayer/eoa/router-manager.js +5 -4
  214. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  215. package/dist/chains/xlayer/eoa/types.js +1 -3
  216. package/dist/chains/xlayer/index.d.ts +3 -2
  217. package/dist/chains/xlayer/index.js +4 -7
  218. package/dist/contracts/helper3.d.ts +20 -5
  219. package/dist/contracts/helper3.js +56 -20
  220. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  221. package/dist/contracts/tm-bundle-helpers.js +73 -0
  222. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  223. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -113
  224. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -67
  225. package/dist/contracts/tm-bundle-merkle/config.js +2 -114
  226. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  227. package/dist/contracts/tm-bundle-merkle/core.js +1 -591
  228. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  229. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  230. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -46
  231. package/dist/contracts/tm-bundle-merkle/internal.js +2 -238
  232. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  233. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -686
  234. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  235. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  236. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  237. package/dist/contracts/tm-bundle-merkle/submit.js +3 -928
  238. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  239. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -506
  240. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  241. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  242. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  243. package/dist/contracts/tm-bundle-merkle/swap.js +2 -764
  244. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  245. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  246. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  247. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  248. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  249. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  250. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  251. package/dist/contracts/tm-bundle-merkle/utils.d.ts +6 -18
  252. package/dist/contracts/tm-bundle-merkle/utils.js +6 -1501
  253. package/dist/contracts/tm-bundle.d.ts +3 -51
  254. package/dist/contracts/tm-bundle.js +120 -187
  255. package/dist/contracts/tm.d.ts +10 -8
  256. package/dist/contracts/tm.js +39 -35
  257. package/dist/contracts/tm1.js +9 -4
  258. package/dist/contracts/tm2.js +10 -5
  259. package/dist/dex/direct-router-helpers.d.ts +269 -0
  260. package/dist/dex/direct-router-helpers.js +536 -0
  261. package/dist/dex/direct-router.d.ts +3 -125
  262. package/dist/dex/direct-router.js +244 -672
  263. package/dist/dex/types.d.ts +81 -0
  264. package/dist/dex/types.js +1 -0
  265. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  266. package/dist/exports/root-bundle-and-tooling.js +30 -0
  267. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  268. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  269. package/dist/exports/root-foundations.d.ts +35 -0
  270. package/dist/exports/root-foundations.js +70 -0
  271. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  272. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  273. package/dist/flap/index.d.ts +11 -0
  274. package/dist/flap/index.js +9 -0
  275. package/dist/flows/create.d.ts +2 -1
  276. package/dist/flows/create.js +6 -6
  277. package/dist/flows/index.d.ts +9 -0
  278. package/dist/flows/index.js +9 -0
  279. package/dist/index.d.ts +20 -88
  280. package/dist/index.js +20 -218
  281. package/dist/merkle/index.d.ts +12 -0
  282. package/dist/merkle/index.js +11 -0
  283. package/dist/shared/abis/common.d.ts +2 -83
  284. package/dist/shared/abis/common.js +2 -254
  285. package/dist/shared/abis/index.d.ts +5 -6
  286. package/dist/shared/abis/index.js +5 -7
  287. package/dist/shared/clients/blockrazor.d.ts +4 -8
  288. package/dist/shared/clients/blockrazor.js +43 -35
  289. package/dist/shared/clients/club48.d.ts +2 -2
  290. package/dist/shared/clients/club48.js +36 -30
  291. package/dist/shared/clients/emitservice.js +2 -0
  292. package/dist/shared/clients/four.d.ts +21 -6
  293. package/dist/shared/clients/four.js +29 -24
  294. package/dist/shared/clients/index.d.ts +8 -0
  295. package/dist/shared/clients/index.js +8 -0
  296. package/dist/shared/clients/merkle.d.ts +4 -3
  297. package/dist/shared/clients/merkle.js +30 -47
  298. package/dist/shared/constants/addresses.d.ts +27 -1
  299. package/dist/shared/constants/addresses.js +39 -2
  300. package/dist/shared/constants/chains.d.ts +1 -1
  301. package/dist/shared/constants/chains.js +1 -1
  302. package/dist/shared/constants/gas.d.ts +1 -1
  303. package/dist/shared/constants/gas.js +2 -6
  304. package/dist/shared/constants/index.d.ts +4 -1
  305. package/dist/shared/constants/index.js +2 -1
  306. package/dist/shared/constants/quote.d.ts +30 -0
  307. package/dist/shared/constants/quote.js +37 -0
  308. package/dist/shared/flap/abi.js +1 -1
  309. package/dist/shared/flap/constants.d.ts +1 -2
  310. package/dist/shared/flap/constants.js +3 -4
  311. package/dist/shared/flap/curve.js +3 -0
  312. package/dist/shared/flap/errors.d.ts +1 -4
  313. package/dist/shared/flap/errors.js +20 -1
  314. package/dist/shared/flap/index.d.ts +4 -5
  315. package/dist/shared/flap/index.js +4 -5
  316. package/dist/shared/flap/launch-v6.d.ts +0 -5
  317. package/dist/shared/flap/launch-v6.js +2 -16
  318. package/dist/shared/flap/meta.d.ts +22 -18
  319. package/dist/shared/flap/meta.js +32 -24
  320. package/dist/shared/flap/permit.js +10 -3
  321. package/dist/shared/flap/pinata.d.ts +22 -6
  322. package/dist/shared/flap/pinata.js +21 -26
  323. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  324. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  325. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  326. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  327. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  328. package/dist/shared/flap/portal-bundle-merkle/core.js +168 -175
  329. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +17 -4
  330. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +96 -117
  331. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +104 -122
  332. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  333. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  334. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  335. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  336. package/dist/shared/flap/portal-bundle-merkle/swap-batch.d.ts +8 -0
  337. package/dist/shared/flap/portal-bundle-merkle/swap-batch.js +227 -0
  338. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  339. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  340. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  341. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +69 -288
  342. package/dist/shared/flap/portal-bundle-merkle/swap-cross.d.ts +9 -0
  343. package/dist/shared/flap/portal-bundle-merkle/swap-cross.js +139 -0
  344. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  345. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  346. package/dist/shared/flap/portal-bundle-merkle/swap-planning.d.ts +70 -0
  347. package/dist/shared/flap/portal-bundle-merkle/swap-planning.js +182 -0
  348. package/dist/shared/flap/portal-bundle-merkle/swap-quick-batch.d.ts +16 -0
  349. package/dist/shared/flap/portal-bundle-merkle/swap-quick-batch.js +327 -0
  350. package/dist/shared/flap/portal-bundle-merkle/swap-single.d.ts +2 -0
  351. package/dist/shared/flap/portal-bundle-merkle/swap-single.js +184 -0
  352. package/dist/shared/flap/portal-bundle-merkle/swap-types.d.ts +101 -0
  353. package/dist/shared/flap/portal-bundle-merkle/swap-types.js +1 -0
  354. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +6 -199
  355. package/dist/shared/flap/portal-bundle-merkle/swap.js +5 -1357
  356. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +88 -12
  357. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  358. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  359. package/dist/shared/flap/portal-bundle.js +83 -78
  360. package/dist/shared/flap/portal-create-token.d.ts +39 -21
  361. package/dist/shared/flap/portal-create-token.js +121 -124
  362. package/dist/shared/flap/portal.d.ts +1 -2
  363. package/dist/shared/flap/portal.js +36 -28
  364. package/dist/shared/flap/vanity.d.ts +6 -6
  365. package/dist/shared/flap/vanity.js +15 -21
  366. package/dist/shared/flap/vault.d.ts +25 -93
  367. package/dist/shared/flap/vault.js +77 -127
  368. package/dist/shared/foundation/amount/split-by-weight.d.ts +5 -0
  369. package/dist/shared/foundation/amount/split-by-weight.js +35 -0
  370. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  371. package/dist/shared/foundation/dex/v3-path.js +35 -0
  372. package/dist/shared/foundation/erc20/decimals.d.ts +7 -0
  373. package/dist/shared/foundation/erc20/decimals.js +24 -0
  374. package/dist/shared/foundation/gas/bundle-gas.d.ts +49 -0
  375. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  376. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  377. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  378. package/dist/shared/foundation/index.d.ts +15 -0
  379. package/dist/shared/foundation/index.js +14 -0
  380. package/dist/shared/foundation/nonce/nonce-manager.d.ts +19 -0
  381. package/dist/shared/foundation/nonce/nonce-manager.js +217 -0
  382. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  383. package/dist/shared/foundation/normalize-unknown.js +29 -0
  384. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  385. package/dist/shared/foundation/sdk-logger.js +12 -0
  386. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  387. package/dist/shared/foundation/tx/build-request.js +25 -0
  388. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  389. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  390. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
  391. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  392. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  393. package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
  394. package/dist/shared/foundation/types/erc20.d.ts +65 -0
  395. package/dist/shared/foundation/types/erc20.js +1 -0
  396. package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
  397. package/dist/shared/foundation/types/holders-maker.js +1 -0
  398. package/dist/shared/foundation/types/index.d.ts +7 -0
  399. package/dist/shared/foundation/types/index.js +1 -0
  400. package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
  401. package/dist/shared/foundation/types/lp-inspect.js +1 -0
  402. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  403. package/dist/shared/foundation/types/multicall.js +1 -0
  404. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  405. package/dist/shared/foundation/types/private-sale.js +1 -0
  406. package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
  407. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  408. package/dist/shared/foundation/wallet/generate.d.ts +5 -0
  409. package/dist/shared/foundation/wallet/generate.js +8 -0
  410. package/dist/shared/four/tax-token.d.ts +1 -1
  411. package/dist/shared/four/tax-token.js +31 -10
  412. package/dist/shared/index.d.ts +6 -0
  413. package/dist/shared/index.js +4 -0
  414. package/dist/types/errors.d.ts +27 -0
  415. package/dist/types/errors.js +34 -0
  416. package/dist/utils/airdrop-sweep.d.ts +4 -76
  417. package/dist/utils/airdrop-sweep.js +42 -55
  418. package/dist/utils/bundle-helpers.d.ts +9 -243
  419. package/dist/utils/bundle-helpers.js +10 -584
  420. package/dist/utils/constants.d.ts +5 -61
  421. package/dist/utils/constants.js +5 -80
  422. package/dist/utils/contract-factory.d.ts +2 -4
  423. package/dist/utils/contract-factory.js +25 -18
  424. package/dist/utils/erc20.d.ts +7 -89
  425. package/dist/utils/erc20.js +98 -129
  426. package/dist/utils/errors.d.ts +12 -1
  427. package/dist/utils/errors.js +60 -1
  428. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  429. package/dist/utils/holders-maker/addresses.js +15 -0
  430. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  431. package/dist/utils/holders-maker/buy-tx.js +278 -0
  432. package/dist/utils/holders-maker/constants.d.ts +6 -0
  433. package/dist/utils/holders-maker/constants.js +7 -0
  434. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  435. package/dist/utils/holders-maker/disperse.js +90 -0
  436. package/dist/utils/holders-maker/routing.d.ts +4 -0
  437. package/dist/utils/holders-maker/routing.js +45 -0
  438. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  439. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  440. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  441. package/dist/utils/holders-maker-helpers.js +9 -0
  442. package/dist/utils/holders-maker.d.ts +2 -138
  443. package/dist/utils/holders-maker.js +50 -671
  444. package/dist/utils/hop-chains.d.ts +35 -0
  445. package/dist/utils/hop-chains.js +215 -0
  446. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  447. package/dist/utils/lp-inspect-helpers.js +109 -0
  448. package/dist/utils/lp-inspect.d.ts +2 -112
  449. package/dist/utils/lp-inspect.js +78 -293
  450. package/dist/utils/mpcExclusive.d.ts +2 -5
  451. package/dist/utils/mpcExclusive.js +4 -3
  452. package/dist/utils/pcs-infinity-cl.js +18 -54
  453. package/dist/utils/private-sale.d.ts +2 -58
  454. package/dist/utils/private-sale.js +4 -15
  455. package/dist/utils/provider-factory.d.ts +4 -0
  456. package/dist/utils/provider-factory.js +10 -0
  457. package/dist/utils/quote-helpers.d.ts +4 -45
  458. package/dist/utils/quote-helpers.js +17 -74
  459. package/dist/utils/stealth-transfer.d.ts +2 -28
  460. package/dist/utils/stealth-transfer.js +39 -19
  461. package/dist/utils/swap-helpers.d.ts +2 -15
  462. package/dist/utils/swap-helpers.js +6 -11
  463. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  464. package/dist/utils/types/airdrop-sweep.js +1 -0
  465. package/dist/utils/types/contract-factory.d.ts +1 -0
  466. package/dist/utils/types/contract-factory.js +1 -0
  467. package/dist/utils/types/erc20.d.ts +1 -0
  468. package/dist/utils/types/erc20.js +1 -0
  469. package/dist/utils/types/errors.d.ts +1 -0
  470. package/dist/utils/types/errors.js +1 -0
  471. package/dist/utils/types/holders-maker.d.ts +1 -0
  472. package/dist/utils/types/holders-maker.js +1 -0
  473. package/dist/utils/types/hop-chains.d.ts +8 -0
  474. package/dist/utils/types/hop-chains.js +1 -0
  475. package/dist/utils/types/index.d.ts +13 -0
  476. package/dist/utils/types/index.js +1 -0
  477. package/dist/utils/types/lp-inspect.d.ts +1 -0
  478. package/dist/utils/types/lp-inspect.js +1 -0
  479. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  480. package/dist/utils/types/mpc-exclusive.js +1 -0
  481. package/dist/utils/types/private-sale.d.ts +1 -0
  482. package/dist/utils/types/private-sale.js +1 -0
  483. package/dist/utils/types/quote-helpers.d.ts +1 -0
  484. package/dist/utils/types/quote-helpers.js +1 -0
  485. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  486. package/dist/utils/types/stealth-transfer.js +1 -0
  487. package/dist/utils/types/wallet.d.ts +25 -0
  488. package/dist/utils/types/wallet.js +1 -0
  489. package/dist/utils/wallet.d.ts +4 -25
  490. package/dist/utils/wallet.js +27 -22
  491. package/dist/vanity/index.d.ts +5 -0
  492. package/dist/vanity/index.js +5 -0
  493. package/package.json +100 -2
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * XLayer AA DEX 工具函数
3
3
  */
4
- import { PROFIT_CONFIG } from '../../../utils/constants.js';
4
+ import { getProfitRecipient, getProfitRateBps, ADDRESSES } from '../../../shared/constants/index.js';
5
+ export { splitAmountByWeight as splitAmount } from '../../../shared/foundation/amount/split-by-weight.js';
5
6
  export function getDexDeadline(minutes = 20) {
6
7
  return Math.floor(Date.now() / 1000) + minutes * 60;
7
8
  }
@@ -14,53 +15,22 @@ export function calculateProfitWei(amountWei, profitBps) {
14
15
  }
15
16
  export function resolveProfitSettings(config) {
16
17
  const extractProfit = config?.extractProfit !== false;
17
- const profitBpsRaw = config?.profitBps ?? PROFIT_CONFIG.RATE_BPS_SWAP;
18
- const profitBps = Math.max(0, Math.min(10000, Number(profitBpsRaw)));
19
- const profitRecipient = config?.profitRecipient ?? PROFIT_CONFIG.RECIPIENT;
18
+ const profitBpsRaw = config?.profitBps ?? getProfitRateBps('bundleSwap');
19
+ const profitBps = Math.max(0, Math.min(10_000, Number(profitBpsRaw)));
20
+ const profitRecipient = config?.profitRecipient ?? getProfitRecipient();
20
21
  return { extractProfit, profitBps, profitRecipient };
21
22
  }
22
- function shuffle(arr) {
23
- const a = arr.slice();
24
- for (let i = a.length - 1; i > 0; i--) {
25
- const j = Math.floor(Math.random() * (i + 1));
26
- [a[i], a[j]] = [a[j], a[i]];
27
- }
28
- return a;
29
- }
30
- export function splitAmount(totalAmount, count) {
31
- if (count <= 0)
32
- throw new Error('拆分份数必须大于 0');
33
- if (count === 1)
34
- return [totalAmount];
35
- if (totalAmount <= 0n)
36
- return new Array(count).fill(0n);
37
- const weights = [];
38
- for (let i = 0; i < count; i++) {
39
- const w = BigInt(500000 + Math.floor(Math.random() * 1000000));
40
- weights.push(w);
41
- }
42
- const totalWeight = weights.reduce((a, b) => a + b, 0n);
43
- const amounts = [];
44
- let allocated = 0n;
45
- for (let i = 0; i < count - 1; i++) {
46
- const amt = (totalAmount * weights[i]) / totalWeight;
47
- amounts.push(amt);
48
- allocated += amt;
49
- }
50
- amounts.push(totalAmount - allocated);
51
- return shuffle(amounts);
52
- }
53
23
  export function getEffectiveRouter(params, defaultRouter) {
54
24
  // 优先使用显式指定的地址
55
25
  if (params.routerAddress)
56
26
  return params.routerAddress;
57
27
  // 根据 dexKey 选择
58
28
  if (params.dexKey === 'DYORSWAP') {
59
- return '0xfb001fbbace32f09cb6d3c449b935183de53ee96';
29
+ return ADDRESSES.XLAYER.DyorSwapRouter;
60
30
  }
61
31
  // 根据 routerVersion 选择
62
32
  if (params.routerVersion === 'V3') {
63
- return '0xBB069e9465BcabC4F488d21e793BDEf0F2d41D41'; // POTATOSWAP_V3_ROUTER
33
+ return ADDRESSES.XLAYER.PotatoSwapV3Router;
64
34
  }
65
35
  // 默认使用传入的 defaultRouter(通常是 V2)
66
36
  return defaultRouter;
@@ -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 { ZERO_ADDRESS } from '../../../shared/constants/index.js';
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 { ZERO_ADDRESS } from '../../../shared/constants/index.js';
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
  /**