four-flap-meme-sdk 2.2.7 → 2.2.10

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 (474) hide show
  1. package/README.en.md +6 -41
  2. package/README.md +0 -31
  3. package/README.zh-CN.md +6 -41
  4. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +26 -1
  5. package/dist/chains/bsc/four/approve-tokenmanager.js +113 -1
  6. package/dist/chains/bsc/four/config.d.ts +67 -5
  7. package/dist/chains/bsc/four/config.js +114 -2
  8. package/dist/chains/bsc/four/core.d.ts +4 -1
  9. package/dist/chains/bsc/four/core.js +592 -1
  10. package/dist/chains/bsc/four/index.d.ts +6 -6
  11. package/dist/chains/bsc/four/index.js +6 -6
  12. package/dist/chains/bsc/four/internal.d.ts +46 -2
  13. package/dist/chains/bsc/four/internal.js +239 -2
  14. package/dist/chains/bsc/four/pancake-proxy.d.ts +28 -1
  15. package/dist/chains/bsc/four/pancake-proxy.js +687 -1
  16. package/dist/chains/bsc/four/private.d.ts +27 -1
  17. package/dist/chains/bsc/four/private.js +477 -1
  18. package/dist/chains/bsc/four/submit.d.ts +315 -2
  19. package/dist/chains/bsc/four/submit.js +752 -2
  20. package/dist/chains/bsc/four/swap-buy-first.d.ts +55 -2
  21. package/dist/chains/bsc/four/swap-buy-first.js +507 -2
  22. package/dist/chains/bsc/four/swap-internal.d.ts +3 -1
  23. package/dist/chains/bsc/four/swap-internal.js +18 -1
  24. package/dist/chains/bsc/four/swap.d.ts +144 -2
  25. package/dist/chains/bsc/four/swap.js +766 -2
  26. package/dist/chains/bsc/four/types.d.ts +476 -1
  27. package/dist/chains/bsc/four/utils.d.ts +18 -5
  28. package/dist/chains/bsc/four/utils.js +1552 -5
  29. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +91 -1
  30. package/dist/chains/bsc/pancake/bundle-buy-first.js +212 -97
  31. package/dist/chains/bsc/pancake/bundle-swap.d.ts +79 -1
  32. package/dist/chains/bsc/pancake/bundle-swap.js +726 -114
  33. package/dist/chains/bsc/pancake/index.d.ts +2 -4
  34. package/dist/chains/bsc/pancake/index.js +3 -1
  35. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  36. package/dist/chains/bsc/platforms/iro/factory.js +1 -3
  37. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  38. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  39. package/dist/chains/bsc/platforms/iro/pool.js +10 -31
  40. package/dist/chains/bsc/platforms/iro/token.js +1 -4
  41. package/dist/chains/eni/batch-router/bundle-approve.js +3 -4
  42. package/dist/chains/eni/batch-router/transfer.js +25 -55
  43. package/dist/chains/eni/batch-router/utils.js +6 -32
  44. package/dist/chains/eni/bundler/sign.js +6 -5
  45. package/dist/chains/eni/bundler/submit.js +4 -1
  46. package/dist/chains/eni/constants.js +1 -1
  47. package/dist/chains/eni/index.d.ts +1 -2
  48. package/dist/chains/eni/index.js +0 -1
  49. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  50. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  51. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  52. package/dist/chains/eni/platforms/daoaas/meta.js +6 -9
  53. package/dist/chains/eni/platforms/daoaas/portal-direct.js +44 -28
  54. package/dist/chains/eni/platforms/daoaas/portal.js +6 -10
  55. package/dist/chains/eni/platforms/dswap/liquidity.js +26 -58
  56. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  57. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  58. package/dist/chains/eni/platforms/fair-launch/launcher.js +46 -87
  59. package/dist/chains/eni/platforms/fair-launch/pool.js +1 -4
  60. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  61. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  62. package/dist/chains/eni/platforms/iro/factory.js +1 -3
  63. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  64. package/dist/chains/eni/platforms/iro/index.js +4 -4
  65. package/dist/chains/eni/platforms/iro/pool.js +26 -90
  66. package/dist/chains/eni/platforms/iro/token.js +31 -107
  67. package/dist/chains/eni/platforms/iro/whitelist.js +18 -6
  68. package/dist/chains/index.d.ts +0 -13
  69. package/dist/chains/index.js +0 -13
  70. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +26 -2
  71. package/dist/chains/xlayer/eip7702/bundle-approve.js +21 -11
  72. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +6 -2
  73. package/dist/chains/xlayer/eip7702/bundle-buy.js +51 -13
  74. package/dist/chains/xlayer/eip7702/bundle-create.js +59 -93
  75. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +6 -2
  76. package/dist/chains/xlayer/eip7702/bundle-sell.js +111 -29
  77. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +65 -3
  78. package/dist/chains/xlayer/eip7702/bundle-swap.js +245 -51
  79. package/dist/chains/xlayer/eip7702/constants.d.ts +16 -1
  80. package/dist/chains/xlayer/eip7702/constants.js +21 -3
  81. package/dist/chains/xlayer/eip7702/index.d.ts +46 -28
  82. package/dist/chains/xlayer/eip7702/index.js +81 -28
  83. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +203 -2
  84. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +307 -63
  85. package/dist/chains/xlayer/eip7702/types.d.ts +0 -88
  86. package/dist/chains/xlayer/eip7702/utils.d.ts +3 -0
  87. package/dist/chains/xlayer/eip7702/utils.js +28 -23
  88. package/dist/chains/xlayer/eip7702/volume.d.ts +184 -6
  89. package/dist/chains/xlayer/eip7702/volume.js +164 -89
  90. package/dist/chains/xlayer/eoa/constants.js +1 -1
  91. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  92. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +95 -1
  93. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +299 -66
  94. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  95. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +23 -18
  96. package/dist/chains/xlayer/eoa/index.d.ts +6 -10
  97. package/dist/chains/xlayer/eoa/index.js +23 -8
  98. package/dist/chains/xlayer/eoa/portal-ops.js +2 -7
  99. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  100. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  101. package/dist/chains/xlayer/eoa/types.js +3 -1
  102. package/dist/chains/xlayer/index.d.ts +2 -3
  103. package/dist/chains/xlayer/index.js +7 -4
  104. package/dist/contracts/helper3.d.ts +5 -20
  105. package/dist/contracts/helper3.js +20 -56
  106. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +26 -1
  107. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +113 -1
  108. package/dist/contracts/tm-bundle-merkle/config.d.ts +67 -5
  109. package/dist/contracts/tm-bundle-merkle/config.js +114 -2
  110. package/dist/contracts/tm-bundle-merkle/core.d.ts +4 -1
  111. package/dist/contracts/tm-bundle-merkle/core.js +591 -1
  112. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  113. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  114. package/dist/contracts/tm-bundle-merkle/internal.d.ts +46 -2
  115. package/dist/contracts/tm-bundle-merkle/internal.js +238 -2
  116. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +28 -1
  117. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +686 -1
  118. package/dist/contracts/tm-bundle-merkle/private.d.ts +27 -1
  119. package/dist/contracts/tm-bundle-merkle/private.js +476 -1
  120. package/dist/contracts/tm-bundle-merkle/submit.d.ts +314 -3
  121. package/dist/contracts/tm-bundle-merkle/submit.js +928 -3
  122. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +55 -2
  123. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +506 -2
  124. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +3 -1
  125. package/dist/contracts/tm-bundle-merkle/swap-internal.js +18 -1
  126. package/dist/contracts/tm-bundle-merkle/swap.d.ts +144 -2
  127. package/dist/contracts/tm-bundle-merkle/swap.js +764 -2
  128. package/dist/contracts/tm-bundle-merkle/types.d.ts +476 -1
  129. package/dist/contracts/tm-bundle-merkle/utils.d.ts +18 -6
  130. package/dist/contracts/tm-bundle-merkle/utils.js +1501 -6
  131. package/dist/contracts/tm-bundle.d.ts +51 -3
  132. package/dist/contracts/tm-bundle.js +177 -108
  133. package/dist/contracts/tm.d.ts +2 -3
  134. package/dist/contracts/tm.js +32 -37
  135. package/dist/contracts/tm1.js +4 -9
  136. package/dist/contracts/tm2.js +4 -9
  137. package/dist/dex/direct-router.d.ts +125 -3
  138. package/dist/dex/direct-router.js +666 -237
  139. package/dist/flows/create.d.ts +1 -2
  140. package/dist/flows/create.js +6 -6
  141. package/dist/index.d.ts +86 -20
  142. package/dist/index.js +216 -20
  143. package/dist/shared/abis/TaxToken.json +105 -0
  144. package/dist/shared/abis/TokenManager2.json +60 -0
  145. package/dist/shared/abis/common.d.ts +83 -2
  146. package/dist/shared/abis/common.js +253 -2
  147. package/dist/shared/abis/index.d.ts +6 -5
  148. package/dist/shared/abis/index.js +7 -5
  149. package/dist/shared/clients/blockrazor.js +25 -39
  150. package/dist/shared/clients/club48.d.ts +2 -2
  151. package/dist/shared/clients/club48.js +29 -34
  152. package/dist/shared/clients/emitservice.js +0 -2
  153. package/dist/shared/clients/four.d.ts +6 -21
  154. package/dist/shared/clients/four.js +24 -29
  155. package/dist/shared/clients/merkle.js +34 -27
  156. package/dist/shared/constants/addresses.d.ts +1 -1
  157. package/dist/shared/constants/addresses.js +2 -11
  158. package/dist/shared/constants/chains.d.ts +1 -1
  159. package/dist/shared/constants/chains.js +1 -1
  160. package/dist/shared/constants/gas.d.ts +1 -1
  161. package/dist/shared/constants/gas.js +6 -2
  162. package/dist/shared/constants/index.d.ts +0 -3
  163. package/dist/shared/constants/index.js +0 -1
  164. package/dist/shared/flap/abi.js +1 -1
  165. package/dist/shared/flap/constants.d.ts +2 -1
  166. package/dist/shared/flap/constants.js +4 -3
  167. package/dist/shared/flap/curve.js +0 -3
  168. package/dist/shared/flap/errors.d.ts +4 -1
  169. package/dist/shared/flap/errors.js +1 -20
  170. package/dist/shared/flap/index.d.ts +5 -5
  171. package/dist/shared/flap/index.js +5 -5
  172. package/dist/shared/flap/launch-v6.d.ts +117 -0
  173. package/dist/shared/flap/launch-v6.js +111 -0
  174. package/dist/shared/flap/meta.d.ts +18 -22
  175. package/dist/shared/flap/meta.js +17 -12
  176. package/dist/shared/flap/permit.js +2 -5
  177. package/dist/shared/flap/pinata.d.ts +6 -22
  178. package/dist/shared/flap/pinata.js +26 -21
  179. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +72 -3
  180. package/dist/shared/flap/portal-bundle-merkle/config.js +124 -4
  181. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +4 -0
  182. package/dist/shared/flap/portal-bundle-merkle/core.js +267 -164
  183. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +4 -17
  184. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +195 -107
  185. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +92 -100
  186. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +7 -11
  187. package/dist/shared/flap/portal-bundle-merkle/index.js +7 -4
  188. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +68 -71
  189. package/dist/shared/flap/portal-bundle-merkle/private.js +114 -61
  190. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +64 -1
  191. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +247 -66
  192. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +71 -2
  193. package/dist/shared/flap/portal-bundle-merkle/swap.js +410 -103
  194. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +12 -88
  195. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +80 -1
  196. package/dist/shared/flap/portal-bundle-merkle/utils.js +265 -145
  197. package/dist/shared/flap/portal-bundle.js +56 -55
  198. package/dist/shared/flap/portal.d.ts +3 -14
  199. package/dist/shared/flap/portal.js +26 -49
  200. package/dist/shared/flap/vanity.d.ts +5 -4
  201. package/dist/shared/flap/vanity.js +20 -13
  202. package/dist/shared/flap/vault.d.ts +93 -25
  203. package/dist/shared/flap/vault.js +126 -75
  204. package/dist/shared/four/tax-token.d.ts +1 -1
  205. package/dist/shared/four/tax-token.js +7 -27
  206. package/dist/shared/index.d.ts +0 -6
  207. package/dist/shared/index.js +0 -4
  208. package/dist/utils/airdrop-sweep.d.ts +76 -4
  209. package/dist/utils/airdrop-sweep.js +55 -42
  210. package/dist/utils/bundle-helpers.d.ts +243 -9
  211. package/dist/utils/bundle-helpers.js +584 -10
  212. package/dist/utils/constants.d.ts +61 -5
  213. package/dist/utils/constants.js +80 -5
  214. package/dist/utils/contract-factory.d.ts +4 -2
  215. package/dist/utils/contract-factory.js +18 -25
  216. package/dist/utils/erc20.d.ts +89 -7
  217. package/dist/utils/erc20.js +125 -94
  218. package/dist/utils/errors.d.ts +1 -12
  219. package/dist/utils/errors.js +1 -60
  220. package/dist/utils/holders-maker.d.ts +138 -2
  221. package/dist/utils/holders-maker.js +661 -26
  222. package/dist/utils/lp-inspect.d.ts +112 -2
  223. package/dist/utils/lp-inspect.js +223 -73
  224. package/dist/utils/mpcExclusive.d.ts +5 -2
  225. package/dist/utils/mpcExclusive.js +3 -4
  226. package/dist/utils/private-sale.d.ts +58 -2
  227. package/dist/utils/private-sale.js +15 -4
  228. package/dist/utils/provider-factory.d.ts +0 -4
  229. package/dist/utils/provider-factory.js +0 -10
  230. package/dist/utils/quote-helpers.d.ts +45 -4
  231. package/dist/utils/quote-helpers.js +74 -17
  232. package/dist/utils/stealth-transfer.d.ts +28 -2
  233. package/dist/utils/stealth-transfer.js +15 -31
  234. package/dist/utils/swap-helpers.d.ts +15 -2
  235. package/dist/utils/swap-helpers.js +11 -6
  236. package/dist/utils/wallet.d.ts +25 -2
  237. package/dist/utils/wallet.js +10 -13
  238. package/package.json +4 -160
  239. package/dist/__tests__/subpath-exports.test.d.ts +0 -1
  240. package/dist/__tests__/subpath-exports.test.js +0 -64
  241. package/dist/abis/common.d.ts +0 -85
  242. package/dist/abis/common.js +0 -264
  243. package/dist/abis/contracts/TaxToken.json +0 -969
  244. package/dist/abis/contracts/TokenManager2.json +0 -136
  245. package/dist/abis/contracts/index.d.ts +0 -5
  246. package/dist/abis/contracts/index.js +0 -5
  247. package/dist/abis/flap/index.d.ts +0 -3
  248. package/dist/abis/flap/index.js +0 -3
  249. package/dist/abis/flap/portal-events.d.ts +0 -6
  250. package/dist/abis/flap/portal-events.js +0 -17
  251. package/dist/abis/flap/portal.d.ts +0 -6
  252. package/dist/abis/flap/portal.js +0 -37
  253. package/dist/abis/flap/vault.d.ts +0 -171
  254. package/dist/abis/flap/vault.js +0 -91
  255. package/dist/abis/index.d.ts +0 -8
  256. package/dist/abis/index.js +0 -11
  257. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +0 -1
  258. package/dist/bundle-core/__tests__/config-helpers.test.js +0 -28
  259. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +0 -1
  260. package/dist/bundle-core/__tests__/facade-parity.test.js +0 -33
  261. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +0 -1
  262. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +0 -60
  263. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +0 -1
  264. package/dist/bundle-core/__tests__/sign-fixture.test.js +0 -220
  265. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +0 -10
  266. package/dist/bundle-core/__tests__/sign-fixtures.js +0 -16
  267. package/dist/bundle-core/config-helpers.d.ts +0 -36
  268. package/dist/bundle-core/config-helpers.js +0 -57
  269. package/dist/bundle-core/errors.d.ts +0 -50
  270. package/dist/bundle-core/errors.js +0 -35
  271. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +0 -7
  272. package/dist/bundle-core/four-meme/approve-tokenmanager.js +0 -99
  273. package/dist/bundle-core/four-meme/core-helpers.d.ts +0 -8
  274. package/dist/bundle-core/four-meme/core-helpers.js +0 -40
  275. package/dist/bundle-core/four-meme/core.d.ts +0 -4
  276. package/dist/bundle-core/four-meme/core.js +0 -515
  277. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +0 -28
  278. package/dist/bundle-core/four-meme/pancake-proxy.js +0 -679
  279. package/dist/bundle-core/four-meme/private.d.ts +0 -27
  280. package/dist/bundle-core/four-meme/private.js +0 -465
  281. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +0 -2
  282. package/dist/bundle-core/four-meme/sign-context-helpers.js +0 -2
  283. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +0 -8
  284. package/dist/bundle-core/four-meme/swap-buy-first.js +0 -493
  285. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +0 -6
  286. package/dist/bundle-core/four-meme/swap-hop-helpers.js +0 -63
  287. package/dist/bundle-core/four-meme/swap-internal.d.ts +0 -3
  288. package/dist/bundle-core/four-meme/swap-internal.js +0 -18
  289. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +0 -27
  290. package/dist/bundle-core/four-meme/swap-sign-helpers.js +0 -105
  291. package/dist/bundle-core/four-meme/swap.d.ts +0 -17
  292. package/dist/bundle-core/four-meme/swap.js +0 -505
  293. package/dist/bundle-core/four-meme/types/buy-first.d.ts +0 -50
  294. package/dist/bundle-core/four-meme/types/buy-first.js +0 -1
  295. package/dist/bundle-core/four-meme/types/core-flow.d.ts +0 -63
  296. package/dist/bundle-core/four-meme/types/core-flow.js +0 -1
  297. package/dist/bundle-core/four-meme/types/index.d.ts +0 -600
  298. package/dist/bundle-core/four-meme/types/index.js +0 -1
  299. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +0 -19
  300. package/dist/bundle-core/four-meme/types/swap-internal.js +0 -1
  301. package/dist/bundle-core/four-meme/types.d.ts +0 -1
  302. package/dist/bundle-core/four-meme/types.js +0 -1
  303. package/dist/bundle-core/four-meme/utils-disperse.d.ts +0 -7
  304. package/dist/bundle-core/four-meme/utils-disperse.js +0 -396
  305. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +0 -8
  306. package/dist/bundle-core/four-meme/utils-pairwise.js +0 -328
  307. package/dist/bundle-core/four-meme/utils-sweep.d.ts +0 -8
  308. package/dist/bundle-core/four-meme/utils-sweep.js +0 -744
  309. package/dist/bundle-core/index.d.ts +0 -8
  310. package/dist/bundle-core/index.js +0 -8
  311. package/dist/bundle-core/internal.d.ts +0 -21
  312. package/dist/bundle-core/internal.js +0 -182
  313. package/dist/bundle-core/sign-context-helpers.d.ts +0 -25
  314. package/dist/bundle-core/sign-context-helpers.js +0 -67
  315. package/dist/bundle-core/submit.d.ts +0 -293
  316. package/dist/bundle-core/submit.js +0 -727
  317. package/dist/bundle-core/types/index.d.ts +0 -8
  318. package/dist/bundle-core/types/index.js +0 -1
  319. package/dist/bundle-core/types.d.ts +0 -1
  320. package/dist/bundle-core/types.js +0 -1
  321. package/dist/chains/bsc/four/utils-disperse.d.ts +0 -1
  322. package/dist/chains/bsc/four/utils-disperse.js +0 -1
  323. package/dist/chains/bsc/four/utils-pairwise.d.ts +0 -1
  324. package/dist/chains/bsc/four/utils-pairwise.js +0 -1
  325. package/dist/chains/bsc/four/utils-sweep.d.ts +0 -1
  326. package/dist/chains/bsc/four/utils-sweep.js +0 -1
  327. package/dist/chains/bsc/iro.d.ts +0 -5
  328. package/dist/chains/bsc/iro.js +0 -4
  329. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +0 -159
  330. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +0 -117
  331. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +0 -241
  332. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +0 -565
  333. package/dist/chains/eni/flat-aliases.d.ts +0 -10
  334. package/dist/chains/eni/flat-aliases.js +0 -8
  335. package/dist/chains/eni/submit.d.ts +0 -43
  336. package/dist/chains/eni/submit.js +0 -286
  337. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +0 -13
  338. package/dist/chains/xlayer/eip7702/flat-aliases.js +0 -10
  339. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +0 -79
  340. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +0 -1
  341. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +0 -26
  342. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +0 -57
  343. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +0 -148
  344. package/dist/chains/xlayer/eip7702/volume-helpers.js +0 -48
  345. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +0 -126
  346. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +0 -228
  347. package/dist/contracts/tm-bundle-helpers.d.ts +0 -88
  348. package/dist/contracts/tm-bundle-helpers.js +0 -72
  349. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +0 -1
  350. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +0 -1
  351. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +0 -1
  352. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +0 -1
  353. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +0 -1
  354. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +0 -1
  355. package/dist/dex/direct-router-helpers.d.ts +0 -264
  356. package/dist/dex/direct-router-helpers.js +0 -539
  357. package/dist/dex/types.d.ts +0 -81
  358. package/dist/dex/types.js +0 -1
  359. package/dist/exports/root-bundle-and-tooling.d.ts +0 -27
  360. package/dist/exports/root-bundle-and-tooling.js +0 -30
  361. package/dist/exports/root-eni-and-bsc-iro.d.ts +0 -26
  362. package/dist/exports/root-eni-and-bsc-iro.js +0 -66
  363. package/dist/exports/root-foundations.d.ts +0 -35
  364. package/dist/exports/root-foundations.js +0 -70
  365. package/dist/exports/root-swap-dex-and-xlayer.d.ts +0 -30
  366. package/dist/exports/root-swap-dex-and-xlayer.js +0 -78
  367. package/dist/flap/index.d.ts +0 -10
  368. package/dist/flap/index.js +0 -8
  369. package/dist/flows/index.d.ts +0 -1
  370. package/dist/flows/index.js +0 -1
  371. package/dist/merkle/index.d.ts +0 -12
  372. package/dist/merkle/index.js +0 -11
  373. package/dist/shared/clients/index.d.ts +0 -8
  374. package/dist/shared/clients/index.js +0 -8
  375. package/dist/shared/constants/quote.d.ts +0 -30
  376. package/dist/shared/constants/quote.js +0 -37
  377. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +0 -32
  378. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +0 -83
  379. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +0 -125
  380. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +0 -113
  381. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +0 -149
  382. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +0 -259
  383. package/dist/shared/flap/portal-create-token.d.ts +0 -79
  384. package/dist/shared/flap/portal-create-token.js +0 -261
  385. package/dist/shared/foundation/dex/v3-path.d.ts +0 -6
  386. package/dist/shared/foundation/dex/v3-path.js +0 -35
  387. package/dist/shared/foundation/gas/bundle-gas.d.ts +0 -49
  388. package/dist/shared/foundation/gas/bundle-gas.js +0 -93
  389. package/dist/shared/foundation/gas/profit-hop.d.ts +0 -20
  390. package/dist/shared/foundation/gas/profit-hop.js +0 -72
  391. package/dist/shared/foundation/index.d.ts +0 -13
  392. package/dist/shared/foundation/index.js +0 -12
  393. package/dist/shared/foundation/nonce/nonce-manager.d.ts +0 -17
  394. package/dist/shared/foundation/nonce/nonce-manager.js +0 -183
  395. package/dist/shared/foundation/normalize-unknown.d.ts +0 -9
  396. package/dist/shared/foundation/normalize-unknown.js +0 -29
  397. package/dist/shared/foundation/sdk-logger.d.ts +0 -13
  398. package/dist/shared/foundation/sdk-logger.js +0 -12
  399. package/dist/shared/foundation/tx/build-request.d.ts +0 -17
  400. package/dist/shared/foundation/tx/build-request.js +0 -25
  401. package/dist/shared/foundation/tx/sign-batch.d.ts +0 -5
  402. package/dist/shared/foundation/tx/sign-batch.js +0 -26
  403. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +0 -1
  404. package/dist/shared/foundation/tx/wallet-sign-patch.js +0 -18
  405. package/dist/shared/foundation/types/airdrop-sweep.d.ts +0 -79
  406. package/dist/shared/foundation/types/airdrop-sweep.js +0 -1
  407. package/dist/shared/foundation/types/erc20.d.ts +0 -65
  408. package/dist/shared/foundation/types/erc20.js +0 -1
  409. package/dist/shared/foundation/types/holders-maker.d.ts +0 -64
  410. package/dist/shared/foundation/types/holders-maker.js +0 -1
  411. package/dist/shared/foundation/types/index.d.ts +0 -7
  412. package/dist/shared/foundation/types/index.js +0 -1
  413. package/dist/shared/foundation/types/lp-inspect.d.ts +0 -102
  414. package/dist/shared/foundation/types/lp-inspect.js +0 -1
  415. package/dist/shared/foundation/types/multicall.d.ts +0 -5
  416. package/dist/shared/foundation/types/multicall.js +0 -1
  417. package/dist/shared/foundation/types/private-sale.d.ts +0 -35
  418. package/dist/shared/foundation/types/private-sale.js +0 -1
  419. package/dist/shared/foundation/types/quote-helpers.d.ts +0 -17
  420. package/dist/shared/foundation/types/quote-helpers.js +0 -1
  421. package/dist/types/errors.d.ts +0 -27
  422. package/dist/types/errors.js +0 -34
  423. package/dist/utils/holders-maker/addresses.d.ts +0 -12
  424. package/dist/utils/holders-maker/addresses.js +0 -15
  425. package/dist/utils/holders-maker/buy-tx.d.ts +0 -44
  426. package/dist/utils/holders-maker/buy-tx.js +0 -278
  427. package/dist/utils/holders-maker/constants.d.ts +0 -6
  428. package/dist/utils/holders-maker/constants.js +0 -7
  429. package/dist/utils/holders-maker/disperse.d.ts +0 -18
  430. package/dist/utils/holders-maker/disperse.js +0 -90
  431. package/dist/utils/holders-maker/routing.d.ts +0 -4
  432. package/dist/utils/holders-maker/routing.js +0 -45
  433. package/dist/utils/holders-maker/transfer-tx.d.ts +0 -4
  434. package/dist/utils/holders-maker/transfer-tx.js +0 -67
  435. package/dist/utils/holders-maker-helpers.d.ts +0 -9
  436. package/dist/utils/holders-maker-helpers.js +0 -9
  437. package/dist/utils/hop-chains.d.ts +0 -35
  438. package/dist/utils/hop-chains.js +0 -215
  439. package/dist/utils/lp-inspect-helpers.d.ts +0 -9
  440. package/dist/utils/lp-inspect-helpers.js +0 -109
  441. package/dist/utils/types/airdrop-sweep.d.ts +0 -1
  442. package/dist/utils/types/airdrop-sweep.js +0 -1
  443. package/dist/utils/types/contract-factory.d.ts +0 -1
  444. package/dist/utils/types/contract-factory.js +0 -1
  445. package/dist/utils/types/erc20.d.ts +0 -1
  446. package/dist/utils/types/erc20.js +0 -1
  447. package/dist/utils/types/errors.d.ts +0 -1
  448. package/dist/utils/types/errors.js +0 -1
  449. package/dist/utils/types/holders-maker.d.ts +0 -1
  450. package/dist/utils/types/holders-maker.js +0 -1
  451. package/dist/utils/types/hop-chains.d.ts +0 -8
  452. package/dist/utils/types/hop-chains.js +0 -1
  453. package/dist/utils/types/index.d.ts +0 -13
  454. package/dist/utils/types/index.js +0 -1
  455. package/dist/utils/types/lp-inspect.d.ts +0 -1
  456. package/dist/utils/types/lp-inspect.js +0 -1
  457. package/dist/utils/types/mpc-exclusive.d.ts +0 -5
  458. package/dist/utils/types/mpc-exclusive.js +0 -1
  459. package/dist/utils/types/private-sale.d.ts +0 -1
  460. package/dist/utils/types/private-sale.js +0 -1
  461. package/dist/utils/types/quote-helpers.d.ts +0 -1
  462. package/dist/utils/types/quote-helpers.js +0 -1
  463. package/dist/utils/types/stealth-transfer.d.ts +0 -44
  464. package/dist/utils/types/stealth-transfer.js +0 -1
  465. package/dist/utils/types/wallet.d.ts +0 -25
  466. package/dist/utils/types/wallet.js +0 -1
  467. package/dist/vanity/index.d.ts +0 -5
  468. package/dist/vanity/index.js +0 -5
  469. package/src/abis/contracts/TaxToken.json +0 -969
  470. package/src/abis/contracts/TokenManager.json +0 -836
  471. package/src/abis/contracts/TokenManager2.json +0 -136
  472. package/src/abis/contracts/TokenManagerHelper3.json +0 -993
  473. /package/dist/{abis/contracts → shared/abis}/TokenManager.json +0 -0
  474. /package/dist/{abis/contracts → shared/abis}/TokenManagerHelper3.json +0 -0
@@ -6,8 +6,11 @@
6
6
  * - 利润提取:千分之三(30 bps)
7
7
  */
8
8
  import { ethers, Wallet, JsonRpcProvider } from 'ethers';
9
- import { getProfitRecipient, getProfitRateBps, BLOCKRAZOR_BUILDER_EOA } from '../shared/constants/index.js';
9
+ import { PROFIT_CONFIG, BLOCKRAZOR_BUILDER_EOA } from './constants.js';
10
10
  import { NonceManager, buildProfitHopTransactions, PROFIT_HOP_COUNT } from './bundle-helpers.js';
11
+ // ============================================================================
12
+ // 核心功能
13
+ // ============================================================================
11
14
  /**
12
15
  * 生成私募转账签名交易(带贿赂和利润提取)
13
16
  *
@@ -35,7 +38,7 @@ export async function batchPrivateSaleMerkle(params) {
35
38
  const gasPrice = ethers.parseUnits(String(config.gasPriceGwei || 0.1), 'gwei');
36
39
  const bribeAmount = ethers.parseEther(String(config.bribeAmount || 0.000001));
37
40
  const extractProfit = config.extractProfit !== false;
38
- const profitBps = config.profitBps ?? getProfitRateBps('normal');
41
+ const profitBps = config.profitBps ?? PROFIT_CONFIG.RATE_BPS;
39
42
  // 创建 Provider
40
43
  const provider = new JsonRpcProvider(config.rpcUrl);
41
44
  const nonceManager = new NonceManager(provider);
@@ -65,8 +68,16 @@ export async function batchPrivateSaleMerkle(params) {
65
68
  uniqueWallets.forEach((wallet, i) => {
66
69
  nonceMap.set(wallet.address.toLowerCase(), noncesArray[i]);
67
70
  });
71
+ // ✅ 预计算每个钱包的 nonce 分配
68
72
  // 第一个钱包:baseNonce(贿赂) → baseNonce+1...+N(转账) → 最后(利润)
69
73
  const firstWalletBaseNonce = nonceMap.get(firstWalletKey);
74
+ // 统计第一个钱包的转账数量
75
+ let firstWalletTransferCount = 0;
76
+ for (let i = 0; i < transfers.length; i++) {
77
+ if (transferWallets[i].address.toLowerCase() === firstWalletKey) {
78
+ firstWalletTransferCount++;
79
+ }
80
+ }
70
81
  // ✅ 为每个转账预分配 nonce
71
82
  const transferNonces = [];
72
83
  const currentNonces = new Map();
@@ -121,12 +132,12 @@ export async function batchPrivateSaleMerkle(params) {
121
132
  provider,
122
133
  payerWallet: firstWallet,
123
134
  profitAmount: profitWei,
124
- profitRecipient: getProfitRecipient(),
135
+ profitRecipient: PROFIT_CONFIG.RECIPIENT,
125
136
  hopCount: PROFIT_HOP_COUNT,
126
137
  gasPrice,
127
138
  chainId,
128
139
  txType: 0,
129
- startNonce: profitNonce,
140
+ startNonce: profitNonce
130
141
  });
131
142
  signedTransactions.push(...profitHopResult.signedTransactions);
132
143
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -25,10 +25,6 @@ export declare function createCachedProvider(rpcUrl: string, chainId: number, ch
25
25
  * 清除 Provider 缓存
26
26
  */
27
27
  export declare function clearProviderCache(): void;
28
- /**
29
- * ENI 专用 Provider(staticNetwork,适合批量 RPC)
30
- */
31
- export declare function createEniProvider(rpcUrl: string, chainId?: number): JsonRpcProvider;
32
28
  /**
33
29
  * XLayer 专用 Provider 创建函数
34
30
  */
@@ -72,16 +72,6 @@ export function createCachedProvider(rpcUrl, chainId, chainName) {
72
72
  export function clearProviderCache() {
73
73
  providerCache.clear();
74
74
  }
75
- /**
76
- * ENI 专用 Provider(staticNetwork,适合批量 RPC)
77
- */
78
- export function createEniProvider(rpcUrl, chainId = 173) {
79
- return new JsonRpcProvider(rpcUrl, chainId, {
80
- staticNetwork: true,
81
- batchMaxCount: 20,
82
- batchStallTime: 30,
83
- });
84
- }
85
75
  /**
86
76
  * XLayer 专用 Provider 创建函数
87
77
  */
@@ -7,9 +7,51 @@
7
7
  * - ERC20 → 原生代币转换报价
8
8
  */
9
9
  import { JsonRpcProvider } from 'ethers';
10
- import { QUOTE_CONFIG, QUOTE_V3_FEE_TIERS } from '../shared/constants/quote.js';
11
- import type { QuoteParams, QuoteResult } from './types/quote-helpers.js';
12
- export { QUOTE_CONFIG, QUOTE_V3_FEE_TIERS };
10
+ /** V3 常用费率档位 */
11
+ export declare const V3_FEE_TIERS: number[];
12
+ /** 各链的报价配置 */
13
+ export declare const QUOTE_CONFIG: {
14
+ readonly BSC: {
15
+ readonly v2Router: "0x10ED43C718714eb63d5aA57B78B54704E256024E";
16
+ readonly v3Quoter: "0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997";
17
+ readonly wrappedNative: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c";
18
+ readonly stableCoins: readonly ["0x55d398326f99059fF775485246999027B3197955", "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56"];
19
+ };
20
+ readonly MONAD: {
21
+ readonly v2Router: "0xb1bc24c34e88f7d43d5923034e3a14b24daacff9";
22
+ readonly v3Quoter: "";
23
+ readonly wrappedNative: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a";
24
+ readonly stableCoins: readonly [];
25
+ };
26
+ readonly XLAYER: {
27
+ readonly v2Router: "0x881fb2f98c13d521009464e7d1cbf16e1b394e8e";
28
+ readonly v3Quoter: "0x5A6f3723346aF54a4D0693bfC1718D64d4915C3e";
29
+ readonly wrappedNative: "0xe538905cf8410324e03a5a23c1c177a474d59b2b";
30
+ readonly stableCoins: readonly ["0x1E4a5963aBFD975d8c9021ce480b42188849D41d", "0x74b7f16337b8972027f6196a17a631ac6de26d22", "0x779ded0c9e1022225f8e0630b35a9b54be713736"];
31
+ };
32
+ readonly ENI: {
33
+ readonly v2Router: "0x97ed8be49d9a8b86247090aa41e908e76b8fcf22";
34
+ readonly v3Quoter: "";
35
+ readonly wrappedNative: "0x6d1e851446f4d004ae2a72f9afed85e8829a205e";
36
+ readonly stableCoins: readonly ["0xDC1a8A35b0BaA3229b13f348ED708a2fd50b5e3a", "0xaFF944b96c1BAEA587159ec446280E468B32ee15"];
37
+ };
38
+ };
39
+ export type SupportedChain = keyof typeof QUOTE_CONFIG;
40
+ export interface QuoteParams {
41
+ provider: JsonRpcProvider;
42
+ tokenIn: string;
43
+ tokenOut: string;
44
+ amountIn: bigint;
45
+ chain: string;
46
+ version?: 'v2' | 'v3';
47
+ fee?: number;
48
+ routerOverride?: string;
49
+ }
50
+ export interface QuoteResult {
51
+ amountOut: bigint;
52
+ path?: string[];
53
+ fee?: number;
54
+ }
13
55
  /**
14
56
  * V2 报价(直接路径 + 多跳路径)
15
57
  * ✅ 优化:并行尝试直接路径和多跳路径
@@ -75,4 +117,3 @@ export declare function getWrappedNativeAddress(chain: string): string;
75
117
  * 获取链的稳定币列表
76
118
  */
77
119
  export declare function getStableCoins(chain: string): string[];
78
- export type { SupportedChain, QuoteParams, QuoteResult } from './types/quote-helpers.js';
@@ -6,11 +6,56 @@
6
6
  * - V3 Quoter 报价(多费率尝试 + 多跳路径)
7
7
  * - ERC20 → 原生代币转换报价
8
8
  */
9
- import { Contract } from 'ethers';
10
- import { V2_ROUTER_QUOTE_ABI, V3_QUOTER_ABI } from '../abis/common.js';
11
- import { QUOTE_CONFIG, QUOTE_V3_FEE_TIERS } from '../shared/constants/quote.js';
9
+ import { ethers, Contract } from 'ethers';
10
+ import { V2_ROUTER_QUOTE_ABI, V3_QUOTER_ABI } from '../shared/abis/common.js';
11
+ // ============================================================================
12
+ // 常量配置
13
+ // ============================================================================
14
+ // ✅ V2_ROUTER_ABI 和 V3_QUOTER_ABI 从公共模块导入
12
15
  const V2_ROUTER_ABI = V2_ROUTER_QUOTE_ABI;
13
- export { QUOTE_CONFIG, QUOTE_V3_FEE_TIERS };
16
+ /** V3 常用费率档位 */
17
+ export const V3_FEE_TIERS = [100, 500, 2500, 10000]; // 0.01%, 0.05%, 0.25%, 1%
18
+ /** 各链的报价配置 */
19
+ export const QUOTE_CONFIG = {
20
+ BSC: {
21
+ v2Router: '0x10ED43C718714eb63d5aA57B78B54704E256024E', // PancakeSwap V2 Router
22
+ v3Quoter: '0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997', // PancakeSwap V3 Quoter
23
+ wrappedNative: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', // WBNB
24
+ stableCoins: [
25
+ '0x55d398326f99059fF775485246999027B3197955', // USDT
26
+ '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', // USDC
27
+ '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', // BUSD
28
+ ],
29
+ },
30
+ MONAD: {
31
+ v2Router: '0xb1bc24c34e88f7d43d5923034e3a14b24daacff9', // PancakeSwap V2
32
+ v3Quoter: '', // TODO: 添加 Monad V3 Quoter
33
+ wrappedNative: '0x3bd359c1119da7da1d913d1c4d2b7c461115433a', // WMON
34
+ stableCoins: [],
35
+ },
36
+ XLAYER: {
37
+ v2Router: '0x881fb2f98c13d521009464e7d1cbf16e1b394e8e', // PotatoSwap V2
38
+ v3Quoter: '0x5A6f3723346aF54a4D0693bfC1718D64d4915C3e', // ✅ PotatoSwap V3 QuoterV2
39
+ wrappedNative: '0xe538905cf8410324e03a5a23c1c177a474d59b2b', // WOKB
40
+ stableCoins: [
41
+ '0x1E4a5963aBFD975d8c9021ce480b42188849D41d', // USDT
42
+ '0x74b7f16337b8972027f6196a17a631ac6de26d22', // USDC
43
+ '0x779ded0c9e1022225f8e0630b35a9b54be713736', // USD₮0
44
+ ],
45
+ },
46
+ ENI: {
47
+ v2Router: '0x97ed8be49d9a8b86247090aa41e908e76b8fcf22', // DSWAP V2 Router
48
+ v3Quoter: '',
49
+ wrappedNative: '0x6d1e851446f4d004ae2a72f9afed85e8829a205e', // WEGAS
50
+ stableCoins: [
51
+ '0xDC1a8A35b0BaA3229b13f348ED708a2fd50b5e3a', // USDT (18 decimals)
52
+ '0xaFF944b96c1BAEA587159ec446280E468B32ee15', // USDC (18 decimals)
53
+ ],
54
+ },
55
+ };
56
+ // ============================================================================
57
+ // V2 报价
58
+ // ============================================================================
14
59
  /**
15
60
  * V2 报价(直接路径 + 多跳路径)
16
61
  * ✅ 优化:并行尝试直接路径和多跳路径
@@ -29,6 +74,7 @@ export async function quoteV2(provider, tokenIn, tokenOut, amountIn, chain, rout
29
74
  const chainUpper = chain.toUpperCase();
30
75
  const config = QUOTE_CONFIG[chainUpper];
31
76
  if (!config) {
77
+ console.warn(`[quoteV2] 不支持的链: ${chain}`);
32
78
  return { amountOut: 0n };
33
79
  }
34
80
  const routerAddress = routerOverride || config.v2Router;
@@ -47,13 +93,16 @@ export async function quoteV2(provider, tokenIn, tokenOut, amountIn, chain, rout
47
93
  }
48
94
  }
49
95
  // ✅ 并行尝试所有路径
96
+ console.log(`[quoteV2] 输入: ${amountIn} wei, tokenIn=${tokenIn}, tokenOut=${tokenOut}`);
50
97
  const quotePromises = paths.map(async (path) => {
51
98
  try {
52
99
  const amounts = await router.getAmountsOut(amountIn, path);
53
100
  const amountOut = amounts[amounts.length - 1];
101
+ console.log(`[quoteV2] 路径 ${path.map(p => p.slice(0, 10) + '...').join(' → ')}: ${amountOut} wei`);
54
102
  return { amountOut, path, success: amountOut > 0n };
55
103
  }
56
- catch {
104
+ catch (e) {
105
+ console.log(`[quoteV2] 路径失败 ${path.map(p => p.slice(0, 10) + '...').join(' → ')}: ${e.message?.slice(0, 50)}`);
57
106
  return { amountOut: 0n, path, success: false };
58
107
  }
59
108
  });
@@ -61,9 +110,11 @@ export async function quoteV2(provider, tokenIn, tokenOut, amountIn, chain, rout
61
110
  // 找到第一个成功的结果(优先直接路径)
62
111
  for (const result of results) {
63
112
  if (result.success) {
113
+ console.log(`[quoteV2] 路径成功 (${result.path.length === 2 ? '直接' : '多跳'}): ${ethers.formatEther(result.amountOut)}`);
64
114
  return { amountOut: result.amountOut, path: result.path };
65
115
  }
66
116
  }
117
+ console.warn(`[quoteV2] 所有路径均失败`);
67
118
  return { amountOut: 0n };
68
119
  }
69
120
  // ============================================================================
@@ -88,18 +139,19 @@ export async function quoteV3(provider, tokenIn, tokenOut, amountIn, chain, pref
88
139
  const chainUpper = chain.toUpperCase();
89
140
  const config = QUOTE_CONFIG[chainUpper];
90
141
  if (!config) {
142
+ console.warn(`[quoteV3] 不支持的链: ${chain}`);
91
143
  return { amountOut: 0n };
92
144
  }
93
145
  if (!config.v3Quoter) {
146
+ console.warn(`[quoteV3] 该链不支持 V3 Quoter: ${chain}`);
94
147
  return { amountOut: 0n };
95
148
  }
96
149
  const quoter = new Contract(config.v3Quoter, V3_QUOTER_ABI, provider);
97
150
  const tokenInLower = tokenIn.toLowerCase();
98
151
  const tokenOutLower = tokenOut.toLowerCase();
99
152
  // 如果指定了费率,优先尝试;否则尝试所有费率
100
- const feesToTry = preferredFee
101
- ? [preferredFee, ...QUOTE_V3_FEE_TIERS.filter((f) => f !== preferredFee)]
102
- : [...QUOTE_V3_FEE_TIERS];
153
+ const feesToTry = preferredFee ? [preferredFee, ...V3_FEE_TIERS.filter(f => f !== preferredFee)] : V3_FEE_TIERS;
154
+ console.log(`[quoteV3] 开始报价: tokenIn=${tokenIn.slice(0, 10)}..., tokenOut=${tokenOut.slice(0, 10)}..., feesToTry=${feesToTry}`);
103
155
  // ✅ 策略 1:并行尝试所有费率的直接路径
104
156
  const directQuotePromises = feesToTry.map(async (fee) => {
105
157
  try {
@@ -108,7 +160,7 @@ export async function quoteV3(provider, tokenIn, tokenOut, amountIn, chain, pref
108
160
  tokenOut,
109
161
  amountIn,
110
162
  fee,
111
- sqrtPriceLimitX96: 0n,
163
+ sqrtPriceLimitX96: 0n
112
164
  });
113
165
  const amountOut = Array.isArray(result) ? result[0] : result;
114
166
  return { amountOut: amountOut || 0n, fee, success: amountOut && amountOut > 0n };
@@ -121,23 +173,24 @@ export async function quoteV3(provider, tokenIn, tokenOut, amountIn, chain, pref
121
173
  // 按费率优先级返回第一个成功的结果
122
174
  for (const result of directResults) {
123
175
  if (result.success) {
176
+ console.log(`[quoteV3] 直接路径成功 (fee=${result.fee}): ${ethers.formatEther(result.amountOut)}`);
124
177
  return { amountOut: result.amountOut, fee: result.fee };
125
178
  }
126
179
  }
127
180
  // ✅ 策略 2:并行尝试多跳路径(通过稳定币)
128
- const validStableCoins = config.stableCoins.filter((sc) => {
181
+ const validStableCoins = config.stableCoins.filter(sc => {
129
182
  const stableLower = sc.toLowerCase();
130
183
  return tokenInLower !== stableLower && tokenOutLower !== stableLower;
131
184
  });
132
185
  // 并行尝试所有稳定币的第一跳
133
- const firstHopPromises = validStableCoins.flatMap((stableCoin) => feesToTry.map(async (fee1) => {
186
+ const firstHopPromises = validStableCoins.flatMap(stableCoin => feesToTry.map(async (fee1) => {
134
187
  try {
135
188
  const midResult = await quoter.quoteExactInputSingle.staticCall({
136
189
  tokenIn,
137
190
  tokenOut: stableCoin,
138
191
  amountIn,
139
192
  fee: fee1,
140
- sqrtPriceLimitX96: 0n,
193
+ sqrtPriceLimitX96: 0n
141
194
  });
142
195
  const midAmount = Array.isArray(midResult) ? midResult[0] : midResult;
143
196
  return { midAmount: midAmount || 0n, stableCoin, fee1, success: midAmount && midAmount > 0n };
@@ -147,17 +200,17 @@ export async function quoteV3(provider, tokenIn, tokenOut, amountIn, chain, pref
147
200
  }
148
201
  }));
149
202
  const firstHopResults = await Promise.all(firstHopPromises);
150
- const successfulFirstHops = firstHopResults.filter((r) => r.success);
203
+ const successfulFirstHops = firstHopResults.filter(r => r.success);
151
204
  // 对成功的第一跳,并行尝试第二跳
152
205
  const stableFees = [100, 500, 2500];
153
- const secondHopPromises = successfulFirstHops.flatMap((hop) => stableFees.map(async (fee2) => {
206
+ const secondHopPromises = successfulFirstHops.flatMap(hop => stableFees.map(async (fee2) => {
154
207
  try {
155
208
  const finalResult = await quoter.quoteExactInputSingle.staticCall({
156
209
  tokenIn: hop.stableCoin,
157
210
  tokenOut,
158
211
  amountIn: hop.midAmount,
159
212
  fee: fee2,
160
- sqrtPriceLimitX96: 0n,
213
+ sqrtPriceLimitX96: 0n
161
214
  });
162
215
  const amountOut = Array.isArray(finalResult) ? finalResult[0] : finalResult;
163
216
  return { amountOut: amountOut || 0n, fee1: hop.fee1, fee2, success: amountOut && amountOut > 0n };
@@ -170,9 +223,11 @@ export async function quoteV3(provider, tokenIn, tokenOut, amountIn, chain, pref
170
223
  // 返回第一个成功的多跳结果
171
224
  for (const result of secondHopResults) {
172
225
  if (result.success) {
226
+ console.log(`[quoteV3] 多跳路径成功 (${result.fee1}→${result.fee2}): ${ethers.formatEther(result.amountOut)}`);
173
227
  return { amountOut: result.amountOut, fee: result.fee1 };
174
228
  }
175
229
  }
230
+ console.warn(`[quoteV3] 所有路径均失败`);
176
231
  return { amountOut: 0n };
177
232
  }
178
233
  // ============================================================================
@@ -212,6 +267,7 @@ export async function getTokenToNativeQuote(provider, tokenAddress, tokenAmount,
212
267
  const chainUpper = chain.toUpperCase();
213
268
  const config = QUOTE_CONFIG[chainUpper];
214
269
  if (!config) {
270
+ console.warn(`[getTokenToNativeQuote] 不支持的链: ${chain}`);
215
271
  return 0n;
216
272
  }
217
273
  const tokenLower = tokenAddress.toLowerCase();
@@ -228,7 +284,7 @@ export async function getTokenToNativeQuote(provider, tokenAddress, tokenAmount,
228
284
  chain,
229
285
  version,
230
286
  fee,
231
- routerOverride,
287
+ routerOverride
232
288
  });
233
289
  return result.amountOut;
234
290
  }
@@ -249,6 +305,7 @@ export async function getNativeToTokenQuote(provider, tokenAddress, nativeAmount
249
305
  const chainUpper = chain.toUpperCase();
250
306
  const config = QUOTE_CONFIG[chainUpper];
251
307
  if (!config) {
308
+ console.warn(`[getNativeToTokenQuote] 不支持的链: ${chain}`);
252
309
  return 0n;
253
310
  }
254
311
  const tokenLower = tokenAddress.toLowerCase();
@@ -264,7 +321,7 @@ export async function getNativeToTokenQuote(provider, tokenAddress, nativeAmount
264
321
  amountIn: nativeAmount,
265
322
  chain,
266
323
  version,
267
- fee,
324
+ fee
268
325
  });
269
326
  return result.amountOut;
270
327
  }
@@ -1,5 +1,31 @@
1
- import type { StealthTransferResult, StealthTransferSimpleParams } from './types/stealth-transfer.js';
2
- export type { StealthTransferResult, StealthTransferSimpleParams } from './types/stealth-transfer.js';
1
+ import type { SoulPointSignatureMode, VNormalizationMode } from '../shared/clients/club48.js';
2
+ export type StealthTransferResult = {
3
+ bundleUuid: string;
4
+ txs: string[];
5
+ hopAddresses: string[];
6
+ };
7
+ /**
8
+ * 简化版隐秘转账参数
9
+ * - 仅需人类可读金额与(可选)代币地址,其余自动处理
10
+ * - 未提供 tokenAddress → 原生币模式;提供 tokenAddress → 自动读取 decimals 转换为 wei 的代币模式
11
+ */
12
+ export type StealthTransferSimpleParams = {
13
+ rpcUrl: string;
14
+ chainId: number;
15
+ rootPrivateKey: string;
16
+ finalTo: string;
17
+ hopCount: number;
18
+ amount: string;
19
+ tokenAddress?: string;
20
+ tokenHolderPrivateKey?: string;
21
+ bundleEndpoint?: string;
22
+ gasPriceGwei?: string;
23
+ gasLimit?: bigint;
24
+ blockOffset?: number;
25
+ spMode?: SoulPointSignatureMode;
26
+ spPrivateKey?: string;
27
+ spVMode?: VNormalizationMode;
28
+ };
3
29
  /**
4
30
  * 隐秘转账(简化版)
5
31
  * - 原生模式:amount 按 parseEther 转 wei
@@ -54,8 +54,8 @@ async function _stealthTransferInternal(params) {
54
54
  throw new Error(`insufficient balance: need ${needed.toString()}, have ${rootBal.toString()}`);
55
55
  }
56
56
  // ✅ 并行预取所有 nonce
57
- const allAddresses = [rootAddr, ...hops.map((w) => w.address)];
58
- const nonces = await Promise.all(allAddresses.map((addr) => provider.getTransactionCount(addr, 'pending')));
57
+ const allAddresses = [rootAddr, ...hops.map(w => w.address)];
58
+ const nonces = await Promise.all(allAddresses.map(addr => provider.getTransactionCount(addr, 'pending')));
59
59
  const signed = [];
60
60
  const hopAddresses = [];
61
61
  if (mode !== 'erc20') {
@@ -95,7 +95,7 @@ async function _stealthTransferInternal(params) {
95
95
  const erc20Iface = new ethers.Interface(['function transfer(address,uint256) returns (bool)']);
96
96
  const transferGas = erc20?.transferGasLimit ?? GAS_LIMITS.ERC20_TRANSFER;
97
97
  // 填充 hopAddresses
98
- hops.forEach((hop) => hopAddresses.push(hop.address));
98
+ hops.forEach(hop => hopAddresses.push(hop.address));
99
99
  // ✅ 并行签名所有 gas 注资交易(root -> hop[i])
100
100
  const fundTxs = await Promise.all(hops.map((hop, i) => root.signTransaction({
101
101
  to: hop.address,
@@ -108,7 +108,7 @@ async function _stealthTransferInternal(params) {
108
108
  })));
109
109
  signed.push(...fundTxs);
110
110
  // 代币持有者:可选独立私钥,未提供则用 root
111
- const tokenOwner = erc20?.holderPrivateKey && erc20.holderPrivateKey.length > 0
111
+ const tokenOwner = (erc20?.holderPrivateKey && erc20.holderPrivateKey.length > 0)
112
112
  ? new ethers.Wallet(erc20.holderPrivateKey, provider)
113
113
  : root;
114
114
  // tokenOwner -> hop0: ERC20 transfer 全量 token
@@ -148,7 +148,9 @@ async function _stealthTransferInternal(params) {
148
148
  const bundleUuid = await club48.sendBundle({
149
149
  txs: signed,
150
150
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
151
- }, spPrivateKey ? { spMode: spMode ?? 'timestampPersonalSign', spPrivateKey, spVMode } : undefined);
151
+ }, spPrivateKey
152
+ ? { spMode: spMode ?? 'timestampPersonalSign', spPrivateKey, spVMode }
153
+ : undefined);
152
154
  return { bundleUuid, txs: signed, hopAddresses };
153
155
  }
154
156
  /**
@@ -158,30 +160,21 @@ async function _stealthTransferInternal(params) {
158
160
  * - 自动生成 hopCount 个中转地址,并通过 48.club Bundle 原子提交
159
161
  */
160
162
  export async function stealthTransfer(params) {
161
- const { rpcUrl, chainId, rootPrivateKey, finalTo, hopCount, amount, tokenAddress, tokenHolderPrivateKey, bundleEndpoint, gasPriceGwei, gasLimit, blockOffset, spMode, spPrivateKey, spVMode, } = params;
163
+ const { rpcUrl, chainId, rootPrivateKey, finalTo, hopCount, amount, tokenAddress, tokenHolderPrivateKey, bundleEndpoint, gasPriceGwei, gasLimit, blockOffset, spMode, spPrivateKey, spVMode } = params;
162
164
  if (!tokenAddress) {
163
165
  // 原生:直接 parseEther
164
166
  const amountWei = ethers.parseEther(amount);
165
167
  return await _stealthTransferInternal({
166
- rpcUrl,
167
- chainId,
168
- rootPrivateKey,
169
- finalTo,
170
- hopCount,
168
+ rpcUrl, chainId, rootPrivateKey, finalTo, hopCount,
171
169
  amountWei,
172
170
  mode: 'native',
173
- bundleEndpoint,
174
- gasPriceGwei,
175
- gasLimit,
176
- blockOffset,
177
- spMode,
178
- spPrivateKey,
179
- spVMode,
171
+ bundleEndpoint, gasPriceGwei, gasLimit, blockOffset,
172
+ spMode, spPrivateKey, spVMode
180
173
  });
181
174
  }
182
175
  // ERC20:自动读取 decimals(读取失败则回退 18)
183
176
  const provider = new JsonRpcProvider(rpcUrl, chainId);
184
- let decimals;
177
+ let decimals = 18;
185
178
  try {
186
179
  const erc20 = new ethers.Contract(tokenAddress, ['function decimals() view returns (uint8)'], provider);
187
180
  decimals = Number(await erc20.decimals());
@@ -193,20 +186,11 @@ export async function stealthTransfer(params) {
193
186
  }
194
187
  const amountWei = ethers.parseUnits(amount, decimals);
195
188
  return await _stealthTransferInternal({
196
- rpcUrl,
197
- chainId,
198
- rootPrivateKey,
199
- finalTo,
200
- hopCount,
189
+ rpcUrl, chainId, rootPrivateKey, finalTo, hopCount,
201
190
  amountWei,
202
191
  mode: 'erc20',
203
192
  erc20: { address: tokenAddress, holderPrivateKey: tokenHolderPrivateKey },
204
- bundleEndpoint,
205
- gasPriceGwei,
206
- gasLimit,
207
- blockOffset,
208
- spMode,
209
- spPrivateKey,
210
- spVMode,
193
+ bundleEndpoint, gasPriceGwei, gasLimit, blockOffset,
194
+ spMode, spPrivateKey, spVMode
211
195
  });
212
196
  }
@@ -2,12 +2,11 @@
2
2
  * 换手交易通用工具函数
3
3
  */
4
4
  import { Wallet, JsonRpcProvider } from 'ethers';
5
- import type { MerkleClient } from '../shared/clients/merkle.js';
6
5
  /**
7
6
  * 检查并执行代币授权(如果需要)
8
7
  * ✅ 与 pancake-proxy.ts 的授权逻辑一致
9
8
  */
10
- export declare function ensureTokenApproval(provider: JsonRpcProvider, merkle: MerkleClient, wallet: Wallet, tokenAddress: string, spenderAddress: string, config: {
9
+ export declare function ensureTokenApproval(provider: JsonRpcProvider, merkle: any, wallet: Wallet, tokenAddress: string, spenderAddress: string, config: {
11
10
  gasLimit?: number;
12
11
  gasLimitMultiplier?: number;
13
12
  minGasPriceGwei?: number;
@@ -39,3 +38,17 @@ export declare function calculateSwapLoss(sellAmount: bigint, buyAmount: bigint)
39
38
  * 验证钱包BNB余额
40
39
  */
41
40
  export declare function validateBNBBalance(provider: JsonRpcProvider, walletAddress: string, requiredBNB: bigint, purpose: string): Promise<void>;
41
+ /**
42
+ * 格式化换手结果日志
43
+ */
44
+ export declare function logSwapResult(params: {
45
+ sellerAddress: string;
46
+ buyerAddress: string;
47
+ tokenAddress: string;
48
+ sellAmount: bigint;
49
+ buyAmount: bigint;
50
+ decimals: number;
51
+ sellerGotBNB: bigint;
52
+ buyerSpentBNB: bigint;
53
+ swapType: string;
54
+ }): void;
@@ -3,8 +3,7 @@
3
3
  */
4
4
  import { ethers, Contract } from 'ethers';
5
5
  import { batchCheckAllowances } from './erc20.js';
6
- import { ERC20_ABI } from '../abis/common.js';
7
- import { NonceManager, getOptimizedGasPrice } from './bundle-helpers.js';
6
+ import { ERC20_ABI } from '../shared/abis/common.js';
8
7
  const APPROVAL_THRESHOLD = ethers.MaxUint256 / 2n;
9
8
  /**
10
9
  * 获取 Gas Limit(授权专用)
@@ -36,6 +35,7 @@ export async function ensureTokenApproval(provider, merkle, wallet, tokenAddress
36
35
  return;
37
36
  }
38
37
  // ✅ 使用 NonceManager(与 pancake-proxy.ts 一致)
38
+ const { NonceManager, getOptimizedGasPrice } = await import('./bundle-helpers.js');
39
39
  const nonceManager = new NonceManager(provider);
40
40
  // 构建授权交易
41
41
  const tokenContract = new Contract(tokenAddress, ERC20_ABI, wallet);
@@ -65,7 +65,7 @@ export async function ensureTokenApproval(provider, merkle, wallet, tokenAddress
65
65
  gasLimit: approveGasLimit,
66
66
  gasPrice,
67
67
  chainId,
68
- type: config.txType ?? 0,
68
+ type: config.txType ?? 0
69
69
  });
70
70
  // 清理临时 nonce 缓存
71
71
  nonceManager.clearTemp();
@@ -75,7 +75,7 @@ export async function ensureTokenApproval(provider, merkle, wallet, tokenAddress
75
75
  transactions: [signedTx],
76
76
  blockOffset,
77
77
  minTimestamp: 0,
78
- maxTimestamp: 0,
78
+ maxTimestamp: 0
79
79
  });
80
80
  // 等待确认
81
81
  const results = await merkle.waitForBundleConfirmation(bundleResult.txHashes, 1, config.waitTimeoutMs ?? 120000);
@@ -112,7 +112,7 @@ export async function calculateSellAmount(provider, tokenAddress, walletAddress,
112
112
  const decimals = await getTokenDecimals(provider, tokenAddress);
113
113
  return {
114
114
  amount: ethers.parseUnits(sellAmount, decimals),
115
- decimals,
115
+ decimals
116
116
  };
117
117
  }
118
118
  // 百分比:需要 decimals 和 balance
@@ -123,7 +123,7 @@ export async function calculateSellAmount(provider, tokenAddress, walletAddress,
123
123
  // ✅ 并行获取 decimals 和 balance
124
124
  const [decimals, balance] = await Promise.all([
125
125
  getTokenDecimals(provider, tokenAddress),
126
- getTokenBalance(provider, tokenAddress, walletAddress),
126
+ getTokenBalance(provider, tokenAddress, walletAddress)
127
127
  ]);
128
128
  const amount = (balance * BigInt(Math.floor(sellPercentage * 100))) / 10000n;
129
129
  return { amount, decimals };
@@ -150,3 +150,8 @@ export async function validateBNBBalance(provider, walletAddress, requiredBNB, p
150
150
  `实际 ${ethers.formatEther(balance)} BNB`);
151
151
  }
152
152
  }
153
+ /**
154
+ * 格式化换手结果日志
155
+ */
156
+ export function logSwapResult(params) {
157
+ }
@@ -1,5 +1,28 @@
1
- import type { GeneratedWallet, MultiTokenBalancesResult, MulticallResult, PrivateKeyValidation } from './types/wallet.js';
2
- export type { GeneratedWallet, PrivateKeyValidation, MulticallResult, MultiTokenBalancesResult, } from './types/wallet.js';
1
+ export type GeneratedWallet = {
2
+ address: string;
3
+ privateKey: string;
4
+ };
5
+ export type PrivateKeyValidation = {
6
+ privateKey: string;
7
+ valid: boolean;
8
+ address?: string;
9
+ normalized?: string;
10
+ error?: string;
11
+ };
12
+ export type MulticallResult = {
13
+ address: string;
14
+ balance: bigint;
15
+ success: boolean;
16
+ };
17
+ export type MultiTokenBalancesResult = {
18
+ address: string;
19
+ native: string;
20
+ tokens: Array<{
21
+ token: string;
22
+ balance: string;
23
+ }>;
24
+ success: boolean;
25
+ };
3
26
  /**
4
27
  * 批量生成钱包(并行优化)
5
28
  */