four-flap-meme-sdk 2.2.19 → 3.0.0

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 (519) hide show
  1. package/dist/{shared/abis → abis}/common.d.ts +1 -1
  2. package/dist/{shared/abis → abis}/common.js +75 -91
  3. package/dist/abis/contracts/TaxToken.json +969 -0
  4. package/dist/abis/contracts/TokenManager2.json +136 -0
  5. package/dist/{shared/abis → abis/contracts}/index.d.ts +0 -1
  6. package/dist/{shared/abis → abis/contracts}/index.js +0 -2
  7. package/dist/abis/flap/index.d.ts +5 -0
  8. package/dist/abis/flap/index.js +5 -0
  9. package/dist/abis/flap/portal-eip7702.d.ts +4 -0
  10. package/dist/abis/flap/portal-eip7702.js +39 -0
  11. package/dist/abis/flap/portal-events.d.ts +6 -0
  12. package/dist/abis/flap/portal-events.js +17 -0
  13. package/dist/abis/flap/portal-merkle.d.ts +4 -0
  14. package/dist/abis/flap/portal-merkle.js +25 -0
  15. package/dist/abis/flap/portal.d.ts +6 -0
  16. package/dist/abis/flap/portal.js +37 -0
  17. package/dist/abis/flap/vault.d.ts +171 -0
  18. package/dist/abis/flap/vault.js +91 -0
  19. package/dist/abis/index.d.ts +6 -0
  20. package/dist/abis/index.js +9 -0
  21. package/dist/bundle/config-helpers.d.ts +37 -0
  22. package/dist/bundle/config-helpers.js +58 -0
  23. package/dist/bundle/errors.d.ts +50 -0
  24. package/dist/bundle/errors.js +38 -0
  25. package/dist/bundle/four-meme/approve-tokenmanager.d.ts +7 -0
  26. package/dist/bundle/four-meme/approve-tokenmanager.js +99 -0
  27. package/dist/bundle/four-meme/core-helpers.d.ts +8 -0
  28. package/dist/bundle/four-meme/core-helpers.js +41 -0
  29. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/core.d.ts +1 -1
  30. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/core.js +74 -150
  31. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/pancake-proxy.d.ts +1 -1
  32. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/pancake-proxy.js +85 -92
  33. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/private.d.ts +1 -1
  34. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/private.js +48 -59
  35. package/dist/bundle/four-meme/sign-context-helpers.d.ts +2 -0
  36. package/dist/bundle/four-meme/sign-context-helpers.js +2 -0
  37. package/dist/bundle/four-meme/swap-buy-first.d.ts +8 -0
  38. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-buy-first.js +56 -108
  39. package/dist/bundle/four-meme/swap-hop-helpers.d.ts +6 -0
  40. package/dist/bundle/four-meme/swap-hop-helpers.js +63 -0
  41. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-internal.js +4 -4
  42. package/dist/bundle/four-meme/swap-sign-helpers.d.ts +28 -0
  43. package/dist/bundle/four-meme/swap-sign-helpers.js +105 -0
  44. package/dist/bundle/four-meme/swap.d.ts +17 -0
  45. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap.js +84 -345
  46. package/dist/{contracts/tm-bundle-merkle/swap-buy-first.d.ts → bundle/four-meme/types/buy-first.d.ts} +11 -18
  47. package/dist/bundle/four-meme/types/core-flow.d.ts +63 -0
  48. package/dist/bundle/four-meme/types/core-flow.js +1 -0
  49. package/dist/{contracts/tm-bundle-merkle/types.d.ts → bundle/four-meme/types/index.d.ts} +130 -6
  50. package/dist/bundle/four-meme/types/index.js +1 -0
  51. package/dist/bundle/four-meme/types/swap-internal.d.ts +19 -0
  52. package/dist/bundle/four-meme/types/swap-internal.js +1 -0
  53. package/dist/bundle/four-meme/types.d.ts +1 -0
  54. package/dist/bundle/four-meme/utils-disperse.d.ts +7 -0
  55. package/dist/bundle/four-meme/utils-disperse.js +396 -0
  56. package/dist/bundle/four-meme/utils-pairwise.d.ts +8 -0
  57. package/dist/bundle/four-meme/utils-pairwise.js +328 -0
  58. package/dist/bundle/four-meme/utils-sweep.d.ts +8 -0
  59. package/dist/bundle/four-meme/utils-sweep.js +744 -0
  60. package/dist/bundle/index.d.ts +8 -0
  61. package/dist/bundle/index.js +8 -0
  62. package/dist/bundle/internal.d.ts +16 -0
  63. package/dist/bundle/internal.js +160 -0
  64. package/dist/bundle/sign-context-helpers.d.ts +26 -0
  65. package/dist/bundle/sign-context-helpers.js +63 -0
  66. package/dist/{contracts/tm-bundle-merkle → bundle}/submit.d.ts +6 -27
  67. package/dist/{contracts/tm-bundle-merkle → bundle}/submit.js +116 -313
  68. package/dist/bundle/types/index.d.ts +8 -0
  69. package/dist/bundle/types/index.js +1 -0
  70. package/dist/bundle/types.d.ts +1 -0
  71. package/dist/bundle/types.js +1 -0
  72. package/dist/chains/bsc/constants.js +1 -1
  73. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  74. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
  75. package/dist/chains/bsc/four/config.d.ts +5 -67
  76. package/dist/chains/bsc/four/config.js +2 -114
  77. package/dist/chains/bsc/four/core.d.ts +1 -4
  78. package/dist/chains/bsc/four/core.js +1 -592
  79. package/dist/chains/bsc/four/index.d.ts +6 -6
  80. package/dist/chains/bsc/four/index.js +6 -6
  81. package/dist/chains/bsc/four/internal.d.ts +2 -46
  82. package/dist/chains/bsc/four/internal.js +2 -239
  83. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  84. package/dist/chains/bsc/four/pancake-proxy.js +1 -687
  85. package/dist/chains/bsc/four/private.d.ts +1 -27
  86. package/dist/chains/bsc/four/private.js +1 -477
  87. package/dist/chains/bsc/four/submit.d.ts +2 -315
  88. package/dist/chains/bsc/four/submit.js +2 -752
  89. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  90. package/dist/chains/bsc/four/swap-buy-first.js +2 -507
  91. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  92. package/dist/chains/bsc/four/swap-internal.js +1 -18
  93. package/dist/chains/bsc/four/swap.d.ts +2 -144
  94. package/dist/chains/bsc/four/swap.js +2 -766
  95. package/dist/chains/bsc/four/types.d.ts +1 -476
  96. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  97. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  98. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  99. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  100. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  101. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  102. package/dist/chains/bsc/four/utils.d.ts +5 -18
  103. package/dist/chains/bsc/four/utils.js +5 -1552
  104. package/dist/chains/bsc/iro.d.ts +5 -0
  105. package/dist/chains/bsc/iro.js +4 -0
  106. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +155 -0
  107. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +80 -0
  108. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  109. package/dist/chains/bsc/pancake/bundle-buy-first.js +99 -214
  110. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  111. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  112. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  113. package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
  114. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  115. package/dist/chains/bsc/pancake/index.js +1 -3
  116. package/dist/chains/bsc/platforms/iro/constants.js +1 -1
  117. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  118. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  119. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  120. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  121. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  122. package/dist/chains/bsc/platforms/iro/token.js +5 -2
  123. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  124. package/dist/chains/eni/batch-router/transfer.js +57 -27
  125. package/dist/chains/eni/batch-router/utils.js +32 -6
  126. package/dist/chains/eni/bundler/sign.js +5 -6
  127. package/dist/chains/eni/bundler/submit.js +1 -4
  128. package/dist/chains/eni/constants.js +2 -2
  129. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  130. package/dist/chains/eni/flat-aliases.js +8 -0
  131. package/dist/chains/eni/index.d.ts +2 -1
  132. package/dist/chains/eni/index.js +1 -0
  133. package/dist/chains/eni/platforms/daoaas/create.js +3 -3
  134. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  135. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  136. package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
  137. package/dist/chains/eni/platforms/daoaas/portal-direct.js +29 -45
  138. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  139. package/dist/chains/eni/platforms/dswap/liquidity.js +59 -27
  140. package/dist/chains/eni/platforms/fair-launch/constants.js +1 -1
  141. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  142. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  143. package/dist/chains/eni/platforms/fair-launch/launcher.js +88 -47
  144. package/dist/chains/eni/platforms/fair-launch/pool.js +5 -2
  145. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  146. package/dist/chains/eni/platforms/iro/constants.d.ts +1 -1
  147. package/dist/chains/eni/platforms/iro/constants.js +2 -2
  148. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  149. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  150. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  151. package/dist/chains/eni/platforms/iro/index.js +4 -4
  152. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  153. package/dist/chains/eni/platforms/iro/token.js +108 -32
  154. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  155. package/dist/chains/eni/submit.d.ts +43 -0
  156. package/dist/chains/eni/submit.js +287 -0
  157. package/dist/chains/index.d.ts +13 -0
  158. package/dist/chains/index.js +13 -0
  159. package/dist/chains/monad/constants.js +1 -1
  160. package/dist/chains/xlayer/constants.d.ts +5 -0
  161. package/dist/chains/xlayer/constants.js +1 -1
  162. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  163. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
  164. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  165. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  166. package/dist/chains/xlayer/eip7702/bundle-create.js +104 -74
  167. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  168. package/dist/chains/xlayer/eip7702/bundle-sell.js +30 -112
  169. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  170. package/dist/chains/xlayer/eip7702/bundle-swap.js +52 -246
  171. package/dist/chains/xlayer/eip7702/constants.d.ts +11 -26
  172. package/dist/chains/xlayer/eip7702/constants.js +15 -68
  173. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  174. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  175. package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
  176. package/dist/chains/xlayer/eip7702/index.js +28 -81
  177. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  178. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  179. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  180. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +64 -308
  181. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  182. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +58 -0
  183. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  184. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  185. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  186. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  187. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  188. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  189. package/dist/chains/xlayer/eip7702/volume.js +89 -164
  190. package/dist/chains/xlayer/eoa/constants.d.ts +1 -1
  191. package/dist/chains/xlayer/eoa/constants.js +2 -16
  192. package/dist/chains/xlayer/eoa/dex-helpers.d.ts +1 -1
  193. package/dist/chains/xlayer/eoa/dex-helpers.js +7 -37
  194. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  195. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  196. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  197. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
  198. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  199. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
  200. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  201. package/dist/chains/xlayer/eoa/index.js +8 -23
  202. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  203. package/dist/chains/xlayer/eoa/router-manager.js +5 -4
  204. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  205. package/dist/chains/xlayer/eoa/types.js +1 -3
  206. package/dist/chains/xlayer/index.d.ts +3 -2
  207. package/dist/chains/xlayer/index.js +4 -7
  208. package/dist/core/amount/split-by-weight.d.ts +5 -0
  209. package/dist/core/amount/split-by-weight.js +35 -0
  210. package/dist/{shared → core}/clients/blockrazor.d.ts +4 -8
  211. package/dist/{shared → core}/clients/blockrazor.js +43 -35
  212. package/dist/{shared → core}/clients/club48.d.ts +2 -2
  213. package/dist/{shared → core}/clients/club48.js +36 -30
  214. package/dist/{shared → core}/clients/emitservice.js +2 -0
  215. package/dist/{shared → core}/clients/four.d.ts +21 -6
  216. package/dist/{shared → core}/clients/four.js +29 -24
  217. package/dist/core/clients/index.d.ts +8 -0
  218. package/dist/core/clients/index.js +8 -0
  219. package/dist/{shared → core}/clients/merkle.d.ts +4 -3
  220. package/dist/{shared → core}/clients/merkle.js +30 -47
  221. package/dist/{shared → core}/constants/addresses.d.ts +27 -1
  222. package/dist/{shared → core}/constants/addresses.js +39 -2
  223. package/dist/{shared → core}/constants/chains.d.ts +1 -1
  224. package/dist/{shared → core}/constants/chains.js +1 -1
  225. package/dist/{shared → core}/constants/gas.d.ts +1 -1
  226. package/dist/{shared → core}/constants/gas.js +2 -6
  227. package/dist/{shared → core}/constants/index.d.ts +5 -2
  228. package/dist/{shared → core}/constants/index.js +3 -2
  229. package/dist/core/constants/quote.d.ts +30 -0
  230. package/dist/core/constants/quote.js +37 -0
  231. package/dist/core/dex/v3-path.d.ts +6 -0
  232. package/dist/core/dex/v3-path.js +35 -0
  233. package/dist/core/erc20/decimals.d.ts +7 -0
  234. package/dist/core/erc20/decimals.js +24 -0
  235. package/dist/{utils → core}/erc20.d.ts +7 -89
  236. package/dist/{utils → core}/erc20.js +99 -130
  237. package/dist/core/foundation.d.ts +15 -0
  238. package/dist/core/foundation.js +14 -0
  239. package/dist/core/gas/bundle-gas.d.ts +49 -0
  240. package/dist/core/gas/bundle-gas.js +93 -0
  241. package/dist/core/gas/profit-hop.d.ts +20 -0
  242. package/dist/core/gas/profit-hop.js +72 -0
  243. package/dist/core/index.d.ts +5 -0
  244. package/dist/core/index.js +5 -0
  245. package/dist/core/legacy-types/errors.d.ts +27 -0
  246. package/dist/core/legacy-types/errors.js +34 -0
  247. package/dist/core/nonce/nonce-manager.d.ts +19 -0
  248. package/dist/core/nonce/nonce-manager.js +217 -0
  249. package/dist/core/normalize-unknown.d.ts +9 -0
  250. package/dist/core/normalize-unknown.js +29 -0
  251. package/dist/core/sdk-logger.d.ts +13 -0
  252. package/dist/core/sdk-logger.js +12 -0
  253. package/dist/core/shared-abis/common.d.ts +4 -0
  254. package/dist/core/shared-abis/common.js +4 -0
  255. package/dist/core/shared-abis/index.d.ts +5 -0
  256. package/dist/core/shared-abis/index.js +5 -0
  257. package/dist/core/tx/build-request.d.ts +17 -0
  258. package/dist/core/tx/build-request.js +25 -0
  259. package/dist/core/tx/sign-batch.d.ts +5 -0
  260. package/dist/core/tx/sign-batch.js +26 -0
  261. package/dist/core/tx/wallet-sign-patch.d.ts +1 -0
  262. package/dist/core/tx/wallet-sign-patch.js +18 -0
  263. package/dist/core/types/airdrop-sweep.d.ts +79 -0
  264. package/dist/core/types/airdrop-sweep.js +1 -0
  265. package/dist/core/types/erc20.d.ts +65 -0
  266. package/dist/core/types/erc20.js +1 -0
  267. package/dist/core/types/holders-maker.d.ts +64 -0
  268. package/dist/core/types/holders-maker.js +1 -0
  269. package/dist/core/types/index.d.ts +7 -0
  270. package/dist/core/types/index.js +1 -0
  271. package/dist/{utils → core/types}/lp-inspect.d.ts +4 -52
  272. package/dist/core/types/lp-inspect.js +1 -0
  273. package/dist/core/types/multicall.d.ts +5 -0
  274. package/dist/core/types/multicall.js +1 -0
  275. package/dist/core/types/private-sale.d.ts +35 -0
  276. package/dist/core/types/private-sale.js +1 -0
  277. package/dist/core/types/quote-helpers.d.ts +17 -0
  278. package/dist/core/types/quote-helpers.js +1 -0
  279. package/dist/core/types-erc20.d.ts +1 -0
  280. package/dist/core/types-erc20.js +1 -0
  281. package/dist/core/wallet/generate.d.ts +5 -0
  282. package/dist/core/wallet/generate.js +8 -0
  283. package/dist/domains/dex/direct-router-helpers.d.ts +269 -0
  284. package/dist/domains/dex/direct-router-helpers.js +536 -0
  285. package/dist/domains/dex/direct-router.d.ts +28 -0
  286. package/dist/{dex → domains/dex}/direct-router.js +246 -674
  287. package/dist/domains/dex/types.d.ts +81 -0
  288. package/dist/domains/dex/types.js +1 -0
  289. package/dist/{shared → domains}/flap/abi.js +1 -1
  290. package/dist/{shared → domains}/flap/constants.d.ts +1 -2
  291. package/dist/{shared → domains}/flap/constants.js +3 -4
  292. package/dist/{shared → domains}/flap/curve.js +3 -0
  293. package/dist/{shared → domains}/flap/errors.d.ts +1 -4
  294. package/dist/{shared → domains}/flap/errors.js +20 -1
  295. package/dist/domains/flap/index.d.ts +7 -0
  296. package/dist/domains/flap/index.js +5 -0
  297. package/dist/{shared → domains}/flap/meta.d.ts +22 -18
  298. package/dist/{shared → domains}/flap/meta.js +32 -24
  299. package/dist/{shared/flap/index.d.ts → domains/flap/module.d.ts} +4 -5
  300. package/dist/{shared/flap/index.js → domains/flap/module.js} +4 -5
  301. package/dist/{shared → domains}/flap/permit.js +10 -3
  302. package/dist/{shared → domains}/flap/pinata.d.ts +22 -6
  303. package/dist/{shared → domains}/flap/pinata.js +21 -26
  304. package/dist/domains/flap/portal-bundle-merkle/config.d.ts +10 -0
  305. package/dist/domains/flap/portal-bundle-merkle/config.js +13 -0
  306. package/dist/domains/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  307. package/dist/domains/flap/portal-bundle-merkle/core-helpers.js +83 -0
  308. package/dist/{shared → domains}/flap/portal-bundle-merkle/core.d.ts +0 -4
  309. package/dist/{shared → domains}/flap/portal-bundle-merkle/core.js +168 -175
  310. package/dist/{shared → domains}/flap/portal-bundle-merkle/create-to-dex.d.ts +17 -4
  311. package/dist/{shared → domains}/flap/portal-bundle-merkle/create-to-dex.js +97 -118
  312. package/dist/{shared → domains}/flap/portal-bundle-merkle/curve-to-dex.js +105 -123
  313. package/dist/domains/flap/portal-bundle-merkle/index.d.ts +18 -0
  314. package/dist/{shared → domains}/flap/portal-bundle-merkle/index.js +4 -7
  315. package/dist/{shared → domains}/flap/portal-bundle-merkle/pancake-proxy.js +73 -70
  316. package/dist/{shared → domains}/flap/portal-bundle-merkle/private.js +63 -116
  317. package/dist/domains/flap/portal-bundle-merkle/swap-batch.d.ts +8 -0
  318. package/dist/domains/flap/portal-bundle-merkle/swap-batch.js +227 -0
  319. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  320. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  321. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first.d.ts +2 -0
  322. package/dist/{shared → domains}/flap/portal-bundle-merkle/swap-buy-first.js +69 -288
  323. package/dist/domains/flap/portal-bundle-merkle/swap-cross.d.ts +9 -0
  324. package/dist/domains/flap/portal-bundle-merkle/swap-cross.js +139 -0
  325. package/dist/domains/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  326. package/dist/domains/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  327. package/dist/domains/flap/portal-bundle-merkle/swap-planning.d.ts +70 -0
  328. package/dist/domains/flap/portal-bundle-merkle/swap-planning.js +182 -0
  329. package/dist/domains/flap/portal-bundle-merkle/swap-quick-batch.d.ts +16 -0
  330. package/dist/domains/flap/portal-bundle-merkle/swap-quick-batch.js +327 -0
  331. package/dist/domains/flap/portal-bundle-merkle/swap-single.d.ts +2 -0
  332. package/dist/domains/flap/portal-bundle-merkle/swap-single.js +184 -0
  333. package/dist/domains/flap/portal-bundle-merkle/swap-types.d.ts +101 -0
  334. package/dist/domains/flap/portal-bundle-merkle/swap-types.js +1 -0
  335. package/dist/domains/flap/portal-bundle-merkle/swap.d.ts +8 -0
  336. package/dist/domains/flap/portal-bundle-merkle/swap.js +7 -0
  337. package/dist/{shared → domains}/flap/portal-bundle-merkle/types.d.ts +88 -12
  338. package/dist/domains/flap/portal-bundle-merkle/types.js +1 -0
  339. package/dist/domains/flap/portal-bundle-merkle/utils.d.ts +10 -0
  340. package/dist/{shared → domains}/flap/portal-bundle-merkle/utils.js +145 -265
  341. package/dist/{shared → domains}/flap/portal-bundle.d.ts +2 -2
  342. package/dist/{shared → domains}/flap/portal-bundle.js +84 -79
  343. package/dist/domains/flap/portal-create-token.d.ts +81 -0
  344. package/dist/domains/flap/portal-create-token.js +255 -0
  345. package/dist/{shared → domains}/flap/portal.d.ts +1 -2
  346. package/dist/{shared → domains}/flap/portal.js +36 -28
  347. package/dist/{shared → domains}/flap/vanity.d.ts +6 -6
  348. package/dist/{shared → domains}/flap/vanity.js +15 -21
  349. package/dist/{shared → domains}/flap/vault.d.ts +25 -93
  350. package/dist/{shared → domains}/flap/vault.js +77 -127
  351. package/dist/{flows → domains/flows}/create.d.ts +2 -1
  352. package/dist/{flows → domains/flows}/create.js +8 -8
  353. package/dist/domains/flows/index.d.ts +9 -0
  354. package/dist/domains/flows/index.js +9 -0
  355. package/dist/{contracts → domains/four/contracts}/helper3.d.ts +20 -5
  356. package/dist/{contracts → domains/four/contracts}/helper3.js +56 -20
  357. package/dist/domains/four/contracts/tm-bundle-helpers.d.ts +88 -0
  358. package/dist/domains/four/contracts/tm-bundle-helpers.js +73 -0
  359. package/dist/{contracts → domains/four/contracts}/tm-bundle.d.ts +4 -52
  360. package/dist/{contracts → domains/four/contracts}/tm-bundle.js +122 -189
  361. package/dist/{contracts → domains/four/contracts}/tm.d.ts +10 -8
  362. package/dist/{contracts → domains/four/contracts}/tm.js +39 -35
  363. package/dist/{contracts → domains/four/contracts}/tm1.js +9 -4
  364. package/dist/{contracts → domains/four/contracts}/tm2.js +10 -5
  365. package/dist/domains/four/index.d.ts +7 -0
  366. package/dist/domains/four/index.js +7 -0
  367. package/dist/{shared → domains}/four/tax-token.d.ts +1 -1
  368. package/dist/{shared → domains}/four/tax-token.js +31 -10
  369. package/dist/domains/holders/holders-maker-helpers.d.ts +9 -0
  370. package/dist/domains/holders/holders-maker-helpers.js +9 -0
  371. package/dist/domains/holders/holders-maker.d.ts +18 -0
  372. package/dist/domains/holders/holders-maker.js +324 -0
  373. package/dist/domains/holders/index.d.ts +1 -0
  374. package/dist/domains/holders/index.js +1 -0
  375. package/dist/domains/holders/internal/addresses.d.ts +12 -0
  376. package/dist/domains/holders/internal/addresses.js +15 -0
  377. package/dist/domains/holders/internal/buy-tx.d.ts +44 -0
  378. package/dist/domains/holders/internal/buy-tx.js +278 -0
  379. package/dist/domains/holders/internal/constants.d.ts +6 -0
  380. package/dist/domains/holders/internal/constants.js +7 -0
  381. package/dist/domains/holders/internal/disperse.d.ts +18 -0
  382. package/dist/domains/holders/internal/disperse.js +90 -0
  383. package/dist/domains/holders/internal/routing.d.ts +4 -0
  384. package/dist/domains/holders/internal/routing.js +45 -0
  385. package/dist/domains/holders/internal/transfer-tx.d.ts +4 -0
  386. package/dist/domains/holders/internal/transfer-tx.js +67 -0
  387. package/dist/domains/holders/types.d.ts +1 -0
  388. package/dist/domains/holders/types.js +1 -0
  389. package/dist/domains/lp-inspect/index.d.ts +1 -0
  390. package/dist/domains/lp-inspect/index.js +1 -0
  391. package/dist/domains/lp-inspect/lp-inspect-helpers.d.ts +9 -0
  392. package/dist/domains/lp-inspect/lp-inspect-helpers.js +109 -0
  393. package/dist/domains/lp-inspect/lp-inspect.d.ts +40 -0
  394. package/dist/{utils → domains/lp-inspect}/lp-inspect.js +78 -293
  395. package/dist/domains/lp-inspect/types.d.ts +1 -0
  396. package/dist/domains/lp-inspect/types.js +1 -0
  397. package/dist/domains/merkle/index.d.ts +12 -0
  398. package/dist/domains/merkle/index.js +11 -0
  399. package/dist/domains/private-sale/index.d.ts +1 -0
  400. package/dist/domains/private-sale/index.js +1 -0
  401. package/dist/domains/private-sale/private-sale.d.ts +34 -0
  402. package/dist/{utils → domains/private-sale}/private-sale.js +5 -16
  403. package/dist/domains/private-sale/types.d.ts +1 -0
  404. package/dist/domains/private-sale/types.js +1 -0
  405. package/dist/domains/quote/index.d.ts +1 -0
  406. package/dist/domains/quote/index.js +1 -0
  407. package/dist/{utils → domains/quote}/quote-helpers.d.ts +4 -45
  408. package/dist/{utils → domains/quote}/quote-helpers.js +17 -74
  409. package/dist/domains/quote/types.d.ts +1 -0
  410. package/dist/domains/quote/types.js +1 -0
  411. package/dist/domains/vanity/index.d.ts +5 -0
  412. package/dist/domains/vanity/index.js +5 -0
  413. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  414. package/dist/exports/root-bundle-and-tooling.js +30 -0
  415. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  416. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  417. package/dist/exports/root-foundations.d.ts +35 -0
  418. package/dist/exports/root-foundations.js +70 -0
  419. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  420. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  421. package/dist/index.d.ts +17 -88
  422. package/dist/index.js +17 -218
  423. package/dist/utils/airdrop-sweep.d.ts +4 -76
  424. package/dist/utils/airdrop-sweep.js +42 -55
  425. package/dist/utils/bundle-helpers.d.ts +9 -243
  426. package/dist/utils/bundle-helpers.js +10 -584
  427. package/dist/utils/constants.d.ts +5 -61
  428. package/dist/utils/constants.js +5 -80
  429. package/dist/utils/contract-factory.d.ts +2 -4
  430. package/dist/utils/contract-factory.js +25 -18
  431. package/dist/utils/errors.d.ts +12 -1
  432. package/dist/utils/errors.js +60 -1
  433. package/dist/utils/hop-chains.d.ts +35 -0
  434. package/dist/utils/hop-chains.js +215 -0
  435. package/dist/utils/index.d.ts +5 -0
  436. package/dist/utils/index.js +5 -0
  437. package/dist/utils/mpcExclusive.d.ts +2 -5
  438. package/dist/utils/mpcExclusive.js +4 -3
  439. package/dist/utils/provider-factory.d.ts +4 -0
  440. package/dist/utils/provider-factory.js +10 -0
  441. package/dist/utils/stealth-transfer.d.ts +2 -28
  442. package/dist/utils/stealth-transfer.js +41 -21
  443. package/dist/utils/swap-helpers.d.ts +2 -15
  444. package/dist/utils/swap-helpers.js +7 -12
  445. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  446. package/dist/utils/types/airdrop-sweep.js +1 -0
  447. package/dist/utils/types/contract-factory.d.ts +1 -0
  448. package/dist/utils/types/contract-factory.js +1 -0
  449. package/dist/utils/types/errors.d.ts +1 -0
  450. package/dist/utils/types/errors.js +1 -0
  451. package/dist/utils/types/hop-chains.d.ts +8 -0
  452. package/dist/utils/types/hop-chains.js +1 -0
  453. package/dist/utils/types/index.d.ts +13 -0
  454. package/dist/utils/types/index.js +1 -0
  455. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  456. package/dist/utils/types/mpc-exclusive.js +1 -0
  457. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  458. package/dist/utils/types/stealth-transfer.js +1 -0
  459. package/dist/utils/types/wallet.d.ts +25 -0
  460. package/dist/utils/types/wallet.js +1 -0
  461. package/dist/utils/wallet.d.ts +4 -25
  462. package/dist/utils/wallet.js +27 -22
  463. package/package.json +96 -2
  464. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +0 -26
  465. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +0 -113
  466. package/dist/contracts/tm-bundle-merkle/config.d.ts +0 -70
  467. package/dist/contracts/tm-bundle-merkle/config.js +0 -114
  468. package/dist/contracts/tm-bundle-merkle/index.d.ts +0 -15
  469. package/dist/contracts/tm-bundle-merkle/index.js +0 -29
  470. package/dist/contracts/tm-bundle-merkle/internal.d.ts +0 -48
  471. package/dist/contracts/tm-bundle-merkle/internal.js +0 -240
  472. package/dist/contracts/tm-bundle-merkle/swap.d.ts +0 -146
  473. package/dist/contracts/tm-bundle-merkle/utils.d.ts +0 -20
  474. package/dist/contracts/tm-bundle-merkle/utils.js +0 -1503
  475. package/dist/dex/direct-router.d.ts +0 -150
  476. package/dist/shared/abis/TaxToken.json +0 -105
  477. package/dist/shared/abis/TokenManager2.json +0 -60
  478. package/dist/shared/flap/graduated-dex.d.ts +0 -1
  479. package/dist/shared/flap/graduated-dex.js +0 -1
  480. package/dist/shared/flap/launch-v6.d.ts +0 -132
  481. package/dist/shared/flap/launch-v6.js +0 -137
  482. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +0 -79
  483. package/dist/shared/flap/portal-bundle-merkle/config.js +0 -133
  484. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +0 -14
  485. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
  486. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +0 -201
  487. package/dist/shared/flap/portal-bundle-merkle/swap.js +0 -1359
  488. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +0 -89
  489. package/dist/shared/flap/portal-create-token.d.ts +0 -63
  490. package/dist/shared/flap/portal-create-token.js +0 -258
  491. package/dist/shared/four/index.d.ts +0 -7
  492. package/dist/shared/four/index.js +0 -22
  493. package/dist/shared/index.d.ts +0 -10
  494. package/dist/shared/index.js +0 -10
  495. package/dist/utils/holders-maker.d.ts +0 -154
  496. package/dist/utils/holders-maker.js +0 -945
  497. package/dist/utils/pcs-infinity-cl.d.ts +0 -65
  498. package/dist/utils/pcs-infinity-cl.js +0 -426
  499. package/dist/utils/private-sale.d.ts +0 -90
  500. /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
  501. /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
  502. /package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-internal.d.ts +0 -0
  503. /package/dist/{shared/flap/portal-bundle-merkle/types.js → bundle/four-meme/types/buy-first.js} +0 -0
  504. /package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/types.js +0 -0
  505. /package/dist/{shared → core}/clients/emitservice.d.ts +0 -0
  506. /package/dist/{shared → core}/constants/profit.d.ts +0 -0
  507. /package/dist/{shared → core}/constants/profit.js +0 -0
  508. /package/dist/{dex → domains/dex}/index.d.ts +0 -0
  509. /package/dist/{dex → domains/dex}/index.js +0 -0
  510. /package/dist/{shared → domains}/flap/abi.d.ts +0 -0
  511. /package/dist/{shared → domains}/flap/curve.d.ts +0 -0
  512. /package/dist/{shared → domains}/flap/ipfs.d.ts +0 -0
  513. /package/dist/{shared → domains}/flap/ipfs.js +0 -0
  514. /package/dist/{shared → domains}/flap/permit.d.ts +0 -0
  515. /package/dist/{shared → domains}/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -0
  516. /package/dist/{shared → domains}/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -0
  517. /package/dist/{shared → domains}/flap/portal-bundle-merkle/private.d.ts +0 -0
  518. /package/dist/{contracts → domains/four/contracts}/tm1.d.ts +0 -0
  519. /package/dist/{contracts → domains/four/contracts}/tm2.d.ts +0 -0
@@ -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 '../../../core/constants/index.js';
5
+ export { splitAmountByWeight as splitAmount } from '../../../core/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 '../../../core/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 '../../../core/constants/index.js';
4
+ import { quoteV2, quoteV3 } from '../../../domains/quote/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 '../../../core/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
  /**