four-flap-meme-sdk 1.9.49 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) 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.js +34 -0
  5. package/dist/abis/common.js +74 -68
  6. package/dist/abis/flap/vault.js +9 -7
  7. package/dist/abis/index.d.ts +3 -4
  8. package/dist/abis/index.js +3 -4
  9. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  10. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  11. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  12. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  13. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  14. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  15. package/dist/bundle-core/config-helpers.d.ts +36 -0
  16. package/dist/bundle-core/config-helpers.js +57 -0
  17. package/dist/bundle-core/errors.d.ts +50 -0
  18. package/dist/bundle-core/errors.js +34 -0
  19. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  20. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  21. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  22. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  23. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  24. package/dist/bundle-core/four-meme/core.js +515 -0
  25. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  26. package/dist/{shared 2/flap/portal-bundle-merkle/pancake-proxy.js → bundle-core/four-meme/pancake-proxy.js} +277 -299
  27. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  28. package/dist/bundle-core/four-meme/private.js +465 -0
  29. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  30. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  31. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  32. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  33. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  34. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  35. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  36. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  37. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  38. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  39. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  40. package/dist/{chains/bsc/four/swap/index.js → bundle-core/four-meme/swap.js} +84 -408
  41. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  42. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  43. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  44. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  45. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  46. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  47. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  48. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  49. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  50. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  51. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  52. package/dist/bundle-core/index.d.ts +8 -0
  53. package/dist/bundle-core/index.js +8 -0
  54. package/dist/bundle-core/internal.d.ts +21 -0
  55. package/dist/bundle-core/internal.js +182 -0
  56. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  57. package/dist/bundle-core/sign-context-helpers.js +67 -0
  58. package/dist/bundle-core/submit.d.ts +293 -0
  59. package/dist/bundle-core/submit.js +727 -0
  60. package/dist/bundle-core/types/index.d.ts +8 -0
  61. package/dist/bundle-core/types.d.ts +1 -0
  62. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  63. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -116
  64. package/dist/chains/bsc/four/config.d.ts +5 -70
  65. package/dist/chains/bsc/four/config.js +2 -115
  66. package/dist/chains/bsc/four/core.d.ts +1 -4
  67. package/dist/chains/bsc/four/core.js +1 -589
  68. package/dist/chains/bsc/four/index.d.ts +6 -6
  69. package/dist/chains/bsc/four/index.js +6 -6
  70. package/dist/chains/bsc/four/internal.d.ts +2 -50
  71. package/dist/chains/bsc/four/internal.js +2 -237
  72. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  73. package/dist/chains/bsc/four/pancake-proxy.js +1 -688
  74. package/dist/chains/bsc/four/private.d.ts +1 -27
  75. package/dist/chains/bsc/four/private.js +1 -477
  76. package/dist/chains/bsc/four/submit.d.ts +2 -315
  77. package/dist/chains/bsc/four/submit.js +2 -746
  78. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  79. package/dist/chains/bsc/four/swap-buy-first.js +2 -506
  80. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  81. package/dist/chains/bsc/four/swap-internal.js +1 -18
  82. package/dist/chains/bsc/four/swap.d.ts +2 -144
  83. package/dist/chains/bsc/four/swap.js +2 -760
  84. package/dist/chains/bsc/four/types.d.ts +1 -476
  85. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  86. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  87. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  88. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  89. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  90. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  91. package/dist/chains/bsc/four/utils.d.ts +5 -18
  92. package/dist/chains/bsc/four/utils.js +5 -1534
  93. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  94. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  95. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  96. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -207
  97. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  98. package/dist/chains/bsc/pancake/{bundle-swap/helpers.js → bundle-swap-helpers.js} +63 -70
  99. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  100. package/dist/chains/bsc/pancake/bundle-swap.js +111 -686
  101. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  102. package/dist/chains/bsc/pancake/index.js +1 -3
  103. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  104. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  105. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  106. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  107. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  108. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  109. package/dist/chains/eni/batch-router/transfer.js +54 -23
  110. package/dist/chains/eni/batch-router/utils.js +32 -6
  111. package/dist/chains/eni/bundler/sign.js +4 -4
  112. package/dist/chains/eni/bundler/submit.js +1 -4
  113. package/dist/chains/eni/constants.js +1 -1
  114. package/dist/chains/eni/index.d.ts +1 -1
  115. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  116. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  117. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  118. package/dist/chains/eni/platforms/daoaas/meta.js +8 -4
  119. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -43
  120. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  121. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  122. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  123. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  124. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -47
  125. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  126. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  127. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  128. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  129. package/dist/chains/eni/platforms/iro/index.js +4 -4
  130. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  131. package/dist/chains/eni/platforms/iro/token.js +107 -31
  132. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  133. package/dist/chains/eni/submit.js +5 -13
  134. package/dist/chains/index.d.ts +13 -0
  135. package/dist/chains/index.js +13 -0
  136. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  137. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -20
  138. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  139. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  140. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -56
  141. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  142. package/dist/chains/xlayer/eip7702/bundle-sell.js +26 -74
  143. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  144. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -68
  145. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  146. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  147. package/dist/chains/xlayer/eip7702/index.d.ts +29 -46
  148. package/dist/chains/xlayer/eip7702/index.js +27 -81
  149. package/dist/chains/xlayer/eip7702/{multi-hop-transfer/types.d.ts → multi-hop-transfer-helpers.d.ts} +17 -23
  150. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  151. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +58 -291
  152. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  153. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  154. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  155. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  156. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  157. package/dist/chains/xlayer/eip7702/{volume/types.d.ts → volume-helpers.d.ts} +41 -17
  158. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  159. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  160. package/dist/chains/xlayer/eip7702/volume.js +83 -158
  161. package/dist/chains/xlayer/eoa/constants.js +1 -1
  162. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  163. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  164. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  165. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  166. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +64 -276
  167. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  168. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +14 -14
  169. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  170. package/dist/chains/xlayer/eoa/index.js +8 -23
  171. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  172. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  173. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  174. package/dist/chains/xlayer/eoa/types.js +1 -3
  175. package/dist/contracts/helper3.d.ts +20 -17
  176. package/dist/contracts/helper3.js +56 -20
  177. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  178. package/dist/contracts/tm-bundle-helpers.js +72 -0
  179. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  180. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -117
  181. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -70
  182. package/dist/contracts/tm-bundle-merkle/config.js +2 -115
  183. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  184. package/dist/contracts/tm-bundle-merkle/core.js +1 -588
  185. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  186. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  187. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -50
  188. package/dist/contracts/tm-bundle-merkle/internal.js +2 -236
  189. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  190. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -687
  191. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  192. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  193. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  194. package/dist/contracts/tm-bundle-merkle/submit.js +3 -919
  195. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  196. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -505
  197. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  198. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  199. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  200. package/dist/contracts/tm-bundle-merkle/swap.js +2 -757
  201. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  202. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  203. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  204. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  205. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  206. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  207. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  208. package/dist/contracts/tm-bundle-merkle/utils.d.ts +5 -6
  209. package/dist/contracts/tm-bundle-merkle/utils.js +5 -6
  210. package/dist/contracts/tm-bundle.d.ts +3 -51
  211. package/dist/contracts/tm-bundle.js +102 -142
  212. package/dist/contracts/tm.d.ts +3 -2
  213. package/dist/contracts/tm.js +36 -32
  214. package/dist/contracts/tm1.js +9 -4
  215. package/dist/contracts/tm2.js +9 -4
  216. package/dist/dex/direct-router-helpers.d.ts +264 -0
  217. package/dist/dex/direct-router-helpers.js +539 -0
  218. package/dist/dex/direct-router.d.ts +3 -125
  219. package/dist/dex/direct-router.js +237 -652
  220. package/dist/dex/{direct-router/types.d.ts → types.d.ts} +1 -1
  221. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  222. package/dist/exports/root-bundle-and-tooling.js +30 -0
  223. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  224. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  225. package/dist/exports/root-foundations.d.ts +35 -0
  226. package/dist/exports/root-foundations.js +70 -0
  227. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  228. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  229. package/dist/flap/index.d.ts +10 -0
  230. package/dist/flap/index.js +8 -0
  231. package/dist/flows/create.d.ts +2 -2
  232. package/dist/flows/create.js +6 -6
  233. package/dist/flows/index.d.ts +1 -0
  234. package/dist/flows/index.js +1 -0
  235. package/dist/index.d.ts +20 -91
  236. package/dist/index.js +20 -215
  237. package/dist/shared/abis/common.d.ts +2 -83
  238. package/dist/shared/abis/common.js +2 -252
  239. package/dist/shared/abis/index.d.ts +5 -6
  240. package/dist/shared/abis/index.js +5 -7
  241. package/dist/shared/clients/blockrazor.js +41 -24
  242. package/dist/shared/clients/club48.js +30 -26
  243. package/dist/shared/clients/emitservice.js +2 -0
  244. package/dist/shared/clients/four.js +23 -18
  245. package/dist/shared/clients/index.d.ts +8 -0
  246. package/dist/shared/clients/index.js +8 -0
  247. package/dist/shared/clients/merkle.js +26 -30
  248. package/dist/shared/constants/addresses.d.ts +1 -1
  249. package/dist/shared/constants/addresses.js +11 -2
  250. package/dist/shared/constants/chains.d.ts +1 -1
  251. package/dist/shared/constants/chains.js +1 -1
  252. package/dist/shared/constants/gas.d.ts +1 -1
  253. package/dist/shared/constants/gas.js +2 -6
  254. package/dist/shared/constants/index.d.ts +3 -0
  255. package/dist/shared/constants/index.js +1 -0
  256. package/dist/shared/constants/quote.d.ts +30 -0
  257. package/dist/shared/constants/quote.js +37 -0
  258. package/dist/shared/flap/abi.js +1 -1
  259. package/dist/shared/flap/constants.d.ts +1 -1
  260. package/dist/shared/flap/constants.js +2 -2
  261. package/dist/shared/flap/curve.js +3 -0
  262. package/dist/shared/flap/errors.d.ts +1 -4
  263. package/dist/shared/flap/errors.js +21 -3
  264. package/dist/shared/flap/index.d.ts +2 -2
  265. package/dist/shared/flap/index.js +2 -2
  266. package/dist/shared/flap/meta.d.ts +16 -18
  267. package/dist/shared/flap/meta.js +14 -26
  268. package/dist/shared/flap/permit.js +6 -5
  269. package/dist/shared/flap/pinata.d.ts +9 -2
  270. package/dist/shared/flap/pinata.js +20 -18
  271. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  272. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  273. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  274. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  275. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  276. package/dist/shared/flap/portal-bundle-merkle/core.js +66 -156
  277. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +81 -86
  278. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  279. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  280. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  281. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  282. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  283. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  284. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  285. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  286. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  287. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  288. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  289. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  290. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  291. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +73 -3
  292. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  293. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  294. package/dist/shared/flap/portal-bundle.js +54 -42
  295. package/dist/shared/flap/portal.js +32 -10
  296. package/dist/shared/flap/vanity.js +4 -7
  297. package/dist/shared/flap/vault.d.ts +1 -1
  298. package/dist/shared/flap/vault.js +54 -48
  299. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  300. package/dist/shared/foundation/dex/v3-path.js +35 -0
  301. package/dist/shared/foundation/gas/bundle-gas.d.ts +39 -0
  302. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  303. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  304. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  305. package/dist/shared/foundation/index.d.ts +13 -0
  306. package/dist/shared/foundation/index.js +12 -0
  307. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  308. package/dist/shared/foundation/nonce/nonce-manager.js +180 -0
  309. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  310. package/dist/shared/foundation/normalize-unknown.js +29 -0
  311. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  312. package/dist/shared/foundation/sdk-logger.js +12 -0
  313. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  314. package/dist/shared/foundation/tx/build-request.js +25 -0
  315. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  316. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  317. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  318. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  319. package/dist/{utils/erc20/types.d.ts → shared/foundation/types/erc20.d.ts} +7 -19
  320. package/dist/{utils/holders-maker/types.d.ts → shared/foundation/types/holders-maker.d.ts} +4 -12
  321. package/dist/shared/foundation/types/index.d.ts +7 -0
  322. package/dist/{utils/lp-inspect/types.d.ts → shared/foundation/types/lp-inspect.d.ts} +4 -2
  323. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  324. package/dist/shared/foundation/types/multicall.js +1 -0
  325. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  326. package/dist/shared/foundation/types/private-sale.js +1 -0
  327. package/dist/{utils/quote-helpers/types.d.ts → shared/foundation/types/quote-helpers.d.ts} +1 -0
  328. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  329. package/dist/shared/four/tax-token.d.ts +1 -1
  330. package/dist/shared/four/tax-token.js +27 -7
  331. package/dist/shared/index.d.ts +6 -0
  332. package/dist/shared/index.js +4 -0
  333. package/dist/utils/airdrop-sweep.d.ts +4 -76
  334. package/dist/utils/airdrop-sweep.js +38 -52
  335. package/dist/utils/bundle-helpers.d.ts +9 -243
  336. package/dist/utils/bundle-helpers.js +10 -584
  337. package/dist/utils/constants.d.ts +5 -61
  338. package/dist/utils/constants.js +5 -80
  339. package/dist/utils/contract-factory.d.ts +2 -4
  340. package/dist/utils/contract-factory.js +25 -18
  341. package/dist/utils/erc20.d.ts +8 -90
  342. package/dist/utils/erc20.js +94 -153
  343. package/dist/utils/errors.d.ts +10 -22
  344. package/dist/utils/errors.js +61 -79
  345. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  346. package/dist/utils/holders-maker/addresses.js +15 -0
  347. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  348. package/dist/utils/holders-maker/buy-tx.js +278 -0
  349. package/dist/utils/holders-maker/constants.d.ts +6 -0
  350. package/dist/utils/holders-maker/constants.js +7 -0
  351. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  352. package/dist/utils/holders-maker/disperse.js +90 -0
  353. package/dist/utils/holders-maker/routing.d.ts +4 -0
  354. package/dist/utils/holders-maker/routing.js +45 -0
  355. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  356. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  357. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  358. package/dist/utils/holders-maker-helpers.js +9 -0
  359. package/dist/utils/holders-maker.d.ts +2 -138
  360. package/dist/utils/holders-maker.js +23 -651
  361. package/dist/utils/hop-chains.d.ts +35 -0
  362. package/dist/utils/hop-chains.js +215 -0
  363. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  364. package/dist/utils/lp-inspect-helpers.js +109 -0
  365. package/dist/utils/lp-inspect.d.ts +2 -112
  366. package/dist/utils/lp-inspect.js +63 -195
  367. package/dist/utils/mpcExclusive.d.ts +2 -5
  368. package/dist/utils/mpcExclusive.js +4 -3
  369. package/dist/utils/private-sale.d.ts +2 -58
  370. package/dist/utils/private-sale.js +2 -7
  371. package/dist/utils/provider-factory.d.ts +4 -0
  372. package/dist/utils/provider-factory.js +10 -0
  373. package/dist/utils/quote-helpers.d.ts +4 -45
  374. package/dist/utils/quote-helpers.js +15 -65
  375. package/dist/utils/stealth-transfer.d.ts +2 -28
  376. package/dist/utils/stealth-transfer.js +30 -14
  377. package/dist/utils/swap-helpers.d.ts +0 -3
  378. package/dist/utils/swap-helpers.js +6 -9
  379. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  380. package/dist/utils/types/airdrop-sweep.js +1 -0
  381. package/dist/utils/types/contract-factory.d.ts +1 -0
  382. package/dist/utils/types/contract-factory.js +1 -0
  383. package/dist/utils/types/erc20.d.ts +1 -0
  384. package/dist/utils/types/erc20.js +1 -0
  385. package/dist/utils/types/errors.d.ts +1 -0
  386. package/dist/utils/types/errors.js +1 -0
  387. package/dist/utils/types/holders-maker.d.ts +1 -0
  388. package/dist/utils/types/holders-maker.js +1 -0
  389. package/dist/utils/types/hop-chains.d.ts +8 -0
  390. package/dist/utils/types/hop-chains.js +1 -0
  391. package/dist/utils/types/index.d.ts +13 -0
  392. package/dist/utils/types/index.js +1 -0
  393. package/dist/utils/types/lp-inspect.d.ts +1 -0
  394. package/dist/utils/types/lp-inspect.js +1 -0
  395. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  396. package/dist/utils/types/mpc-exclusive.js +1 -0
  397. package/dist/utils/types/private-sale.d.ts +1 -0
  398. package/dist/utils/types/private-sale.js +1 -0
  399. package/dist/utils/types/quote-helpers.d.ts +1 -0
  400. package/dist/utils/types/quote-helpers.js +1 -0
  401. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  402. package/dist/utils/types/stealth-transfer.js +1 -0
  403. package/dist/utils/types/wallet.d.ts +25 -0
  404. package/dist/utils/types/wallet.js +1 -0
  405. package/dist/utils/wallet.d.ts +2 -25
  406. package/dist/utils/wallet.js +9 -10
  407. package/package.json +120 -2
  408. package/src/abis/contracts/TaxToken.json +969 -0
  409. package/src/abis/contracts/TokenManager.json +836 -0
  410. package/src/abis/contracts/TokenManager2.json +136 -0
  411. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  412. package/dist/chains/bsc/four/submit/blockrazor.d.ts +0 -18
  413. package/dist/chains/bsc/four/submit/blockrazor.js +0 -86
  414. package/dist/chains/bsc/four/submit/direct.d.ts +0 -66
  415. package/dist/chains/bsc/four/submit/direct.js +0 -452
  416. package/dist/chains/bsc/four/submit/helpers.d.ts +0 -18
  417. package/dist/chains/bsc/four/submit/helpers.js +0 -57
  418. package/dist/chains/bsc/four/submit/index.d.ts +0 -12
  419. package/dist/chains/bsc/four/submit/index.js +0 -11
  420. package/dist/chains/bsc/four/submit/merkle.d.ts +0 -18
  421. package/dist/chains/bsc/four/submit/merkle.js +0 -74
  422. package/dist/chains/bsc/four/submit/types.d.ts +0 -143
  423. package/dist/chains/bsc/four/swap/index.d.ts +0 -32
  424. package/dist/chains/bsc/four/swap/types.d.ts +0 -70
  425. package/dist/chains/bsc/four/utils/index.d.ts +0 -20
  426. package/dist/chains/bsc/four/utils/index.js +0 -1558
  427. package/dist/chains/bsc/pancake/bundle-buy-first/index.d.ts +0 -8
  428. package/dist/chains/bsc/pancake/bundle-buy-first/index.js +0 -907
  429. package/dist/chains/bsc/pancake/bundle-buy-first/types.d.ts +0 -73
  430. package/dist/chains/bsc/pancake/bundle-swap/helpers.d.ts +0 -102
  431. package/dist/chains/bsc/pancake/bundle-swap/index.d.ts +0 -50
  432. package/dist/chains/bsc/pancake/bundle-swap/index.js +0 -1066
  433. package/dist/chains/bsc/pancake/bundle-swap/types.d.ts +0 -202
  434. package/dist/chains/bsc/pancake/bundle-swap/types.js +0 -3
  435. package/dist/chains/xlayer/eip7702/bundle-swap/index.d.ts +0 -72
  436. package/dist/chains/xlayer/eip7702/bundle-swap/index.js +0 -921
  437. package/dist/chains/xlayer/eip7702/bundle-swap/types.d.ts +0 -65
  438. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.d.ts +0 -128
  439. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.js +0 -857
  440. package/dist/chains/xlayer/eip7702/volume/index.d.ts +0 -96
  441. package/dist/chains/xlayer/eip7702/volume/index.js +0 -793
  442. package/dist/dex/direct-router/index.d.ts +0 -70
  443. package/dist/dex/direct-router/index.js +0 -1410
  444. package/dist/shared/abis/TaxToken.json +0 -969
  445. package/dist/shared/abis/TokenManager.json +0 -836
  446. package/dist/shared/abis/TokenManager2.json +0 -136
  447. package/dist/shared/abis/TokenManagerHelper3.json +0 -993
  448. package/dist/shared/flap/__tests__/curve.test.js +0 -85
  449. package/dist/shared/flap/portal/index.d.ts +0 -12
  450. package/dist/shared/flap/portal/index.js +0 -11
  451. package/dist/shared/flap/portal/portal.d.ts +0 -47
  452. package/dist/shared/flap/portal/portal.js +0 -218
  453. package/dist/shared/flap/portal/types.d.ts +0 -227
  454. package/dist/shared/flap/portal/types.js +0 -80
  455. package/dist/shared/flap/portal/writer.d.ts +0 -121
  456. package/dist/shared/flap/portal/writer.js +0 -265
  457. package/dist/shared/flap/portal-bundle-merkle/core/index.d.ts +0 -18
  458. package/dist/shared/flap/portal-bundle-merkle/core/index.js +0 -938
  459. package/dist/shared/flap/portal-bundle-merkle/swap/index.d.ts +0 -42
  460. package/dist/shared/flap/portal-bundle-merkle/swap/index.js +0 -1448
  461. package/dist/shared/flap/portal-bundle-merkle/swap/types.d.ts +0 -84
  462. package/dist/shared/flap/portal-bundle-merkle/utils/index.d.ts +0 -17
  463. package/dist/shared/flap/portal-bundle-merkle/utils/index.js +0 -1024
  464. package/dist/shared/flap/portal-bundle-merkle/utils/types.d.ts +0 -16
  465. package/dist/shared 2/abis/TaxToken.json +0 -105
  466. package/dist/shared 2/abis/TokenManager.json +0 -836
  467. package/dist/shared 2/abis/TokenManager2.json +0 -60
  468. package/dist/shared 2/abis/TokenManagerHelper3.json +0 -993
  469. package/dist/shared 2/abis/common.d.ts +0 -85
  470. package/dist/shared 2/abis/common.js +0 -254
  471. package/dist/shared 2/abis/index.d.ts +0 -8
  472. package/dist/shared 2/abis/index.js +0 -8
  473. package/dist/shared 2/clients/blockrazor.d.ts +0 -314
  474. package/dist/shared 2/clients/blockrazor.js +0 -596
  475. package/dist/shared 2/clients/club48.d.ts +0 -154
  476. package/dist/shared 2/clients/club48.js +0 -331
  477. package/dist/shared 2/clients/emitservice.d.ts +0 -47
  478. package/dist/shared 2/clients/emitservice.js +0 -44
  479. package/dist/shared 2/clients/four.d.ts +0 -132
  480. package/dist/shared 2/clients/four.js +0 -281
  481. package/dist/shared 2/clients/merkle.d.ts +0 -210
  482. package/dist/shared 2/clients/merkle.js +0 -400
  483. package/dist/shared 2/flap/__tests__/curve.test.js +0 -85
  484. package/dist/shared 2/flap/abi.d.ts +0 -4
  485. package/dist/shared 2/flap/abi.js +0 -4
  486. package/dist/shared 2/flap/constants.d.ts +0 -128
  487. package/dist/shared 2/flap/constants.js +0 -143
  488. package/dist/shared 2/flap/curve.d.ts +0 -33
  489. package/dist/shared 2/flap/curve.js +0 -84
  490. package/dist/shared 2/flap/errors.d.ts +0 -37
  491. package/dist/shared 2/flap/errors.js +0 -114
  492. package/dist/shared 2/flap/index.d.ts +0 -22
  493. package/dist/shared 2/flap/index.js +0 -33
  494. package/dist/shared 2/flap/ipfs.d.ts +0 -21
  495. package/dist/shared 2/flap/ipfs.js +0 -38
  496. package/dist/shared 2/flap/meta.d.ts +0 -30
  497. package/dist/shared 2/flap/meta.js +0 -195
  498. package/dist/shared 2/flap/permit.d.ts +0 -16
  499. package/dist/shared 2/flap/permit.js +0 -67
  500. package/dist/shared 2/flap/pinata.d.ts +0 -40
  501. package/dist/shared 2/flap/pinata.js +0 -106
  502. package/dist/shared 2/flap/portal-bundle-merkle/config.d.ts +0 -79
  503. package/dist/shared 2/flap/portal-bundle-merkle/config.js +0 -133
  504. package/dist/shared 2/flap/portal-bundle-merkle/core.d.ts +0 -18
  505. package/dist/shared 2/flap/portal-bundle-merkle/core.js +0 -938
  506. package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.d.ts +0 -125
  507. package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.js +0 -665
  508. package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -88
  509. package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.js +0 -446
  510. package/dist/shared 2/flap/portal-bundle-merkle/index.d.ts +0 -14
  511. package/dist/shared 2/flap/portal-bundle-merkle/index.js +0 -26
  512. package/dist/shared 2/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -28
  513. package/dist/shared 2/flap/portal-bundle-merkle/private.d.ts +0 -17
  514. package/dist/shared 2/flap/portal-bundle-merkle/private.js +0 -549
  515. package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
  516. package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.js +0 -831
  517. package/dist/shared 2/flap/portal-bundle-merkle/swap.d.ts +0 -201
  518. package/dist/shared 2/flap/portal-bundle-merkle/swap.js +0 -1359
  519. package/dist/shared 2/flap/portal-bundle-merkle/types.d.ts +0 -358
  520. package/dist/shared 2/flap/portal-bundle-merkle/utils.d.ts +0 -89
  521. package/dist/shared 2/flap/portal-bundle-merkle/utils.js +0 -963
  522. package/dist/shared 2/flap/portal-bundle.d.ts +0 -119
  523. package/dist/shared 2/flap/portal-bundle.js +0 -584
  524. package/dist/shared 2/flap/portal.d.ts +0 -392
  525. package/dist/shared 2/flap/portal.js +0 -559
  526. package/dist/shared 2/flap/vanity.d.ts +0 -48
  527. package/dist/shared 2/flap/vanity.js +0 -110
  528. package/dist/shared 2/flap/vault.d.ts +0 -240
  529. package/dist/shared 2/flap/vault.js +0 -366
  530. package/dist/shared 2/four/index.d.ts +0 -7
  531. package/dist/shared 2/four/index.js +0 -22
  532. package/dist/shared 2/four/tax-token.d.ts +0 -176
  533. package/dist/shared 2/four/tax-token.js +0 -302
  534. package/dist/shared 2/index.d.ts +0 -10
  535. package/dist/shared 2/index.js +0 -10
  536. package/dist/utils/__tests__/errors.test.js +0 -76
  537. package/dist/utils/erc20/index.d.ts +0 -242
  538. package/dist/utils/erc20/index.js +0 -645
  539. package/dist/utils/holders-maker/helpers.d.ts +0 -43
  540. package/dist/utils/holders-maker/helpers.js +0 -371
  541. package/dist/utils/holders-maker/index.d.ts +0 -26
  542. package/dist/utils/holders-maker/index.js +0 -218
  543. package/dist/utils/holders-maker/types.js +0 -4
  544. package/dist/utils/lp-inspect/index.d.ts +0 -44
  545. package/dist/utils/lp-inspect/index.js +0 -937
  546. package/dist/utils/quote-helpers/index.d.ts +0 -107
  547. package/dist/utils/quote-helpers/index.js +0 -346
  548. /package/dist/{chains/bsc/four/submit/types.js → __tests__/subpath-exports.test.d.ts} +0 -0
  549. /package/dist/{chains/bsc/four/swap/types.js → bundle-core/__tests__/config-helpers.test.d.ts} +0 -0
  550. /package/dist/{chains/bsc/four/utils/types.d.ts → bundle-core/__tests__/facade-parity.test.d.ts} +0 -0
  551. /package/dist/{chains/bsc/four/utils/types.js → bundle-core/__tests__/sign-context-helpers.test.d.ts} +0 -0
  552. /package/dist/{chains/bsc/pancake/bundle-buy-first/types.js → bundle-core/__tests__/sign-fixture.test.d.ts} +0 -0
  553. /package/dist/{chains/xlayer/eip7702/multi-hop-transfer/types.js → bundle-core/four-meme/types/buy-first.js} +0 -0
  554. /package/dist/{chains/xlayer/eip7702/volume/types.js → bundle-core/four-meme/types/core-flow.js} +0 -0
  555. /package/dist/{dex/direct-router/types.js → bundle-core/four-meme/types/index.js} +0 -0
  556. /package/dist/{shared 2/flap/__tests__/curve.test.d.ts → bundle-core/four-meme/types/swap-internal.js} +0 -0
  557. /package/dist/{chains/xlayer/eip7702/bundle-swap → bundle-core/four-meme}/types.js +0 -0
  558. /package/dist/{shared/flap/__tests__/curve.test.d.ts → bundle-core/types/index.js} +0 -0
  559. /package/dist/{shared 2/flap/portal-bundle-merkle → bundle-core}/types.js +0 -0
  560. /package/dist/{shared/flap/portal-bundle-merkle/core/types.d.ts → chains/xlayer/eip7702/multi-hop-transfer-helpers.js} +0 -0
  561. /package/dist/{shared/flap/portal-bundle-merkle/core → dex}/types.js +0 -0
  562. /package/dist/shared/{flap/portal-bundle-merkle/swap/types.js → foundation/tx/wallet-sign-patch.d.ts} +0 -0
  563. /package/dist/shared/{flap/portal-bundle-merkle/utils/types.js → foundation/types/airdrop-sweep.js} +0 -0
  564. /package/dist/{utils/__tests__/errors.test.d.ts → shared/foundation/types/erc20.js} +0 -0
  565. /package/dist/{utils/erc20/types.js → shared/foundation/types/holders-maker.js} +0 -0
  566. /package/dist/{utils/lp-inspect/types.js → shared/foundation/types/index.js} +0 -0
  567. /package/dist/{utils/quote-helpers/types.js → shared/foundation/types/lp-inspect.js} +0 -0
@@ -1,133 +1,20 @@
1
- import { Contract, JsonRpcProvider, Interface, formatUnits, formatEther } from 'ethers';
2
- import { ADDRESSES, ZERO_ADDRESS } from './constants.js';
3
- import { MULTICALL3_ABI, V2_FACTORY_ABI, V2_PAIR_ABI, V3_FACTORY_ABI, ERC20_ABI } from '../shared/abis/common.js';
4
- import { Helper3 } from '../contracts/helper3.js';
5
- import { FlapPortal } from '../shared/flap/portal.js';
6
- // ============================================================================
7
- // 链配置
8
- // ============================================================================
9
- /** 默认 V3 费率档位(合并 PancakeSwap 和 Uniswap 的所有档位) */
10
- const DEFAULT_V3_FEE_TIERS = [100, 500, 2500, 3000, 10000];
11
- /** 链 DEX 配置 */
12
- const CHAIN_DEX_CONFIGS = {
13
- BSC: {
14
- wrappedNative: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',
15
- wrappedNativeSymbol: 'WBNB',
16
- stableCoins: [
17
- { address: '0x55d398326f99059fF775485246999027B3197955', symbol: 'USDT', decimals: 18 },
18
- { address: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', symbol: 'USDC', decimals: 18 },
19
- ],
20
- dexes: {
21
- PANCAKESWAP: {
22
- name: 'PancakeSwap',
23
- v2Factory: '0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73',
24
- v3Factory: '0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865',
25
- enabled: true,
26
- },
27
- IROSWAP: {
28
- name: 'IROSwap',
29
- v2Factory: ADDRESSES.BSC.IroSwapV2Factory,
30
- v2Router: ADDRESSES.BSC.IroSwapV2Router,
31
- enabled: true,
32
- },
33
- }
34
- },
35
- MONAD: {
36
- wrappedNative: '0x3bd359c1119da7da1d913d1c4d2b7c461115433a',
37
- wrappedNativeSymbol: 'WMON',
38
- stableCoins: [
39
- { address: '0x754704bc059f8c67012fed69bc8a327a5aafb603', symbol: 'USDC', decimals: 6 },
40
- ],
41
- dexes: {
42
- PANCAKESWAP: {
43
- name: 'PancakeSwap',
44
- v2Factory: '0x44c90b66eb4c4f814cea6aaf2ac71ca88fa77308',
45
- v3Factory: '0x40ce898c43df68c8c4229cd5ce21d3ce1f3ddcf1',
46
- enabled: true,
47
- },
48
- UNISWAP: {
49
- name: 'Uniswap',
50
- v2Factory: '0x182a927119d56008d921126764bf884221b10f59',
51
- v3Factory: '0x204faca1764b154221e35c0d20abb3c525710498',
52
- v2Router: '0x4b2ab38dbf28d31d467aa8993f6c2585981d6804',
53
- v3Router: '0xd6145b2d3f379919e8cdeda7b97e37c4b2ca9c40',
54
- quoterV2: '0x661e93cca42afacb172121ef892830ca3b70f08d',
55
- enabled: true,
56
- }
57
- }
58
- },
59
- // ✅ 新增 XLayer 配置
60
- XLAYER: {
61
- wrappedNative: '0xe538905cf8410324e03a5a23c1c177a474d59b2b',
62
- wrappedNativeSymbol: 'WOKB',
63
- stableCoins: [
64
- { address: '0x1e4a5963abfd975d8c9021ce480b42188849d41d', symbol: 'USDT', decimals: 6 },
65
- { address: '0x74b7f16337b8972027f6196a17a631ac6de26d22', symbol: 'USDC', decimals: 6 },
66
- // ✅ XLayer: USD₮0 / USDT0(常见外盘配对)
67
- { address: '0x779ded0c9e1022225f8e0630b35a9b54be713736', symbol: 'USDT0', decimals: 6 },
68
- ],
69
- dexes: {
70
- POTATOSWAP: {
71
- name: 'PotatoSwap',
72
- v2Factory: '0x630DB8E822805c82Ca40a54daE02dd5aC31f7fcF', // V2 Factory
73
- v2Router: '0x881fb2f98c13d521009464e7d1cbf16e1b394e8e', // ✅ V2 Router (标准 Uniswap V2 风格)
74
- v3Router: '0xB45D0149249488333E3F3f9F359807F4b810C1FC', // SwapRouter02 (V3 风格)
75
- v3Factory: '0xa1415fAe79c4B196d087F02b8aD5a622B8A827E5', // V3 Factory
76
- quoterV2: '0x5A6f3723346aF54a4D0693bfC1718D64d4915C3e', // QuoterV2
77
- enabled: true,
78
- },
79
- DYORSWAP: {
80
- name: 'DYORSwap',
81
- v2Factory: '0x2CcaDb1e437AA9cDc741574bDa154686B1F04C09', // ✅ V2 Factory
82
- v2Router: '0xfb001fbbace32f09cb6d3c449b935183de53ee96', // DYORSwap Router (SwapRouter02 风格)
83
- enabled: true, // ✅ 已启用
84
- }
85
- }
86
- },
87
- ENI: {
88
- wrappedNative: '0x6d1e851446f4d004ae2a72f9afed85e8829a205e',
89
- wrappedNativeSymbol: 'WEGAS',
90
- stableCoins: [
91
- { address: '0xDC1a8A35b0BaA3229b13f348ED708a2fd50b5e3a', symbol: 'USDT', decimals: 18 },
92
- { address: '0xaFF944b96c1BAEA587159ec446280E468B32ee15', symbol: 'USDC', decimals: 18 },
93
- ],
94
- dexes: {
95
- DSWAP: {
96
- name: 'DSWAP',
97
- v2Factory: '0x548c0e26ce90b333c07abb6d55546304d46d269d',
98
- v2Router: '0x97ed8be49d9a8b86247090aa41e908e76b8fcf22',
99
- v3Factory: '0xa97c5a70Be5B81f573a688F656E7bE569B492A56',
100
- v3Router: '0xcdE487F5B460a516f31FaC520D4e18BA1C8cda49',
101
- enabled: true,
102
- },
103
- IROSWAP: {
104
- name: 'IROSwap',
105
- v2Factory: ADDRESSES.ENI.IroSwapV2Factory,
106
- v2Router: ADDRESSES.ENI.IroSwapV2Router,
107
- enabled: true,
108
- },
109
- }
110
- }
111
- };
112
- // ============================================================================
113
- // 动态配置 API
114
- // ============================================================================
115
- /** 运行时配置存储(内存) */
116
- const runtimeConfigs = {};
117
1
  /**
118
- * Router 合约获取 Factory 地址
119
- * 支持 Uniswap V2 Router 和 V3 SwapRouter02
2
+ * lp-inspect - 主函数
120
3
  */
4
+ import { Contract, Interface, formatUnits, formatEther } from 'ethers';
5
+ import { createProvider } from './provider-factory.js';
6
+ import { ADDRESSES, ZERO_ADDRESS } from '../shared/constants/index.js';
7
+ import { MULTICALL3_ABI, V2_FACTORY_ABI, V2_PAIR_ABI, V3_FACTORY_ABI, ERC20_ABI } from '../abis/common.js';
8
+ import { Helper3 } from '../contracts/helper3.js';
9
+ import { FlapPortal } from '../shared/flap/portal.js';
10
+ import { CHAIN_DEX_CONFIGS, DEFAULT_V3_FEE_TIERS, runtimeConfigs } from './lp-inspect-helpers.js';
121
11
  export async function getFactoryFromRouter(routerAddress, rpcUrl, routerType = 'v2') {
122
- const provider = new JsonRpcProvider(rpcUrl);
12
+ const provider = createProvider(rpcUrl);
123
13
  const result = {};
124
14
  // V2 Router ABI: factory()
125
15
  const V2_ROUTER_ABI = ['function factory() view returns (address)'];
126
16
  // V3 SwapRouter02 ABI: factory() 和 factoryV2()
127
- const V3_ROUTER_ABI = [
128
- 'function factory() view returns (address)',
129
- 'function factoryV2() view returns (address)',
130
- ];
17
+ const V3_ROUTER_ABI = ['function factory() view returns (address)', 'function factoryV2() view returns (address)'];
131
18
  try {
132
19
  if (routerType === 'v2') {
133
20
  const router = new Contract(routerAddress, V2_ROUTER_ABI, provider);
@@ -139,7 +26,7 @@ export async function getFactoryFromRouter(routerAddress, rpcUrl, routerType = '
139
26
  // ✅ 并行获取 V3 和 V2 Factory
140
27
  const [v3Factory, v2Factory] = await Promise.all([
141
28
  router.factory().catch(() => undefined),
142
- router.factoryV2().catch(() => undefined)
29
+ router.factoryV2().catch(() => undefined),
143
30
  ]);
144
31
  if (v3Factory)
145
32
  result.v3Factory = v3Factory;
@@ -192,7 +79,7 @@ export function registerStableCoin(chain, coin) {
192
79
  const chainConfig = getChainConfig(chain);
193
80
  if (chainConfig) {
194
81
  // 检查是否已存在
195
- const exists = chainConfig.stableCoins.some(c => c.address.toLowerCase() === coin.address.toLowerCase());
82
+ const exists = chainConfig.stableCoins.some((c) => c.address.toLowerCase() === coin.address.toLowerCase());
196
83
  if (!exists) {
197
84
  chainConfig.stableCoins.push(coin);
198
85
  }
@@ -235,7 +122,7 @@ export function getQuoteTokens(chain) {
235
122
  return [];
236
123
  return [
237
124
  { address: config.wrappedNative, symbol: config.wrappedNativeSymbol, decimals: 18, isNative: true },
238
- ...config.stableCoins.map(c => ({ ...c, isNative: false })),
125
+ ...config.stableCoins.map((c) => ({ ...c, isNative: false })),
239
126
  ];
240
127
  }
241
128
  // ============================================================================
@@ -253,7 +140,7 @@ const MULTICALL3_ADDRESS = ADDRESSES.BSC.Multicall3;
253
140
  const providerCache = new Map();
254
141
  function getProvider(rpcUrl) {
255
142
  if (!providerCache.has(rpcUrl)) {
256
- providerCache.set(rpcUrl, new JsonRpcProvider(rpcUrl));
143
+ providerCache.set(rpcUrl, createProvider(rpcUrl));
257
144
  }
258
145
  return providerCache.get(rpcUrl);
259
146
  }
@@ -307,7 +194,6 @@ export async function inspectTokenLP(token, opts) {
307
194
  // 获取链配置
308
195
  let chainConfig = getChainConfig(opts.chain);
309
196
  if (!chainConfig) {
310
- console.warn(`[LP Inspect] Unknown chain: ${opts.chain}`);
311
197
  return result;
312
198
  }
313
199
  // 应用自定义配置
@@ -318,13 +204,10 @@ export async function inspectTokenLP(token, opts) {
318
204
  let tokenDecimals;
319
205
  let totalSupplyRaw;
320
206
  try {
321
- const tokenContract = new Contract(token, [
322
- 'function decimals() view returns (uint8)',
323
- 'function totalSupply() view returns (uint256)'
324
- ], provider);
207
+ const tokenContract = new Contract(token, ['function decimals() view returns (uint8)', 'function totalSupply() view returns (uint256)'], provider);
325
208
  const [decimals, supply] = await Promise.all([
326
209
  tokenContract.decimals().catch(() => 18),
327
- tokenContract.totalSupply().catch(() => undefined)
210
+ tokenContract.totalSupply().catch(() => undefined),
328
211
  ]);
329
212
  tokenDecimals = Number(decimals);
330
213
  totalSupplyRaw = supply ? BigInt(supply) : undefined;
@@ -349,26 +232,23 @@ export async function inspectTokenLP(token, opts) {
349
232
  try {
350
233
  const stV7 = await flap.getTokenV7(token);
351
234
  st = stV7;
352
- // taxRate bigint,需要转换为 number
353
- taxRate = typeof stV7.taxRate === 'bigint' ? Number(stV7.taxRate) : Number(stV7.taxRate ?? 0);
235
+ taxRate = Number(stV7.taxRate ?? 0n);
354
236
  }
355
237
  catch {
356
- // V7 不支持,fallback 到 V5
357
238
  st = await flap.getTokenV5(token);
358
239
  }
359
240
  if (st && st.status !== undefined && Number(st.status) !== 4) {
360
- const s = st;
361
241
  result.platform = 'FLAP';
362
242
  let quoteDecimals = 18;
363
243
  let quoteSymbol = chainConfig.wrappedNativeSymbol;
364
- if (s.quoteTokenAddress && s.quoteTokenAddress.toLowerCase() !== ZERO_ADDRESS) {
365
- quoteDecimals = await getTokenDecimals(s.quoteTokenAddress, provider);
366
- // 查找符号
367
- const stableCoin = chainConfig.stableCoins.find(c => c.address.toLowerCase() === s.quoteTokenAddress.toLowerCase());
244
+ const quoteTokenAddress = st.quoteTokenAddress;
245
+ if (quoteTokenAddress && quoteTokenAddress.toLowerCase() !== ZERO_ADDRESS) {
246
+ quoteDecimals = await getTokenDecimals(quoteTokenAddress, provider);
247
+ const stableCoin = chainConfig.stableCoins.find((c) => c.address.toLowerCase() === quoteTokenAddress.toLowerCase());
368
248
  quoteSymbol = stableCoin?.symbol || 'TOKEN';
369
249
  }
370
250
  result.flap = {
371
- quoteToken: st.quoteTokenAddress,
251
+ quoteToken: quoteTokenAddress,
372
252
  quoteSymbol,
373
253
  quoteDecimals,
374
254
  reserveNative: formatBalance(st.reserve, shouldFormat, quoteDecimals),
@@ -384,7 +264,7 @@ export async function inspectTokenLP(token, opts) {
384
264
  }
385
265
  }
386
266
  catch {
387
- void 0;
267
+ // Flap 检测失败,继续其他平台检测
388
268
  }
389
269
  }
390
270
  // ========================================
@@ -403,11 +283,8 @@ export async function inspectTokenLP(token, opts) {
403
283
  // status: 0=不存在, 1=交易中(内盘), 2=已毕业(外盘)
404
284
  if (status === 1) {
405
285
  result.platform = 'DAOAAS';
406
- const price = await portal.getPrice(token);
407
- const tokenContract = new Contract(token, [
408
- 'function totalSupply() view returns (uint256)',
409
- 'function balanceOf(address) view returns (uint256)',
410
- ], provider);
286
+ const price = (await portal.getPrice(token));
287
+ const tokenContract = new Contract(token, ['function totalSupply() view returns (uint256)', 'function balanceOf(address) view returns (uint256)'], provider);
411
288
  const [totalSupply, portalTokenBalance] = await Promise.all([
412
289
  tokenContract.totalSupply(),
413
290
  tokenContract.balanceOf(portalAddress),
@@ -416,7 +293,7 @@ export async function inspectTokenLP(token, opts) {
416
293
  let reserveNative = '0';
417
294
  try {
418
295
  if (circulatingSupply > 0n) {
419
- const saleValue = await portal.getOKAmountBySale(token, circulatingSupply);
296
+ const saleValue = (await portal.getOKAmountBySale(token, circulatingSupply));
420
297
  reserveNative = formatBalance(saleValue, shouldFormat, 18);
421
298
  }
422
299
  }
@@ -425,7 +302,9 @@ export async function inspectTokenLP(token, opts) {
425
302
  const egasBalance = await provider.getBalance(portalAddress);
426
303
  reserveNative = formatBalance(egasBalance, shouldFormat, 18);
427
304
  }
428
- catch { /* ignore */ }
305
+ catch {
306
+ /* ignore */
307
+ }
429
308
  }
430
309
  result.daoaas = {
431
310
  quoteToken: ZERO_ADDRESS,
@@ -441,7 +320,7 @@ export async function inspectTokenLP(token, opts) {
441
320
  // status === 2 (Graduated): 已毕业到 DSWAP V2,继续走外盘检测
442
321
  }
443
322
  catch {
444
- void 0;
323
+ // DAOaaS Portal 检测失败,继续其他平台检测
445
324
  }
446
325
  }
447
326
  // ========================================
@@ -451,23 +330,21 @@ export async function inspectTokenLP(token, opts) {
451
330
  try {
452
331
  const helper = Helper3.connectByChain('BSC', opts.rpcUrl);
453
332
  const info = await helper.getTokenInfo(token);
454
- if (info) {
455
- const tokenManager = info.tokenManager;
456
- const versionNum = Number(info.version ?? 0);
457
- const liquidityAdded = Boolean(info.liquidityAdded);
458
- const isValid = tokenManager && tokenManager !== ZERO_ADDRESS && (versionNum === 1 || versionNum === 2);
459
- if (isValid && !liquidityAdded) {
460
- result.platform = 'FOUR';
461
- const reserveNative = info.funds !== undefined ? formatBalance(info.funds, shouldFormat) : undefined;
462
- const offerTokens = info.offers !== undefined ? formatBalance(info.offers, shouldFormat) : undefined;
463
- const lastPrice = info.lastPrice !== undefined ? formatBalance(info.lastPrice, shouldFormat) : undefined;
464
- result.four = { helper: ADDRESSES.BSC.TokenManagerHelper3, reserveNative, offerTokens, lastPrice };
465
- return result;
466
- }
333
+ const tokenManager = info.tokenManager;
334
+ const versionNum = Number(info.version);
335
+ const liquidityAdded = info.liquidityAdded;
336
+ const isValid = tokenManager && tokenManager !== ZERO_ADDRESS && (versionNum === 1 || versionNum === 2);
337
+ if (isValid && !liquidityAdded) {
338
+ result.platform = 'FOUR';
339
+ const reserveNative = formatBalance(info.funds, shouldFormat);
340
+ const offerTokens = formatBalance(info.offers, shouldFormat);
341
+ const lastPrice = formatBalance(info.lastPrice, shouldFormat);
342
+ result.four = { helper: ADDRESSES.BSC.TokenManagerHelper3, reserveNative, offerTokens, lastPrice };
343
+ return result;
467
344
  }
468
345
  }
469
346
  catch {
470
- void 0;
347
+ // Four.meme 检测失败,继续外盘检测
471
348
  }
472
349
  }
473
350
  // ========================================
@@ -492,7 +369,7 @@ export async function inspectTokenLP(token, opts) {
492
369
  // V2 查询
493
370
  if (dexConfig.v2Factory) {
494
371
  try {
495
- const v2Pairs = await queryV2Pairs(token, dexConfig.v2Factory, quoteTokens, provider, multicall3, tokenDecimals ?? 18, shouldFormat, opts.debug);
372
+ const v2Pairs = await queryV2Pairs(token, dexConfig.v2Factory, quoteTokens, provider, multicall3, tokenDecimals ?? 18, shouldFormat);
496
373
  dexPoolInfo.v2Pairs = v2Pairs;
497
374
  // 添加到最佳池子候选
498
375
  for (const pair of v2Pairs) {
@@ -514,13 +391,13 @@ export async function inspectTokenLP(token, opts) {
514
391
  }
515
392
  }
516
393
  catch {
517
- void 0;
394
+ // 单个 DEX V2 查询失败,继续其他 DEX
518
395
  }
519
396
  }
520
397
  // V3 查询
521
398
  if (dexConfig.v3Factory) {
522
399
  try {
523
- const v3Pools = await queryV3Pools(token, dexConfig.v3Factory, quoteTokens, v3FeeTiers, provider, multicall3, tokenDecimals ?? 18, shouldFormat, opts.debug);
400
+ const v3Pools = await queryV3Pools(token, dexConfig.v3Factory, quoteTokens, v3FeeTiers, provider, multicall3, tokenDecimals ?? 18, shouldFormat);
524
401
  dexPoolInfo.v3Pools = v3Pools;
525
402
  // 添加到最佳池子候选
526
403
  for (const pool of v3Pools) {
@@ -543,7 +420,7 @@ export async function inspectTokenLP(token, opts) {
543
420
  }
544
421
  }
545
422
  catch {
546
- void 0;
423
+ // 单个 DEX V3 查询失败,继续其他 DEX
547
424
  }
548
425
  }
549
426
  return dexPoolInfo;
@@ -551,7 +428,7 @@ export async function inspectTokenLP(token, opts) {
551
428
  // 等待所有 DEX 查询完成
552
429
  const dexResults = await Promise.all(dexPromises);
553
430
  // 过滤出有流动性的 DEX
554
- result.allPools = dexResults.filter(dex => dex.v2Pairs.length > 0 || dex.v3Pools.length > 0);
431
+ result.allPools = dexResults.filter((dex) => dex.v2Pairs.length > 0 || dex.v3Pools.length > 0);
555
432
  // 按流动性排序最佳池子,并计算 poolRatio
556
433
  result.bestPools = allBestPoolCandidates
557
434
  .sort((a, b) => {
@@ -563,7 +440,7 @@ export async function inspectTokenLP(token, opts) {
563
440
  return 0;
564
441
  })
565
442
  .slice(0, 10) // 最多返回 10 个
566
- .map(pool => {
443
+ .map((pool) => {
567
444
  // ✅ 计算池子代币占比
568
445
  if (pool.reserveTokenRaw && totalSupplyRaw && totalSupplyRaw > 0n) {
569
446
  // 计算百分比:(reserveTokenRaw / totalSupplyRaw) * 100
@@ -604,7 +481,7 @@ export async function inspectTokenLP(token, opts) {
604
481
  const flap = new FlapPortal({ chain: opts.flapChain, rpcUrl: opts.rpcUrl });
605
482
  const stV7 = await flap.getTokenV7(token);
606
483
  // taxRate 是 bigint,需要转换为 number
607
- const taxRate = typeof stV7.taxRate === 'bigint' ? Number(stV7.taxRate) : Number(stV7.taxRate ?? 0);
484
+ const taxRate = Number(stV7.taxRate ?? 0n);
608
485
  if (taxRate > 0) {
609
486
  result.taxRate = taxRate;
610
487
  }
@@ -618,20 +495,20 @@ export async function inspectTokenLP(token, opts) {
618
495
  // ============================================================================
619
496
  // V2 批量查询
620
497
  // ============================================================================
621
- async function queryV2Pairs(token, factoryAddress, quoteTokens, provider, multicall3, tokenDecimals, shouldFormat, _debug) {
498
+ async function queryV2Pairs(token, factoryAddress, quoteTokens, provider, multicall3, tokenDecimals, shouldFormat) {
622
499
  const results = [];
623
500
  const factoryIface = new Interface(I_UNIV2_FACTORY_ABI);
624
501
  const pairIface = new Interface(I_UNIV2_PAIR_ABI);
625
502
  const mcIface = new Interface(MULTICALL3_ABI);
626
503
  // 第一步:批量查询所有 getPair
627
- const pairCalls = quoteTokens.map(qt => ({
504
+ const pairCalls = quoteTokens.map((qt) => ({
628
505
  target: factoryAddress,
629
506
  callData: factoryIface.encodeFunctionData('getPair', [token, qt.address]),
630
507
  quoteToken: qt,
631
508
  }));
632
509
  try {
633
510
  const aggData = mcIface.encodeFunctionData('aggregate', [
634
- pairCalls.map(c => ({ target: c.target, callData: c.callData }))
511
+ pairCalls.map((c) => ({ target: c.target, callData: c.callData })),
635
512
  ]);
636
513
  const res = await provider.call({ to: multicall3, data: aggData });
637
514
  const [, returnData] = mcIface.decodeFunctionResult('aggregate', res);
@@ -652,7 +529,7 @@ async function queryV2Pairs(token, factoryAddress, quoteTokens, provider, multic
652
529
  if (validPairs.length === 0)
653
530
  return results;
654
531
  // 第二步:批量查询 getReserves
655
- const reserveCalls = validPairs.flatMap(p => [
532
+ const reserveCalls = validPairs.flatMap((p) => [
656
533
  { target: p.pairAddress, callData: pairIface.encodeFunctionData('token0', []) },
657
534
  { target: p.pairAddress, callData: pairIface.encodeFunctionData('token1', []) },
658
535
  { target: p.pairAddress, callData: pairIface.encodeFunctionData('getReserves', []) },
@@ -665,7 +542,7 @@ async function queryV2Pairs(token, factoryAddress, quoteTokens, provider, multic
665
542
  try {
666
543
  const idx = i * 3;
667
544
  const token0 = pairIface.decodeFunctionResult('token0', returnData2[idx])[0];
668
- void pairIface.decodeFunctionResult('token1', returnData2[idx + 1]);
545
+ pairIface.decodeFunctionResult('token1', returnData2[idx + 1]);
669
546
  const [r0, r1] = pairIface.decodeFunctionResult('getReserves', returnData2[idx + 2]);
670
547
  const p = validPairs[i];
671
548
  const isToken0 = token0.toLowerCase() === token.toLowerCase();
@@ -683,7 +560,7 @@ async function queryV2Pairs(token, factoryAddress, quoteTokens, provider, multic
683
560
  });
684
561
  }
685
562
  catch {
686
- void 0;
563
+ // 单条 reserve 解码失败,跳过
687
564
  }
688
565
  }
689
566
  }
@@ -703,12 +580,7 @@ async function queryV2PairsFallback(token, factoryAddress, quoteTokens, provider
703
580
  return null;
704
581
  }
705
582
  const pair = new Contract(pairAddress, I_UNIV2_PAIR_ABI, provider);
706
- // 并行获取 token0token1 和 reserves
707
- const [token0, , reserves] = await Promise.all([
708
- pair.token0(),
709
- pair.token1(),
710
- pair.getReserves()
711
- ]);
583
+ const [token0, , reserves] = await Promise.all([pair.token0(), pair.token1(), pair.getReserves()]);
712
584
  const [r0, r1] = reserves;
713
585
  const isToken0 = token0.toLowerCase() === token.toLowerCase();
714
586
  const reserveToken = isToken0 ? r0 : r1;
@@ -734,7 +606,7 @@ async function queryV2PairsFallback(token, factoryAddress, quoteTokens, provider
734
606
  // ============================================================================
735
607
  // V3 批量查询
736
608
  // ============================================================================
737
- async function queryV3Pools(token, factoryAddress, quoteTokens, feeTiers, provider, multicall3, tokenDecimals, shouldFormat, _debug) {
609
+ async function queryV3Pools(token, factoryAddress, quoteTokens, feeTiers, provider, multicall3, tokenDecimals, shouldFormat) {
738
610
  const results = [];
739
611
  const factoryIface = new Interface(I_UNIV3_FACTORY_ABI);
740
612
  const erc20Iface = new Interface(I_ERC20_ABI);
@@ -746,9 +618,7 @@ async function queryV3Pools(token, factoryAddress, quoteTokens, feeTiers, provid
746
618
  // V3 要求 token0 < token1
747
619
  const tokenLower = token.toLowerCase();
748
620
  const quoteLower = qt.address.toLowerCase();
749
- const [token0, token1] = tokenLower < quoteLower
750
- ? [tokenLower, quoteLower]
751
- : [quoteLower, tokenLower];
621
+ const [token0, token1] = tokenLower < quoteLower ? [tokenLower, quoteLower] : [quoteLower, tokenLower];
752
622
  poolCalls.push({
753
623
  target: factoryAddress,
754
624
  callData: factoryIface.encodeFunctionData('getPool', [token0, token1, fee]),
@@ -760,7 +630,7 @@ async function queryV3Pools(token, factoryAddress, quoteTokens, feeTiers, provid
760
630
  try {
761
631
  // 第一步:批量查询所有 getPool
762
632
  const aggData = mcIface.encodeFunctionData('aggregate', [
763
- poolCalls.map(c => ({ target: c.target, callData: c.callData }))
633
+ poolCalls.map((c) => ({ target: c.target, callData: c.callData })),
764
634
  ]);
765
635
  const res = await provider.call({ to: multicall3, data: aggData });
766
636
  const [, returnData] = mcIface.decodeFunctionResult('aggregate', res);
@@ -785,7 +655,7 @@ async function queryV3Pools(token, factoryAddress, quoteTokens, feeTiers, provid
785
655
  if (validPools.length === 0)
786
656
  return results;
787
657
  // 第二步:批量查询余额
788
- const balanceCalls = validPools.flatMap(p => [
658
+ const balanceCalls = validPools.flatMap((p) => [
789
659
  { target: token, callData: erc20Iface.encodeFunctionData('balanceOf', [p.poolAddress]) },
790
660
  { target: p.quoteToken.address, callData: erc20Iface.encodeFunctionData('balanceOf', [p.poolAddress]) },
791
661
  ]);
@@ -812,7 +682,7 @@ async function queryV3Pools(token, factoryAddress, quoteTokens, feeTiers, provid
812
682
  });
813
683
  }
814
684
  catch {
815
- void 0;
685
+ // 单条 balance 解码失败,跳过
816
686
  }
817
687
  }
818
688
  }
@@ -830,9 +700,7 @@ async function queryV3PoolsFallback(token, factoryAddress, quoteTokens, feeTiers
830
700
  for (const qt of quoteTokens) {
831
701
  const tokenLower = token.toLowerCase();
832
702
  const quoteLower = qt.address.toLowerCase();
833
- const [token0, token1] = tokenLower < quoteLower
834
- ? [tokenLower, quoteLower]
835
- : [quoteLower, tokenLower];
703
+ const [token0, token1] = tokenLower < quoteLower ? [tokenLower, quoteLower] : [quoteLower, tokenLower];
836
704
  for (const fee of feeTiers) {
837
705
  queries.push({ qt, fee, token0, token1 });
838
706
  }
@@ -876,7 +744,7 @@ function determinePlatform(allPools) {
876
744
  if (allPools.length === 0)
877
745
  return 'UNKNOWN';
878
746
  // 统计有流动性的 DEX
879
- const dexesWithLiquidity = allPools.filter(dex => dex.v2Pairs.length > 0 || dex.v3Pools.length > 0);
747
+ const dexesWithLiquidity = allPools.filter((dex) => dex.v2Pairs.length > 0 || dex.v3Pools.length > 0);
880
748
  if (dexesWithLiquidity.length > 1) {
881
749
  return 'MULTI_DEX';
882
750
  }
@@ -1,8 +1,5 @@
1
- export type ExclusiveCheckOnChainParams = {
2
- chain: 'BSC';
3
- tokenAddress: string;
4
- rpcUrl: string;
5
- };
1
+ import type { ExclusiveCheckOnChainParams } from './types/mpc-exclusive.js';
2
+ export type { ExclusiveCheckOnChainParams } from './types/mpc-exclusive.js';
6
3
  export declare function isExclusiveOnChain(params: ExclusiveCheckOnChainParams): Promise<boolean>;
7
4
  export declare function isExclusiveOffChain(getTokenInfo: (token: string) => Promise<{
8
5
  version?: string;
@@ -1,12 +1,13 @@
1
1
  import { Contract, JsonRpcProvider } from 'ethers';
2
- import TokenManager2Abi from '../shared/abis/TokenManager2.json' with { type: 'json' };
3
- import { ADDRESSES } from './constants.js';
2
+ import TokenManager2Abi from '../abis/contracts/TokenManager2.json' with { type: 'json' };
3
+ import { ADDRESSES } from '../shared/constants/index.js';
4
+ const TOKEN_MANAGER2_ABI = TokenManager2Abi;
4
5
  // 链上识别:template & 0x10000 > 0
5
6
  export async function isExclusiveOnChain(params) {
6
7
  const { chain, tokenAddress, rpcUrl } = params;
7
8
  const tokenManager2Address = ADDRESSES[chain].TokenManagerV2;
8
9
  const provider = new JsonRpcProvider(rpcUrl);
9
- const tm2 = new Contract(tokenManager2Address, TokenManager2Abi, provider);
10
+ const tm2 = new Contract(tokenManager2Address, TOKEN_MANAGER2_ABI, provider);
10
11
  const info = await tm2._tokenInfos(tokenAddress);
11
12
  const template = info.template;
12
13
  return (template & 0x10000n) > 0n;
@@ -5,64 +5,7 @@
5
5
  * - 贿赂交易:向 BlockRazor Builder EOA 转账 BNB 提高优先级
6
6
  * - 利润提取:千分之三(30 bps)
7
7
  */
8
- import type { GeneratedWallet } from './wallet.js';
9
- /** 私募签名配置 */
10
- export interface PrivateSaleSignConfig {
11
- /** RPC URL */
12
- rpcUrl: string;
13
- /** 链 ID */
14
- chainId?: number;
15
- /** Gas Limit(默认 21000) */
16
- gasLimit?: number;
17
- /** Gas Price(Gwei,默认 0.1) */
18
- gasPriceGwei?: number;
19
- /** 贿赂金额(BNB,默认 0.000001) */
20
- bribeAmount?: number;
21
- /** 是否提取利润(默认 true) */
22
- extractProfit?: boolean;
23
- /** 利润比例基点(默认 30 = 千分之三) */
24
- profitBps?: number;
25
- }
26
- /** 单个转账参数 */
27
- export interface PrivateSaleTransferParams {
28
- /** 发送者私钥 */
29
- senderPrivateKey: string;
30
- /** 接收者地址(合约地址) */
31
- recipient: string;
32
- /** 转账金额(单位:原生代币,如 BNB) */
33
- amount: number;
34
- }
35
- /** 批量转账参数 */
36
- export interface BatchPrivateSaleParams {
37
- /** 转账列表 */
38
- transfers: PrivateSaleTransferParams[];
39
- /** 签名配置 */
40
- config: PrivateSaleSignConfig;
41
- }
42
- /** 私募结果 */
43
- export interface PrivateSaleResult {
44
- /** 签名交易数组(包含贿赂 + 转账 + 利润) */
45
- signedTransactions: string[];
46
- /** ✅ 利润多跳钱包 */
47
- profitHopWallets?: GeneratedWallet[];
48
- /** 元数据 */
49
- metadata: {
50
- /** 总交易数 */
51
- totalCount: number;
52
- /** 贿赂交易数 */
53
- bribeCount: number;
54
- /** 转账交易数 */
55
- transferCount: number;
56
- /** 利润交易数 */
57
- profitCount: number;
58
- /** 总转账金额(Wei) */
59
- totalAmountWei: string;
60
- /** 总利润金额(Wei) */
61
- totalProfitWei: string;
62
- /** 贿赂金额(Wei) */
63
- bribeAmountWei: string;
64
- };
65
- }
8
+ import type { BatchPrivateSaleParams, PrivateSaleResult, PrivateSaleSignConfig, PrivateSaleTransferParams } from './types/private-sale.js';
66
9
  /**
67
10
  * 生成私募转账签名交易(带贿赂和利润提取)
68
11
  *
@@ -88,3 +31,4 @@ export declare function batchPrivateSaleMerkle(params: BatchPrivateSaleParams):
88
31
  * @returns 签名交易结果
89
32
  */
90
33
  export declare function privateSaleMerkle(transfer: PrivateSaleTransferParams, config: PrivateSaleSignConfig): Promise<PrivateSaleResult>;
34
+ export type { PrivateSaleSignConfig, PrivateSaleTransferParams, BatchPrivateSaleParams, PrivateSaleResult, } from './types/private-sale.js';
@@ -6,12 +6,8 @@
6
6
  * - 利润提取:千分之三(30 bps)
7
7
  */
8
8
  import { ethers, Wallet, JsonRpcProvider } from 'ethers';
9
- import { BLOCKRAZOR_BUILDER_EOA } from './constants.js';
10
- import { getProfitRecipient, getProfitRateBps } from '../shared/constants/index.js';
9
+ import { getProfitRecipient, getProfitRateBps, BLOCKRAZOR_BUILDER_EOA } from '../shared/constants/index.js';
11
10
  import { NonceManager, buildProfitHopTransactions, PROFIT_HOP_COUNT } from './bundle-helpers.js';
12
- // ============================================================================
13
- // 核心功能
14
- // ============================================================================
15
11
  /**
16
12
  * 生成私募转账签名交易(带贿赂和利润提取)
17
13
  *
@@ -69,7 +65,6 @@ export async function batchPrivateSaleMerkle(params) {
69
65
  uniqueWallets.forEach((wallet, i) => {
70
66
  nonceMap.set(wallet.address.toLowerCase(), noncesArray[i]);
71
67
  });
72
- // ✅ 预计算每个钱包的 nonce 分配
73
68
  // 第一个钱包:baseNonce(贿赂) → baseNonce+1...+N(转账) → 最后(利润)
74
69
  const firstWalletBaseNonce = nonceMap.get(firstWalletKey);
75
70
  // ✅ 为每个转账预分配 nonce
@@ -131,7 +126,7 @@ export async function batchPrivateSaleMerkle(params) {
131
126
  gasPrice,
132
127
  chainId,
133
128
  txType: 0,
134
- startNonce: profitNonce
129
+ startNonce: profitNonce,
135
130
  });
136
131
  signedTransactions.push(...profitHopResult.signedTransactions);
137
132
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -25,6 +25,10 @@ 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;
28
32
  /**
29
33
  * XLayer 专用 Provider 创建函数
30
34
  */