four-flap-meme-sdk 2.2.2 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/README.en.md +41 -6
  2. package/README.md +31 -0
  3. package/README.zh-CN.md +41 -6
  4. package/dist/__tests__/subpath-exports.test.d.ts +1 -0
  5. package/dist/__tests__/subpath-exports.test.js +64 -0
  6. package/dist/abis/common.d.ts +85 -0
  7. package/dist/abis/common.js +264 -0
  8. package/dist/abis/contracts/TaxToken.json +969 -0
  9. package/dist/abis/contracts/TokenManager2.json +136 -0
  10. package/dist/abis/contracts/index.d.ts +5 -0
  11. package/dist/abis/contracts/index.js +5 -0
  12. package/dist/abis/flap/index.d.ts +3 -0
  13. package/dist/abis/flap/index.js +3 -0
  14. package/dist/abis/flap/portal-events.d.ts +6 -0
  15. package/dist/abis/flap/portal-events.js +17 -0
  16. package/dist/abis/flap/portal.d.ts +6 -0
  17. package/dist/abis/flap/portal.js +37 -0
  18. package/dist/abis/flap/vault.d.ts +171 -0
  19. package/dist/abis/flap/vault.js +91 -0
  20. package/dist/abis/index.d.ts +8 -0
  21. package/dist/abis/index.js +11 -0
  22. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +1 -0
  23. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  24. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +1 -0
  25. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  26. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
  27. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  28. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
  29. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  30. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  31. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  32. package/dist/bundle-core/config-helpers.d.ts +36 -0
  33. package/dist/bundle-core/config-helpers.js +57 -0
  34. package/dist/bundle-core/errors.d.ts +50 -0
  35. package/dist/bundle-core/errors.js +35 -0
  36. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  37. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  38. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  39. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  40. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  41. package/dist/bundle-core/four-meme/core.js +515 -0
  42. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  43. package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
  44. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  45. package/dist/bundle-core/four-meme/private.js +465 -0
  46. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  47. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  48. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  49. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  50. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  51. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  52. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  53. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  54. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  55. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  56. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  57. package/dist/bundle-core/four-meme/swap.js +505 -0
  58. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  59. package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
  60. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  61. package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
  62. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  63. package/dist/bundle-core/four-meme/types/index.js +1 -0
  64. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  65. package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
  66. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  67. package/dist/bundle-core/four-meme/types.js +1 -0
  68. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  69. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  70. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  71. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  72. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  73. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  74. package/dist/bundle-core/index.d.ts +8 -0
  75. package/dist/bundle-core/index.js +8 -0
  76. package/dist/bundle-core/internal.d.ts +21 -0
  77. package/dist/bundle-core/internal.js +182 -0
  78. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  79. package/dist/bundle-core/sign-context-helpers.js +67 -0
  80. package/dist/bundle-core/submit.d.ts +293 -0
  81. package/dist/bundle-core/submit.js +727 -0
  82. package/dist/bundle-core/types/index.d.ts +8 -0
  83. package/dist/bundle-core/types/index.js +1 -0
  84. package/dist/bundle-core/types.d.ts +1 -0
  85. package/dist/bundle-core/types.js +1 -0
  86. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  87. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
  88. package/dist/chains/bsc/four/config.d.ts +5 -67
  89. package/dist/chains/bsc/four/config.js +2 -114
  90. package/dist/chains/bsc/four/core.d.ts +1 -4
  91. package/dist/chains/bsc/four/core.js +1 -592
  92. package/dist/chains/bsc/four/index.d.ts +6 -6
  93. package/dist/chains/bsc/four/index.js +6 -6
  94. package/dist/chains/bsc/four/internal.d.ts +2 -46
  95. package/dist/chains/bsc/four/internal.js +2 -239
  96. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  97. package/dist/chains/bsc/four/pancake-proxy.js +1 -687
  98. package/dist/chains/bsc/four/private.d.ts +1 -27
  99. package/dist/chains/bsc/four/private.js +1 -477
  100. package/dist/chains/bsc/four/submit.d.ts +2 -315
  101. package/dist/chains/bsc/four/submit.js +2 -752
  102. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  103. package/dist/chains/bsc/four/swap-buy-first.js +2 -507
  104. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  105. package/dist/chains/bsc/four/swap-internal.js +1 -18
  106. package/dist/chains/bsc/four/swap.d.ts +2 -144
  107. package/dist/chains/bsc/four/swap.js +2 -766
  108. package/dist/chains/bsc/four/types.d.ts +1 -476
  109. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  110. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  111. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  112. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  113. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  114. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  115. package/dist/chains/bsc/four/utils.d.ts +5 -18
  116. package/dist/chains/bsc/four/utils.js +5 -1552
  117. package/dist/chains/bsc/iro.d.ts +5 -0
  118. package/dist/chains/bsc/iro.js +4 -0
  119. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  120. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  121. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  122. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -212
  123. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  124. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  125. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  126. package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
  127. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  128. package/dist/chains/bsc/pancake/index.js +1 -3
  129. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  130. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  131. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  132. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  133. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  134. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  135. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  136. package/dist/chains/eni/batch-router/transfer.js +55 -25
  137. package/dist/chains/eni/batch-router/utils.js +32 -6
  138. package/dist/chains/eni/bundler/sign.js +5 -6
  139. package/dist/chains/eni/bundler/submit.js +1 -4
  140. package/dist/chains/eni/constants.js +1 -1
  141. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  142. package/dist/chains/eni/flat-aliases.js +8 -0
  143. package/dist/chains/eni/index.d.ts +2 -1
  144. package/dist/chains/eni/index.js +1 -0
  145. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  146. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  147. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  148. package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
  149. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -44
  150. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  151. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  152. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  153. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  154. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -46
  155. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  156. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  157. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  158. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  159. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  160. package/dist/chains/eni/platforms/iro/index.js +4 -4
  161. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  162. package/dist/chains/eni/platforms/iro/token.js +107 -31
  163. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  164. package/dist/chains/eni/submit.d.ts +43 -0
  165. package/dist/chains/eni/submit.js +286 -0
  166. package/dist/chains/index.d.ts +13 -0
  167. package/dist/chains/index.js +13 -0
  168. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  169. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
  170. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  171. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  172. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -59
  173. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  174. package/dist/chains/xlayer/eip7702/bundle-sell.js +29 -111
  175. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  176. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -245
  177. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  178. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  179. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  180. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  181. package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
  182. package/dist/chains/xlayer/eip7702/index.js +28 -81
  183. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  184. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  185. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  186. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +63 -307
  187. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  188. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  189. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  190. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  191. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  192. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  193. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  194. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  195. package/dist/chains/xlayer/eip7702/volume.js +89 -164
  196. package/dist/chains/xlayer/eoa/constants.js +1 -1
  197. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  198. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  199. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  200. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  201. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
  202. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  203. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
  204. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  205. package/dist/chains/xlayer/eoa/index.js +8 -23
  206. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  207. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  208. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  209. package/dist/chains/xlayer/eoa/types.js +1 -3
  210. package/dist/chains/xlayer/index.d.ts +3 -2
  211. package/dist/chains/xlayer/index.js +4 -7
  212. package/dist/contracts/helper3.d.ts +20 -5
  213. package/dist/contracts/helper3.js +56 -20
  214. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  215. package/dist/contracts/tm-bundle-helpers.js +72 -0
  216. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  217. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -113
  218. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -67
  219. package/dist/contracts/tm-bundle-merkle/config.js +2 -114
  220. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  221. package/dist/contracts/tm-bundle-merkle/core.js +1 -591
  222. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  223. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  224. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -46
  225. package/dist/contracts/tm-bundle-merkle/internal.js +2 -238
  226. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  227. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -686
  228. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  229. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  230. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  231. package/dist/contracts/tm-bundle-merkle/submit.js +3 -928
  232. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  233. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -506
  234. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  235. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  236. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  237. package/dist/contracts/tm-bundle-merkle/swap.js +2 -764
  238. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  239. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  240. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  241. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  242. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  243. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  244. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  245. package/dist/contracts/tm-bundle-merkle/utils.d.ts +6 -18
  246. package/dist/contracts/tm-bundle-merkle/utils.js +6 -1501
  247. package/dist/contracts/tm-bundle.d.ts +3 -51
  248. package/dist/contracts/tm-bundle.js +108 -177
  249. package/dist/contracts/tm.d.ts +3 -2
  250. package/dist/contracts/tm.js +37 -32
  251. package/dist/contracts/tm1.js +9 -4
  252. package/dist/contracts/tm2.js +9 -4
  253. package/dist/dex/direct-router-helpers.d.ts +264 -0
  254. package/dist/dex/direct-router-helpers.js +539 -0
  255. package/dist/dex/direct-router.d.ts +3 -125
  256. package/dist/dex/direct-router.js +237 -666
  257. package/dist/dex/types.d.ts +81 -0
  258. package/dist/dex/types.js +1 -0
  259. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  260. package/dist/exports/root-bundle-and-tooling.js +30 -0
  261. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  262. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  263. package/dist/exports/root-foundations.d.ts +35 -0
  264. package/dist/exports/root-foundations.js +70 -0
  265. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  266. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  267. package/dist/flap/index.d.ts +10 -0
  268. package/dist/flap/index.js +8 -0
  269. package/dist/flows/create.d.ts +2 -1
  270. package/dist/flows/create.js +6 -6
  271. package/dist/flows/index.d.ts +1 -0
  272. package/dist/flows/index.js +1 -0
  273. package/dist/index.d.ts +20 -85
  274. package/dist/index.js +20 -215
  275. package/dist/merkle/index.d.ts +12 -0
  276. package/dist/merkle/index.js +11 -0
  277. package/dist/shared/abis/common.d.ts +2 -83
  278. package/dist/shared/abis/common.js +2 -252
  279. package/dist/shared/abis/index.d.ts +5 -6
  280. package/dist/shared/abis/index.js +5 -7
  281. package/dist/shared/clients/blockrazor.js +39 -25
  282. package/dist/shared/clients/club48.d.ts +2 -2
  283. package/dist/shared/clients/club48.js +34 -29
  284. package/dist/shared/clients/emitservice.js +2 -0
  285. package/dist/shared/clients/four.d.ts +21 -6
  286. package/dist/shared/clients/four.js +29 -24
  287. package/dist/shared/clients/index.d.ts +8 -0
  288. package/dist/shared/clients/index.js +8 -0
  289. package/dist/shared/clients/merkle.js +27 -34
  290. package/dist/shared/constants/addresses.d.ts +1 -1
  291. package/dist/shared/constants/addresses.js +11 -2
  292. package/dist/shared/constants/chains.d.ts +1 -1
  293. package/dist/shared/constants/chains.js +1 -1
  294. package/dist/shared/constants/gas.d.ts +1 -1
  295. package/dist/shared/constants/gas.js +2 -6
  296. package/dist/shared/constants/index.d.ts +3 -0
  297. package/dist/shared/constants/index.js +1 -0
  298. package/dist/shared/constants/quote.d.ts +30 -0
  299. package/dist/shared/constants/quote.js +37 -0
  300. package/dist/shared/flap/abi.js +1 -1
  301. package/dist/shared/flap/constants.d.ts +1 -2
  302. package/dist/shared/flap/constants.js +2 -3
  303. package/dist/shared/flap/curve.js +3 -0
  304. package/dist/shared/flap/errors.d.ts +1 -4
  305. package/dist/shared/flap/errors.js +20 -1
  306. package/dist/shared/flap/index.d.ts +5 -4
  307. package/dist/shared/flap/index.js +5 -4
  308. package/dist/shared/flap/meta.d.ts +22 -18
  309. package/dist/shared/flap/meta.js +12 -17
  310. package/dist/shared/flap/permit.js +5 -2
  311. package/dist/shared/flap/pinata.d.ts +22 -6
  312. package/dist/shared/flap/pinata.js +21 -26
  313. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  314. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  315. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  316. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  317. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  318. package/dist/shared/flap/portal-bundle-merkle/core.js +86 -278
  319. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +7 -2
  320. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +101 -206
  321. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  322. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  323. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  324. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  325. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  326. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  327. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  328. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  329. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  330. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  331. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  332. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  333. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  334. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +83 -9
  335. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  336. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  337. package/dist/shared/flap/portal-bundle.js +55 -56
  338. package/dist/shared/flap/portal-create-token.d.ts +77 -0
  339. package/dist/shared/flap/portal-create-token.js +214 -0
  340. package/dist/shared/flap/portal.d.ts +14 -3
  341. package/dist/shared/flap/portal.js +50 -25
  342. package/dist/shared/flap/vanity.d.ts +1 -5
  343. package/dist/shared/flap/vanity.js +6 -17
  344. package/dist/shared/flap/vault.d.ts +17 -124
  345. package/dist/shared/flap/vault.js +67 -148
  346. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  347. package/dist/shared/foundation/dex/v3-path.js +35 -0
  348. package/dist/shared/foundation/gas/bundle-gas.d.ts +49 -0
  349. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  350. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  351. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  352. package/dist/shared/foundation/index.d.ts +13 -0
  353. package/dist/shared/foundation/index.js +12 -0
  354. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  355. package/dist/shared/foundation/nonce/nonce-manager.js +183 -0
  356. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  357. package/dist/shared/foundation/normalize-unknown.js +29 -0
  358. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  359. package/dist/shared/foundation/sdk-logger.js +12 -0
  360. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  361. package/dist/shared/foundation/tx/build-request.js +25 -0
  362. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  363. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  364. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
  365. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  366. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  367. package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
  368. package/dist/shared/foundation/types/erc20.d.ts +65 -0
  369. package/dist/shared/foundation/types/erc20.js +1 -0
  370. package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
  371. package/dist/shared/foundation/types/holders-maker.js +1 -0
  372. package/dist/shared/foundation/types/index.d.ts +7 -0
  373. package/dist/shared/foundation/types/index.js +1 -0
  374. package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
  375. package/dist/shared/foundation/types/lp-inspect.js +1 -0
  376. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  377. package/dist/shared/foundation/types/multicall.js +1 -0
  378. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  379. package/dist/shared/foundation/types/private-sale.js +1 -0
  380. package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
  381. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  382. package/dist/shared/four/tax-token.d.ts +1 -1
  383. package/dist/shared/four/tax-token.js +27 -7
  384. package/dist/shared/index.d.ts +6 -0
  385. package/dist/shared/index.js +4 -0
  386. package/dist/types/errors.d.ts +27 -0
  387. package/dist/types/errors.js +34 -0
  388. package/dist/utils/airdrop-sweep.d.ts +4 -76
  389. package/dist/utils/airdrop-sweep.js +42 -55
  390. package/dist/utils/bundle-helpers.d.ts +9 -243
  391. package/dist/utils/bundle-helpers.js +10 -584
  392. package/dist/utils/constants.d.ts +5 -61
  393. package/dist/utils/constants.js +5 -80
  394. package/dist/utils/contract-factory.d.ts +2 -4
  395. package/dist/utils/contract-factory.js +25 -18
  396. package/dist/utils/erc20.d.ts +7 -89
  397. package/dist/utils/erc20.js +94 -125
  398. package/dist/utils/errors.d.ts +12 -1
  399. package/dist/utils/errors.js +60 -1
  400. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  401. package/dist/utils/holders-maker/addresses.js +15 -0
  402. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  403. package/dist/utils/holders-maker/buy-tx.js +278 -0
  404. package/dist/utils/holders-maker/constants.d.ts +6 -0
  405. package/dist/utils/holders-maker/constants.js +7 -0
  406. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  407. package/dist/utils/holders-maker/disperse.js +90 -0
  408. package/dist/utils/holders-maker/routing.d.ts +4 -0
  409. package/dist/utils/holders-maker/routing.js +45 -0
  410. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  411. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  412. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  413. package/dist/utils/holders-maker-helpers.js +9 -0
  414. package/dist/utils/holders-maker.d.ts +2 -138
  415. package/dist/utils/holders-maker.js +26 -661
  416. package/dist/utils/hop-chains.d.ts +35 -0
  417. package/dist/utils/hop-chains.js +215 -0
  418. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  419. package/dist/utils/lp-inspect-helpers.js +109 -0
  420. package/dist/utils/lp-inspect.d.ts +2 -112
  421. package/dist/utils/lp-inspect.js +73 -223
  422. package/dist/utils/mpcExclusive.d.ts +2 -5
  423. package/dist/utils/mpcExclusive.js +4 -3
  424. package/dist/utils/private-sale.d.ts +2 -58
  425. package/dist/utils/private-sale.js +4 -15
  426. package/dist/utils/provider-factory.d.ts +4 -0
  427. package/dist/utils/provider-factory.js +10 -0
  428. package/dist/utils/quote-helpers.d.ts +4 -45
  429. package/dist/utils/quote-helpers.js +17 -74
  430. package/dist/utils/stealth-transfer.d.ts +2 -28
  431. package/dist/utils/stealth-transfer.js +31 -15
  432. package/dist/utils/swap-helpers.d.ts +2 -15
  433. package/dist/utils/swap-helpers.js +6 -11
  434. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  435. package/dist/utils/types/airdrop-sweep.js +1 -0
  436. package/dist/utils/types/contract-factory.d.ts +1 -0
  437. package/dist/utils/types/contract-factory.js +1 -0
  438. package/dist/utils/types/erc20.d.ts +1 -0
  439. package/dist/utils/types/erc20.js +1 -0
  440. package/dist/utils/types/errors.d.ts +1 -0
  441. package/dist/utils/types/errors.js +1 -0
  442. package/dist/utils/types/holders-maker.d.ts +1 -0
  443. package/dist/utils/types/holders-maker.js +1 -0
  444. package/dist/utils/types/hop-chains.d.ts +8 -0
  445. package/dist/utils/types/hop-chains.js +1 -0
  446. package/dist/utils/types/index.d.ts +13 -0
  447. package/dist/utils/types/index.js +1 -0
  448. package/dist/utils/types/lp-inspect.d.ts +1 -0
  449. package/dist/utils/types/lp-inspect.js +1 -0
  450. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  451. package/dist/utils/types/mpc-exclusive.js +1 -0
  452. package/dist/utils/types/private-sale.d.ts +1 -0
  453. package/dist/utils/types/private-sale.js +1 -0
  454. package/dist/utils/types/quote-helpers.d.ts +1 -0
  455. package/dist/utils/types/quote-helpers.js +1 -0
  456. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  457. package/dist/utils/types/stealth-transfer.js +1 -0
  458. package/dist/utils/types/wallet.d.ts +25 -0
  459. package/dist/utils/types/wallet.js +1 -0
  460. package/dist/utils/wallet.d.ts +2 -25
  461. package/dist/utils/wallet.js +13 -10
  462. package/dist/vanity/index.d.ts +5 -0
  463. package/dist/vanity/index.js +5 -0
  464. package/package.json +160 -4
  465. package/src/abis/contracts/TaxToken.json +969 -0
  466. package/src/abis/contracts/TokenManager.json +836 -0
  467. package/src/abis/contracts/TokenManager2.json +136 -0
  468. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  469. package/dist/shared/abis/TaxToken.json +0 -105
  470. package/dist/shared/abis/TokenManager2.json +0 -60
  471. /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
  472. /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
@@ -11,8 +11,9 @@
11
11
  * 支持池子类型:V2, V3
12
12
  */
13
13
  import { ethers, Wallet, Contract } from 'ethers';
14
- import { directV2BatchBuy, directV2BatchSell, directV3BatchBuy, directV3BatchSell } from '../../../dex/direct-router.js';
15
- import { PROFIT_CONFIG } from '../../../utils/constants.js';
14
+ import { createXLayerProvider } from '../../../utils/provider-factory.js';
15
+ import { directV2BatchBuy, directV2BatchSell, directV3BatchBuy, directV3BatchSell, } from '../../../dex/direct-router.js';
16
+ import { getProfitRecipient } from '../../../shared/constants/index.js';
16
17
  // ============================================================================
17
18
  // 辅助函数
18
19
  // ============================================================================
@@ -54,8 +55,8 @@ export async function signEoaWashBuyTransactions(params) {
54
55
  throw new Error('[signEoaWashBuyTransactions] 私钥数量与买入金额数量不一致');
55
56
  }
56
57
  // 创建钱包
57
- const provider = new ethers.JsonRpcProvider(config.rpcUrl);
58
- const wallets = privateKeys.map(pk => new Wallet(pk, provider));
58
+ const provider = createXLayerProvider(config.rpcUrl);
59
+ const wallets = privateKeys.map((pk) => new Wallet(pk, provider));
59
60
  let result;
60
61
  if (poolType === 'V2') {
61
62
  result = await directV2BatchBuy({
@@ -69,7 +70,7 @@ export async function signEoaWashBuyTransactions(params) {
69
70
  config: {
70
71
  ...config,
71
72
  skipProfit: true, // 买入时不刮取利润(卖出时刮取)
72
- }
73
+ },
73
74
  });
74
75
  }
75
76
  else {
@@ -86,10 +87,9 @@ export async function signEoaWashBuyTransactions(params) {
86
87
  config: {
87
88
  ...config,
88
89
  skipProfit: true, // 买入时不刮取利润(卖出时刮取)
89
- }
90
+ },
90
91
  });
91
92
  }
92
- console.log(`[signEoaWashBuyTransactions] 签名 ${result.signedTransactions.length} 笔买入交易`);
93
93
  return {
94
94
  signedTransactions: result.signedTransactions,
95
95
  wallets,
@@ -107,35 +107,32 @@ export async function signEoaWashBuyTransactions(params) {
107
107
  */
108
108
  export async function signEoaWashSellTransactions(params, wallets, tokenDecimals) {
109
109
  const { tokenAddress, poolType, routerAddress, quoteToken, config } = params;
110
- const provider = new ethers.JsonRpcProvider(config.rpcUrl);
110
+ const provider = createXLayerProvider(config.rpcUrl);
111
111
  // 获取代币精度
112
- const decimals = tokenDecimals ?? await getTokenDecimals(provider, tokenAddress);
113
- console.log(`[signEoaWashSellTransactions] 代币精度: ${decimals}`);
112
+ const decimals = tokenDecimals ?? (await getTokenDecimals(provider, tokenAddress));
114
113
  // 查询所有钱包的代币余额
115
- const balancesWei = await Promise.all(wallets.map(w => getTokenBalance(provider, tokenAddress, w.address)));
114
+ const balancesWei = await Promise.all(wallets.map((w) => getTokenBalance(provider, tokenAddress, w.address)));
116
115
  // 转换为格式化金额
117
- const sellAmounts = balancesWei.map(balance => {
116
+ const sellAmounts = balancesWei.map((balance) => {
118
117
  if (balance <= 0n)
119
118
  return '0';
120
119
  return ethers.formatUnits(balance, decimals);
121
120
  });
122
- console.log(`[signEoaWashSellTransactions] 钱包余额:`, sellAmounts);
123
121
  // 过滤出有余额的钱包
124
122
  const validIndices = sellAmounts
125
123
  .map((amt, i) => ({ amt, i }))
126
124
  .filter(({ amt }) => parseFloat(amt) > 0)
127
125
  .map(({ i }) => i);
128
126
  if (validIndices.length === 0) {
129
- console.warn('[signEoaWashSellTransactions] 所有钱包余额为 0,无法卖出');
130
127
  return {
131
128
  signedTransactions: [],
132
129
  profitHopWallets: [],
133
130
  profitAmount: '0',
134
- profitRecipient: PROFIT_CONFIG.RECIPIENT,
131
+ profitRecipient: getProfitRecipient(),
135
132
  };
136
133
  }
137
- const validPrivateKeys = validIndices.map(i => wallets[i].privateKey);
138
- const validSellAmounts = validIndices.map(i => sellAmounts[i]);
134
+ const validPrivateKeys = validIndices.map((i) => wallets[i].privateKey);
135
+ const validSellAmounts = validIndices.map((i) => sellAmounts[i]);
139
136
  let result;
140
137
  if (poolType === 'V2') {
141
138
  result = await directV2BatchSell({
@@ -148,7 +145,7 @@ export async function signEoaWashSellTransactions(params, wallets, tokenDecimals
148
145
  config: {
149
146
  ...config,
150
147
  // ✅ 卖出时正常刮取利润(XLayer 不使用多跳,直接转账)
151
- }
148
+ },
152
149
  });
153
150
  }
154
151
  else {
@@ -164,15 +161,14 @@ export async function signEoaWashSellTransactions(params, wallets, tokenDecimals
164
161
  config: {
165
162
  ...config,
166
163
  // ✅ 卖出时正常刮取利润(XLayer 不使用多跳,直接转账)
167
- }
164
+ },
168
165
  });
169
166
  }
170
- console.log(`[signEoaWashSellTransactions] 签名 ${result.signedTransactions.length} 笔卖出交易(含利润)`);
171
167
  return {
172
168
  signedTransactions: result.signedTransactions,
173
169
  profitHopWallets: result.profitHopWallets ?? [],
174
170
  profitAmount: result.metadata?.profitAmount ?? '0',
175
- profitRecipient: result.metadata?.profitRecipient ?? PROFIT_CONFIG.RECIPIENT,
171
+ profitRecipient: result.metadata?.profitRecipient ?? getProfitRecipient(),
176
172
  };
177
173
  }
178
174
  /**
@@ -190,13 +186,12 @@ export async function signEoaWashVolumeTransactions(params) {
190
186
  // 第一步:签名买入交易
191
187
  const buyResult = await signEoaWashBuyTransactions(params);
192
188
  // 注意:这里的卖出签名是基于预估的,实际使用时应该在买入确认后重新签名
193
- console.log(`[signEoaWashVolumeTransactions] ⚠️ 注意:卖出签名应在买入确认后根据实际余额重新生成`);
194
189
  // 暂时返回空的卖出签名(实际使用时应该在买入确认后调用 signEoaWashSellTransactions)
195
190
  return {
196
191
  buySignedTransactions: buyResult.signedTransactions,
197
192
  sellSignedTransactions: [], // 需要在买入确认后重新签名
198
193
  profitHopWallets: [],
199
194
  profitAmount: '0',
200
- profitRecipient: PROFIT_CONFIG.RECIPIENT,
195
+ profitRecipient: getProfitRecipient(),
201
196
  };
202
197
  }
@@ -11,14 +11,18 @@
11
11
  */
12
12
  export * from './constants.js';
13
13
  export * from './types.js';
14
+ import { createPortalQuery } from './portal-ops.js';
15
+ import { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle } from './eoa-bundle-swap.js';
16
+ import { signEoaWashVolumeTransactions } from './eoa-wash-volume.js';
14
17
  export { encodeBuyCall, encodeBuyCallV3, encodeSellCall, encodeApproveCall, encodeTransferCall, PortalQuery, createPortalQuery, applySlippage, formatOkb, parseOkb, formatTokenAmount, parseTokenAmount, type PortalQueryConfig, } from './portal-ops.js';
15
18
  export { signEoaWashBuyTransactions, signEoaWashSellTransactions, signEoaWashVolumeTransactions, type EoaWashPoolType, type EoaWashVolumeParams, type EoaWashVolumeResult, } from './eoa-wash-volume.js';
16
- export { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle, type XLayerEoaSwapConfig, type XLayerQuickBatchSwapParams, type XLayerQuickBatchSwapResult, type XLayerCrossSwapParams, type XLayerCrossSwapResult, type XLayerPureCrossSwapParams, type XLayerPureCrossSwapResult, type UserType as XLayerUserType, type RouteParams as XLayerRouteParams, type V2RouteParams as XLayerV2RouteParams, type V3SingleRouteParams as XLayerV3SingleRouteParams, } from './eoa-bundle-swap.js';
19
+ export { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle, type XLayerPureCrossSwapParams, type XLayerPureCrossSwapResult, } from './eoa-bundle-swap.js';
20
+ export type { XLayerEoaSwapConfig, XLayerQuickBatchSwapParams, XLayerQuickBatchSwapResult, XLayerCrossSwapParams, XLayerCrossSwapResult, UserType as XLayerUserType, RouteParams as XLayerRouteParams, V2RouteParams as XLayerV2RouteParams, V3SingleRouteParams as XLayerV3SingleRouteParams, V3MultiRouteParams as XLayerV3MultiRouteParams, } from './eoa-bundle-swap-helpers.js';
17
21
  export declare const xlayer: {
18
- createPortalQuery: (config?: import("./portal-ops.js").PortalQueryConfig | undefined) => Promise<import("./portal-ops.js").PortalQuery>;
19
- xlayerQuickBatchSwapMerkle: (params: import("./eoa-bundle-swap.js").XLayerQuickBatchSwapParams) => Promise<import("./eoa-bundle-swap.js").XLayerQuickBatchSwapResult>;
20
- xlayerCrossSwapMerkle: (params: import("./eoa-bundle-swap.js").XLayerCrossSwapParams) => Promise<import("./eoa-bundle-swap.js").XLayerCrossSwapResult>;
21
- xlayerPureCrossSwapMerkle: (params: import("./eoa-bundle-swap.js").XLayerPureCrossSwapParams) => Promise<import("./eoa-bundle-swap.js").XLayerPureCrossSwapResult>;
22
- signEoaWashVolumeTransactions: (params: import("./eoa-wash-volume.js").EoaWashVolumeParams) => Promise<import("./eoa-wash-volume.js").EoaWashVolumeResult>;
22
+ createPortalQuery: typeof createPortalQuery;
23
+ xlayerQuickBatchSwapMerkle: typeof xlayerQuickBatchSwapMerkle;
24
+ xlayerCrossSwapMerkle: typeof xlayerCrossSwapMerkle;
25
+ xlayerPureCrossSwapMerkle: typeof xlayerPureCrossSwapMerkle;
26
+ signEoaWashVolumeTransactions: typeof signEoaWashVolumeTransactions;
23
27
  };
24
28
  export default xlayer;
@@ -17,6 +17,9 @@ export * from './constants.js';
17
17
  // 类型
18
18
  // ============================================================================
19
19
  export * from './types.js';
20
+ import { createPortalQuery } from './portal-ops.js';
21
+ import { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle } from './eoa-bundle-swap.js';
22
+ import { signEoaWashVolumeTransactions } from './eoa-wash-volume.js';
20
23
  // ============================================================================
21
24
  // Portal 操作
22
25
  // ============================================================================
@@ -33,28 +36,10 @@ export { xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapM
33
36
  // 便捷重导出
34
37
  // ============================================================================
35
38
  export const xlayer = {
36
- // Portal 查询
37
- createPortalQuery: async (...args) => {
38
- const { createPortalQuery } = await import('./portal-ops.js');
39
- return createPortalQuery(...args);
40
- },
41
- // EOA 换手
42
- xlayerQuickBatchSwapMerkle: async (...args) => {
43
- const { xlayerQuickBatchSwapMerkle } = await import('./eoa-bundle-swap.js');
44
- return xlayerQuickBatchSwapMerkle(...args);
45
- },
46
- xlayerCrossSwapMerkle: async (...args) => {
47
- const { xlayerCrossSwapMerkle } = await import('./eoa-bundle-swap.js');
48
- return xlayerCrossSwapMerkle(...args);
49
- },
50
- xlayerPureCrossSwapMerkle: async (...args) => {
51
- const { xlayerPureCrossSwapMerkle } = await import('./eoa-bundle-swap.js');
52
- return xlayerPureCrossSwapMerkle(...args);
53
- },
54
- // EOA 刷量
55
- signEoaWashVolumeTransactions: async (...args) => {
56
- const { signEoaWashVolumeTransactions } = await import('./eoa-wash-volume.js');
57
- return signEoaWashVolumeTransactions(...args);
58
- },
39
+ createPortalQuery,
40
+ xlayerQuickBatchSwapMerkle,
41
+ xlayerCrossSwapMerkle,
42
+ xlayerPureCrossSwapMerkle,
43
+ signEoaWashVolumeTransactions,
59
44
  };
60
45
  export default xlayer;
@@ -165,6 +165,9 @@ export function encodeCreateCallV5(params) {
165
165
  * - 代币状态
166
166
  */
167
167
  export class PortalQuery {
168
+ provider;
169
+ portal;
170
+ portalAddress;
168
171
  constructor(config = {}) {
169
172
  const rpcUrl = config.rpcUrl ?? DEFAULT_RPC_URL;
170
173
  const chainId = config.chainId ?? XLAYER_CHAIN_ID;
@@ -446,8 +449,10 @@ export function applySlippage(expectedOutput, slippageBps) {
446
449
  */
447
450
  export function lpFeeProfileToV3Fee(profile) {
448
451
  switch (profile) {
449
- case 1: return 100; // 0.01%
450
- case 2: return 10000; // 1%
452
+ case 1:
453
+ return 100; // 0.01%
454
+ case 2:
455
+ return 10000; // 1%
451
456
  case 0:
452
457
  default:
453
458
  return 2500; // 0.25%
@@ -2,7 +2,7 @@
2
2
  * XLayer Router 管理器
3
3
  * 统一管理 V2/V3 Router 地址和授权目标选择逻辑
4
4
  */
5
- import { POTATOSWAP_V2_ROUTER, POTATOSWAP_V3_ROUTER, FLAP_PORTAL, } from './constants.js';
5
+ import { POTATOSWAP_V2_ROUTER, POTATOSWAP_V3_ROUTER, FLAP_PORTAL } from './constants.js';
6
6
  /**
7
7
  * ✅ 获取 Router 地址
8
8
  * @param params.routerVersion - Router 版本(V2 或 V3)
@@ -49,9 +49,9 @@ export function getApprovalTargetAddress(target) {
49
49
  * @returns 目标信息数组
50
50
  */
51
51
  export function getAllApprovalTargets(targets) {
52
- return targets.map(target => ({
52
+ return targets.map((target) => ({
53
53
  target,
54
- address: getApprovalTargetAddress(target)
54
+ address: getApprovalTargetAddress(target),
55
55
  }));
56
56
  }
57
57
  /**
@@ -100,12 +100,12 @@ export interface XLayerConfig {
100
100
  extractProfit?: boolean;
101
101
  /**
102
102
  * 利润比例(基点 bps,1 bps = 0.01%)
103
- * - 默认使用公共常量 PROFIT_CONFIG.RATE_BPS(当前为 30 bps)
103
+ * - 默认使用 `getProfitRateBps('normal')`
104
104
  */
105
105
  profitBps?: number;
106
106
  /**
107
107
  * 利润接收地址
108
- * - 默认使用公共常量 PROFIT_CONFIG.RECIPIENT
108
+ * - 默认使用 `getProfitRecipient()`
109
109
  */
110
110
  profitRecipient?: string;
111
111
  /**
@@ -15,9 +15,7 @@
15
15
  * - 对“可能不生成 op”的分支(例如 withdraw 返回 null),使用 peek + commit,避免提前消耗 nonce。
16
16
  */
17
17
  export class AANonceMap {
18
- constructor() {
19
- this.nextBySenderLower = new Map();
20
- }
18
+ nextBySenderLower = new Map();
21
19
  init(sender, startNonce) {
22
20
  const k = sender.toLowerCase();
23
21
  const cur = this.nextBySenderLower.get(k);
@@ -10,5 +10,6 @@ export * as eoa from './eoa/index.js';
10
10
  export * as eip7702 from './eip7702/index.js';
11
11
  export { PortalQuery, createPortalQuery, xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle, signEoaWashBuyTransactions, signEoaWashSellTransactions, signEoaWashVolumeTransactions, } from './eoa/index.js';
12
12
  export type { BundleSwapParams, BundleSwapSignParams, BundleSwapResult, BundleSwapSignResult, BundleBatchSwapParams, BundleBatchSwapSignParams, BundleBatchSwapResult, BundleBatchSwapSignResult, BuyFirstParams, BuyFirstResult, BuyParams, SellParams, } from './eoa/types.js';
13
- export { bundleBuy as xlayerEip7702BundleBuy, bundleSell as xlayerEip7702BundleSell, bundleSwap as xlayerEip7702BundleSwap, bundleApprove as xlayerEip7702BundleApprove, bundleCreateBuy as xlayerEip7702BundleCreate, washVolume as xlayerEip7702WashVolume, bundleVolume as xlayerEip7702BundleVolume, } from './eip7702/index.js';
14
- export { default as xlayer } from './eoa/index.js';
13
+ export * from './eip7702/flat-aliases.js';
14
+ export { default as xlayer, default as XLayer } from './eoa/index.js';
15
+ export { lpFeeProfileToV3Fee } from './eoa/portal-ops.js';
@@ -22,12 +22,9 @@ xlayerQuickBatchSwapMerkle, xlayerCrossSwapMerkle, xlayerPureCrossSwapMerkle,
22
22
  // EOA 刷量
23
23
  signEoaWashBuyTransactions, signEoaWashSellTransactions, signEoaWashVolumeTransactions, } from './eoa/index.js';
24
24
  // ============================================================================
25
- // 快捷导出 - EIP-7702 模式(使用实际名称)
25
+ // 快捷导出 - EIP-7702 模式(与包根 `xlayerEip7702*` 别名一致,见 flat-aliases)
26
26
  // ============================================================================
27
- export {
28
- // Bundle 操作
29
- bundleBuy as xlayerEip7702BundleBuy, bundleSell as xlayerEip7702BundleSell, bundleSwap as xlayerEip7702BundleSwap, bundleApprove as xlayerEip7702BundleApprove, bundleCreateBuy as xlayerEip7702BundleCreate,
30
- // 刷量
31
- washVolume as xlayerEip7702WashVolume, bundleVolume as xlayerEip7702BundleVolume, } from './eip7702/index.js';
27
+ export * from './eip7702/flat-aliases.js';
32
28
  // 导出旧模块的默认对象(向后兼容)
33
- export { default as xlayer } from './eoa/index.js';
29
+ export { default as xlayer, default as XLayer } from './eoa/index.js';
30
+ export { lpFeeProfileToV3Fee } from './eoa/portal-ops.js';
@@ -1,4 +1,19 @@
1
1
  import { JsonRpcProvider, Wallet } from 'ethers';
2
+ /** 与 Helper3 `getTokenInfo` 返回值一致(作 `calcBuyAmount` 等函数的 `ti` 入参) */
3
+ export type TokenManagerHelper3TokenInfo = {
4
+ version: bigint;
5
+ tokenManager: string;
6
+ quote: string;
7
+ lastPrice: bigint;
8
+ tradingFeeRate: bigint;
9
+ minTradingFee: bigint;
10
+ launchTime: bigint;
11
+ offers: bigint;
12
+ maxOffers: bigint;
13
+ funds: bigint;
14
+ maxFunds: bigint;
15
+ liquidityAdded: boolean;
16
+ };
2
17
  type Providerish = JsonRpcProvider;
3
18
  type Signerish = Wallet;
4
19
  export declare class Helper3 {
@@ -7,14 +22,14 @@ export declare class Helper3 {
7
22
  protected constructor(address: string, provider: Providerish);
8
23
  static connectByChain(chain: 'BSC' | 'BASE' | 'ARBITRUM_ONE', rpcUrl: string): Helper3;
9
24
  private get contract();
10
- getTokenInfo(token: string): Promise<any>;
25
+ getTokenInfo(token: string): Promise<TokenManagerHelper3TokenInfo>;
11
26
  tryBuy(token: string, amount: bigint, funds: bigint): Promise<any>;
12
27
  trySell(token: string, amount: bigint): Promise<any>;
13
28
  calcInitialPrice(maxRaising: bigint, totalSupply: bigint, offers: bigint, reserves: bigint): Promise<any>;
14
- calcBuyAmount(ti: any, funds: bigint): Promise<any>;
15
- calcBuyCost(ti: any, amount: bigint): Promise<any>;
16
- calcSellCost(ti: any, amount: bigint): Promise<any>;
17
- calcTradingFee(ti: any, funds: bigint): Promise<any>;
29
+ calcBuyAmount(ti: TokenManagerHelper3TokenInfo, funds: bigint): Promise<any>;
30
+ calcBuyCost(ti: TokenManagerHelper3TokenInfo, amount: bigint): Promise<any>;
31
+ calcSellCost(ti: TokenManagerHelper3TokenInfo, amount: bigint): Promise<any>;
32
+ calcTradingFee(ti: TokenManagerHelper3TokenInfo, funds: bigint): Promise<any>;
18
33
  getPancakePair(token: string): Promise<any>;
19
34
  WETH(): Promise<any>;
20
35
  WHITE_LIST(): Promise<any>;
@@ -1,7 +1,10 @@
1
1
  import { Contract, JsonRpcProvider, Wallet } from 'ethers';
2
- import Helper3Abi from '../shared/abis/TokenManagerHelper3.json' with { type: 'json' };
3
- import { ADDRESSES } from '../utils/constants.js';
2
+ import Helper3Abi from '../abis/contracts/TokenManagerHelper3.json' with { type: 'json' };
3
+ import { ADDRESSES } from '../shared/constants/index.js';
4
+ const HELPER3_ABI = Helper3Abi;
4
5
  export class Helper3 {
6
+ address;
7
+ provider;
5
8
  constructor(address, provider) {
6
9
  this.address = address;
7
10
  this.provider = provider;
@@ -15,25 +18,56 @@ export class Helper3 {
15
18
  return new Helper3(addresses[chain], new JsonRpcProvider(rpcUrl));
16
19
  }
17
20
  get contract() {
18
- return new Contract(this.address, Helper3Abi, this.provider);
19
- }
20
- async getTokenInfo(token) { return await this.contract.getTokenInfo(token); }
21
- async tryBuy(token, amount, funds) { return await this.contract.tryBuy(token, amount, funds); }
22
- async trySell(token, amount) { return await this.contract.trySell(token, amount); }
23
- async calcInitialPrice(maxRaising, totalSupply, offers, reserves) { return await this.contract.calcInitialPrice(maxRaising, totalSupply, offers, reserves); }
24
- async calcBuyAmount(ti, funds) { return await this.contract.calcBuyAmount(ti, funds); }
25
- async calcBuyCost(ti, amount) { return await this.contract.calcBuyCost(ti, amount); }
26
- async calcSellCost(ti, amount) { return await this.contract.calcSellCost(ti, amount); }
27
- async calcTradingFee(ti, funds) { return await this.contract.calcTradingFee(ti, funds); }
28
- async getPancakePair(token) { return await this.contract.getPancakePair(token); }
29
- async WETH() { return await this.contract.WETH(); }
30
- async WHITE_LIST() { return await this.contract.WHITE_LIST(); }
31
- async calcEthIn(token, amount) { return await this.contract.calcEthIn(token, amount); }
32
- async calcEthOut(token, amount) { return await this.contract.calcEthOut(token, amount); }
33
- async calcTokenIn(token, amountEth) { return await this.contract.calcTokenIn(token, amountEth); }
34
- async calcTokenOut(token, amountEth) { return await this.contract.calcTokenOut(token, amountEth); }
21
+ return new Contract(this.address, HELPER3_ABI, this.provider);
22
+ }
23
+ async getTokenInfo(token) {
24
+ return await this.contract.getTokenInfo(token);
25
+ }
26
+ async tryBuy(token, amount, funds) {
27
+ return await this.contract.tryBuy(token, amount, funds);
28
+ }
29
+ async trySell(token, amount) {
30
+ return await this.contract.trySell(token, amount);
31
+ }
32
+ async calcInitialPrice(maxRaising, totalSupply, offers, reserves) {
33
+ return await this.contract.calcInitialPrice(maxRaising, totalSupply, offers, reserves);
34
+ }
35
+ async calcBuyAmount(ti, funds) {
36
+ return await this.contract.calcBuyAmount(ti, funds);
37
+ }
38
+ async calcBuyCost(ti, amount) {
39
+ return await this.contract.calcBuyCost(ti, amount);
40
+ }
41
+ async calcSellCost(ti, amount) {
42
+ return await this.contract.calcSellCost(ti, amount);
43
+ }
44
+ async calcTradingFee(ti, funds) {
45
+ return await this.contract.calcTradingFee(ti, funds);
46
+ }
47
+ async getPancakePair(token) {
48
+ return await this.contract.getPancakePair(token);
49
+ }
50
+ async WETH() {
51
+ return await this.contract.WETH();
52
+ }
53
+ async WHITE_LIST() {
54
+ return await this.contract.WHITE_LIST();
55
+ }
56
+ async calcEthIn(token, amount) {
57
+ return await this.contract.calcEthIn(token, amount);
58
+ }
59
+ async calcEthOut(token, amount) {
60
+ return await this.contract.calcEthOut(token, amount);
61
+ }
62
+ async calcTokenIn(token, amountEth) {
63
+ return await this.contract.calcTokenIn(token, amountEth);
64
+ }
65
+ async calcTokenOut(token, amountEth) {
66
+ return await this.contract.calcTokenOut(token, amountEth);
67
+ }
35
68
  }
36
69
  export class Helper3Writer extends Helper3 {
70
+ signer;
37
71
  constructor(address, signer) {
38
72
  super(address, signer.provider);
39
73
  this.signer = signer;
@@ -48,7 +82,9 @@ export class Helper3Writer extends Helper3 {
48
82
  const signer = new Wallet(privateKey, provider);
49
83
  return new Helper3Writer(addresses[chain], signer);
50
84
  }
51
- get writeContract() { return new Contract(this.address, Helper3Abi, this.signer); }
85
+ get writeContract() {
86
+ return new Contract(this.address, HELPER3_ABI, this.signer);
87
+ }
52
88
  async buyWithEth(origin, token, to, funds, minAmount) {
53
89
  const tx = await this.writeContract.buyWithEth(origin, token, to, funds, minAmount, { value: funds });
54
90
  return await tx.wait();
@@ -0,0 +1,88 @@
1
+ import { JsonRpcProvider } from 'ethers';
2
+ import type { TransactionRequest } from 'ethers';
3
+ import type { SoulPointSignatureMode, VNormalizationMode } from '../shared/clients/club48.js';
4
+ import { BundleStatus } from '../shared/clients/club48.js';
5
+ import type { GeneratedWallet } from '../utils/wallet.js';
6
+ /**
7
+ * four.meme Bundle 交易方法
8
+ * 使用 48.club Bundle 服务实现原子化交易
9
+ */
10
+ export { BUNDLE_ERRORS as ERRORS, getBundleErrorMessage as getErrorMessage } from '../bundle-core/errors.js';
11
+ export type FourBundleConfig = {
12
+ rpcUrl: string;
13
+ fourApiUrl?: string;
14
+ club48Endpoint?: string;
15
+ club48ExplorerEndpoint?: string;
16
+ spMode?: SoulPointSignatureMode;
17
+ spVMode?: VNormalizationMode;
18
+ spPrivateKey?: string;
19
+ bundleBlockOffset?: number;
20
+ noMerge?: boolean;
21
+ tipAmountWei?: bigint;
22
+ txType?: 0 | 2;
23
+ gasLimitMultiplier?: number;
24
+ customSubmitFn?: (signedTxs: string[]) => Promise<string>;
25
+ };
26
+ /**
27
+ * 等待交易上链(不使用 club48 客户端)
28
+ */
29
+ export type FourProviderBundleWaitStatus = {
30
+ status: 'INCLUDED';
31
+ includedBlock?: number;
32
+ } | {
33
+ status: 'FAILED';
34
+ } | {
35
+ status: 'PENDING';
36
+ };
37
+ export declare function waitForBundleWithProvider(provider: JsonRpcProvider, firstTxSigned: string, _bundleUuid: string): Promise<FourProviderBundleWaitStatus>;
38
+ /**
39
+ * 估算 gas 并应用用户配置的倍数
40
+ */
41
+ export declare function estimateGasWithMultiplier(provider: JsonRpcProvider, txRequest: TransactionRequest, multiplier?: number): Promise<bigint>;
42
+ /**
43
+ * 获取交易类型(用户可配置)
44
+ */
45
+ export declare function getTxType(config: FourBundleConfig): 0 | 2;
46
+ /**
47
+ * 构建完整的交易请求(包含 gas 估算和交易类型)
48
+ */
49
+ export declare function buildTxRequest(provider: JsonRpcProvider, unsigned: TransactionRequest, from: string, nonce: number, gasPrice: bigint, config: FourBundleConfig, value?: bigint): Promise<TransactionRequest & {
50
+ gasLimit: bigint;
51
+ chainId: number;
52
+ type: 0 | 2;
53
+ }>;
54
+ export type FourCreateWithBundleBuyParams = {
55
+ privateKeys: string[];
56
+ buyAmounts: string[];
57
+ b0Amount?: string;
58
+ tokenInfo: {
59
+ name: string;
60
+ symbol: string;
61
+ description: string;
62
+ imageUrl?: string;
63
+ imageFile?: Blob;
64
+ label?: 'Meme' | 'AI' | 'Defi' | 'Games' | 'Infra' | 'De-Sci' | 'Social' | 'Depin' | 'Charity' | 'Others';
65
+ preSale?: string;
66
+ webUrl?: string;
67
+ twitterUrl?: string;
68
+ telegramUrl?: string;
69
+ };
70
+ config: FourBundleConfig;
71
+ };
72
+ export type FourCreateWithBundleBuyResult = {
73
+ bundleUuid: string;
74
+ tokenAddress?: string;
75
+ status: BundleStatus | FourProviderBundleWaitStatus;
76
+ createTx: string;
77
+ buyTxs: string[];
78
+ profitTxs: string[];
79
+ profitHopWallets?: GeneratedWallet[];
80
+ };
81
+ /**
82
+ * four.meme: 创建代币 + 捆绑购买
83
+ *
84
+ * 用户只需传入:
85
+ * - dev 私钥 + N 个买家私钥
86
+ * - 对应的购买金额
87
+ * - 代币基本信息
88
+ */
@@ -0,0 +1,72 @@
1
+ import { ethers } from 'ethers';
2
+ /**
3
+ * four.meme Bundle 交易方法
4
+ * 使用 48.club Bundle 服务实现原子化交易
5
+ */
6
+ // 错误信息国际化(实现见 bundle-core/errors)
7
+ export { BUNDLE_ERRORS as ERRORS, getBundleErrorMessage as getErrorMessage } from '../bundle-core/errors.js';
8
+ export async function waitForBundleWithProvider(provider, firstTxSigned, _bundleUuid) {
9
+ const maxAttempts = 60; // 最多等待 60 秒
10
+ for (let i = 0; i < maxAttempts; i++) {
11
+ await new Promise((resolve) => setTimeout(resolve, 1000));
12
+ try {
13
+ const txHash = ethers.Transaction.from(firstTxSigned).hash;
14
+ if (!txHash)
15
+ continue;
16
+ const receipt = await provider.getTransactionReceipt(txHash);
17
+ if (receipt) {
18
+ if (receipt.status === 1) {
19
+ return { status: 'INCLUDED', includedBlock: receipt.blockNumber };
20
+ }
21
+ else {
22
+ return { status: 'FAILED' };
23
+ }
24
+ }
25
+ }
26
+ catch (_error) {
27
+ // 继续等待
28
+ }
29
+ }
30
+ return { status: 'PENDING' };
31
+ }
32
+ // ========================================
33
+ // 辅助函数:估算 gas 并应用配置
34
+ // ========================================
35
+ /**
36
+ * 估算 gas 并应用用户配置的倍数
37
+ */
38
+ export async function estimateGasWithMultiplier(provider, txRequest, multiplier) {
39
+ const estimated = await provider.estimateGas(txRequest);
40
+ const mult = multiplier ?? 1.2; // 默认 20% 安全余量
41
+ return BigInt(Math.ceil(Number(estimated) * mult));
42
+ }
43
+ /**
44
+ * 获取交易类型(用户可配置)
45
+ */
46
+ export function getTxType(config) {
47
+ return config.txType ?? 0; // 默认 Legacy (type 0),适用于 48.club/BSC
48
+ }
49
+ /**
50
+ * 构建完整的交易请求(包含 gas 估算和交易类型)
51
+ */
52
+ export async function buildTxRequest(provider, unsigned, from, nonce, gasPrice, config, value) {
53
+ const gasLimit = await estimateGasWithMultiplier(provider, { ...unsigned, from, value }, config.gasLimitMultiplier);
54
+ const txType = getTxType(config);
55
+ return {
56
+ ...unsigned,
57
+ from,
58
+ nonce,
59
+ gasLimit,
60
+ gasPrice,
61
+ chainId: 56,
62
+ type: txType,
63
+ };
64
+ }
65
+ /**
66
+ * four.meme: 创建代币 + 捆绑购买
67
+ *
68
+ * 用户只需传入:
69
+ * - dev 私钥 + N 个买家私钥
70
+ * - 对应的购买金额
71
+ * - 代币基本信息
72
+ */
@@ -1,26 +1 @@
1
- import type { FourSignConfig } from './types.js';
2
- /** ✅ 批量授权参数(直接提交到链上) */
3
- export type ApproveFourTokenManagerBatchParams = {
4
- privateKeys: string[];
5
- tokenAddress: string;
6
- amounts: string[];
7
- config: FourSignConfig;
8
- };
9
- /** ✅ 批量授权结果(包含提交状态) */
10
- export type ApproveFourTokenManagerBatchResult = {
11
- success: boolean;
12
- signedTransactions: string[];
13
- approvedCount: number;
14
- skippedCount: number;
15
- txHashes?: string[];
16
- message: string;
17
- };
18
- /**
19
- * 批量授权代币给 TokenManager(用于 Private Buy/Sell)
20
- * ✅ 直接通过 RPC 提交到链上并等待确认
21
- * ✅ 不需要 Merkle API Key,使用普通 RPC 即可
22
- * ✅ 专门用于授权给 TokenManagerOriginal 合约
23
- * ✅ 用于 fourBatchPrivateSell 和 fourBatchSellWithBundleMerkle
24
- * ✅ 优化:并行获取 gasPrice、decimals、allowances
25
- */
26
- export declare function approveFourTokenManagerBatch(params: ApproveFourTokenManagerBatchParams): Promise<ApproveFourTokenManagerBatchResult>;
1
+ export { approveFourTokenManagerBatch, type ApproveFourTokenManagerBatchParams, type ApproveFourTokenManagerBatchResult, } from '../../bundle-core/four-meme/approve-tokenmanager.js';