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
@@ -5,7 +5,7 @@
5
5
  * 等同于 BSC EOA 普通模式 / Monad direct 模式
6
6
  */
7
7
  import { Wallet, JsonRpcProvider } from 'ethers';
8
- import { ENI_CHAIN_ID, ENI_RPC_URL, DAOAAS_PORTAL, NATIVE_TRANSFER_GAS_LIMIT, } from '../../constants.js';
8
+ import { ENI_CHAIN_ID, ENI_RPC_URL, DAOAAS_PORTAL, NATIVE_TRANSFER_GAS_LIMIT } from '../../constants.js';
9
9
  import { encodeBuyCall, encodeSellCall, applySlippage, DaoaasPortalQuery } from './portal.js';
10
10
  import { getProfitRecipient, getProfitRateBps, calculateProfitAmount } from '../../../../shared/constants/profit.js';
11
11
  const NORMAL_PROFIT_BPS = getProfitRateBps('normal');
@@ -45,7 +45,7 @@ export async function directBuy(params) {
45
45
  const provider = new JsonRpcProvider(params.rpcUrl ?? ENI_RPC_URL, ENI_CHAIN_ID, { staticNetwork: true });
46
46
  const wallet = new Wallet(params.privateKey, provider);
47
47
  const calldata = encodeBuyCall(params.token, params.amountOutMin ?? 0n);
48
- const nonce = params.nonce ?? await wallet.getNonce('pending');
48
+ const nonce = params.nonce ?? (await wallet.getNonce('pending'));
49
49
  const feeData = await provider.getFeeData();
50
50
  const tx = await wallet.signTransaction({
51
51
  to: DAOAAS_PORTAL,
@@ -70,7 +70,7 @@ export async function directSell(params) {
70
70
  const provider = new JsonRpcProvider(params.rpcUrl ?? ENI_RPC_URL, ENI_CHAIN_ID, { staticNetwork: true });
71
71
  const wallet = new Wallet(params.privateKey, provider);
72
72
  const calldata = encodeSellCall(params.token, params.tokenAmount, params.amountOutMin ?? 0n);
73
- const nonce = params.nonce ?? await wallet.getNonce('pending');
73
+ const nonce = params.nonce ?? (await wallet.getNonce('pending'));
74
74
  const feeData = await provider.getFeeData();
75
75
  const tx = await wallet.signTransaction({
76
76
  to: DAOAAS_PORTAL,
@@ -260,7 +260,7 @@ export async function directSellForSubmit(params) {
260
260
  };
261
261
  }
262
262
  export async function directBatchBuyForSubmit(params) {
263
- const { rpcUrl = ENI_RPC_URL, token, privateKeys: rawKeys, amounts: rawAmounts, slippageBps = 100, gasPrice } = params;
263
+ const { rpcUrl = ENI_RPC_URL, token, privateKeys: rawKeys, amounts: rawAmounts, slippageBps = 100, gasPrice, } = params;
264
264
  if (rawKeys.length !== rawAmounts.length) {
265
265
  throw new Error(`privateKeys.length (${rawKeys.length}) !== amounts.length (${rawAmounts.length})`);
266
266
  }
@@ -277,8 +277,8 @@ export async function directBatchBuyForSubmit(params) {
277
277
  const totalFlowRaw = rawAmounts.reduce((sum, amount) => sum + amount, 0n);
278
278
  const profitAmountFull = calculateProfitAmount(totalFlowRaw, NORMAL_PROFIT_BPS) + profitTxGasCost;
279
279
  const maxPayerIdx = pickMaxAmountIndex(rawAmounts);
280
- const wallets = rawKeys.map(pk => new Wallet(pk, provider));
281
- const balances = await Promise.all(wallets.map(w => provider.getBalance(w.address)));
280
+ const wallets = rawKeys.map((pk) => new Wallet(pk, provider));
281
+ const balances = await Promise.all(wallets.map((w) => provider.getBalance(w.address)));
282
282
  let privateKeys = rawKeys;
283
283
  let amounts = rawAmounts;
284
284
  const validIndices = [];
@@ -287,7 +287,6 @@ export async function directBatchBuyForSubmit(params) {
287
287
  if (i === maxPayerIdx)
288
288
  required += profitAmountFull + NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
289
289
  if (balances[i] < required) {
290
- console.warn(`[DAOAAS BatchBuy] 钱包 ${wallets[i].address.slice(0, 10)} 余额不足: 余额=${balances[i]}, 需要=${required},跳过`);
291
290
  continue;
292
291
  }
293
292
  validIndices.push(i);
@@ -296,8 +295,8 @@ export async function directBatchBuyForSubmit(params) {
296
295
  throw new Error('所有钱包余额不足(含 swap + gas),无法执行 DAOAAS 买入');
297
296
  }
298
297
  if (validIndices.length < rawKeys.length) {
299
- privateKeys = validIndices.map(i => rawKeys[i]);
300
- amounts = validIndices.map(i => rawAmounts[i]);
298
+ privateKeys = validIndices.map((i) => rawKeys[i]);
299
+ amounts = validIndices.map((i) => rawAmounts[i]);
301
300
  }
302
301
  const transactions = [];
303
302
  const totalFlow = amounts.reduce((sum, amount) => sum + amount, 0n);
@@ -305,9 +304,7 @@ export async function directBatchBuyForSubmit(params) {
305
304
  for (let i = 0; i < privateKeys.length; i++) {
306
305
  const wallet = new Wallet(privateKeys[i], provider);
307
306
  const preview = await query.previewBuy(token, amounts[i]);
308
- const effectiveSlippage = isBatch
309
- ? Math.min(9500, slippageBps + i * 2000)
310
- : slippageBps;
307
+ const effectiveSlippage = isBatch ? Math.min(9500, slippageBps + i * 2000) : slippageBps;
311
308
  const minOut = applySlippage(preview, effectiveSlippage);
312
309
  const calldata = encodeBuyCall(token, minOut);
313
310
  const nonce = await wallet.getNonce('pending');
@@ -336,7 +333,7 @@ export async function directBatchBuyForSubmit(params) {
336
333
  });
337
334
  return {
338
335
  transactions,
339
- signedTransactions: [...transactions.map(tx => tx.signedTx), profitTx.signedTx],
336
+ signedTransactions: [...transactions.map((tx) => tx.signedTx), profitTx.signedTx],
340
337
  totalGasCost: swapGasLimit * maxFeePerGas * BigInt(transactions.length) + NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas,
341
338
  metadata: formatSubmitMetadata(totalFlow, profitAmount),
342
339
  };
@@ -355,19 +352,7 @@ export async function directBatchSellForSubmit(params) {
355
352
  const maxFeePerGas = gasPrice ?? feeData.maxFeePerGas ?? feeData.gasPrice ?? 1000000000n;
356
353
  const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? 0n;
357
354
  const swapGasLimit = 300000n;
358
- const swapGasCost = swapGasLimit * maxFeePerGas;
359
- const profitGasCost = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
360
- const wallets = privateKeys.map(pk => new Wallet(pk, provider));
361
- const balances = await Promise.all(wallets.map(w => provider.getBalance(w.address)));
362
- const maxPayerIdx = pickMaxAmountIndex(tokenAmounts);
363
- for (let i = 0; i < wallets.length; i++) {
364
- let required = swapGasCost;
365
- if (i === maxPayerIdx)
366
- required += profitGasCost;
367
- if (balances[i] < required) {
368
- console.warn(`[DAOAAS BatchSell] 钱包 ${wallets[i].address.slice(0, 10)} 原生余额不足 gas: 余额=${balances[i]}, 需要=${required},可能导致交易失败`);
369
- }
370
- }
355
+ const wallets = privateKeys.map((pk) => new Wallet(pk, provider));
371
356
  const transactions = [];
372
357
  const estimatedOuts = [];
373
358
  const isBatch = privateKeys.length > 1;
@@ -375,9 +360,7 @@ export async function directBatchSellForSubmit(params) {
375
360
  const wallet = wallets[i];
376
361
  const preview = await query.previewSell(token, tokenAmounts[i]);
377
362
  estimatedOuts.push(preview);
378
- const effectiveSlippage = isBatch
379
- ? Math.min(9500, slippageBps + i * 2000)
380
- : slippageBps;
363
+ const effectiveSlippage = isBatch ? Math.min(9500, slippageBps + i * 2000) : slippageBps;
381
364
  const minOut = applySlippage(preview, effectiveSlippage);
382
365
  const calldata = encodeSellCall(token, tokenAmounts[i], minOut);
383
366
  const nonce = await wallet.getNonce('pending');
@@ -407,7 +390,7 @@ export async function directBatchSellForSubmit(params) {
407
390
  });
408
391
  return {
409
392
  transactions,
410
- signedTransactions: [...transactions.map(tx => tx.signedTx), profitTx.signedTx],
393
+ signedTransactions: [...transactions.map((tx) => tx.signedTx), profitTx.signedTx],
411
394
  totalGasCost: 300000n * maxFeePerGas * BigInt(transactions.length) + NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas,
412
395
  metadata: formatSubmitMetadata(totalFlow, profitAmount),
413
396
  };
@@ -438,9 +421,9 @@ export async function directQuickSwapForSubmit(params) {
438
421
  if (params.sellerKeys.length > 1) {
439
422
  for (let i = 1; i < params.sellerKeys.length; i++) {
440
423
  const otherWallet = new Wallet(params.sellerKeys[i], provider);
441
- const otherSellTxs = sellResult.transactions.filter(tx => tx.from.toLowerCase() === otherWallet.address.toLowerCase());
424
+ const otherSellTxs = sellResult.transactions.filter((tx) => tx.from.toLowerCase() === otherWallet.address.toLowerCase());
442
425
  const otherNextNonce = otherSellTxs.length > 0
443
- ? Math.max(...otherSellTxs.map(tx => tx.nonce)) + 1
426
+ ? Math.max(...otherSellTxs.map((tx) => tx.nonce)) + 1
444
427
  : await otherWallet.getNonce('pending');
445
428
  const otherBalance = await provider.getBalance(otherWallet.address);
446
429
  const reserveGas = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
@@ -464,23 +447,23 @@ export async function directQuickSwapForSubmit(params) {
464
447
  const hopCount = params.hopCount ?? 0;
465
448
  const distributeHopWallets = [];
466
449
  if (params.buyerKeys.length > 0) {
467
- const primarySellTxs = sellResult.transactions.filter(tx => tx.from.toLowerCase() === primarySellerAddress);
450
+ const primarySellTxs = sellResult.transactions.filter((tx) => tx.from.toLowerCase() === primarySellerAddress);
468
451
  let primaryNextNonce = primarySellTxs.length > 0
469
- ? Math.max(...primarySellTxs.map(tx => tx.nonce)) + 1
452
+ ? Math.max(...primarySellTxs.map((tx) => tx.nonce)) + 1
470
453
  : await primarySellerWallet.getNonce('pending');
471
454
  const gasForBuy = 300000n * maxFeePerGas;
472
455
  const hopGasFee = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
473
456
  const totalFlow = params.buyAmounts.reduce((sum, a) => sum + a, 0n);
474
457
  const profitTxGasCost = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
475
458
  const profitAmount = calculateProfitAmount(totalFlow, NORMAL_PROFIT_BPS) + profitTxGasCost;
476
- const profitGasPerBuyer = (NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas);
459
+ const profitGasPerBuyer = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
477
460
  for (let i = 0; i < params.buyerKeys.length; i++) {
478
461
  const buyerAddress = new Wallet(params.buyerKeys[i]).address;
479
462
  const transferAmount = params.buyAmounts[i];
480
463
  if (transferAmount <= 0n)
481
464
  continue;
482
465
  const isMaxBuyer = i === pickMaxAmountIndex(params.buyAmounts);
483
- const extraForProfit = isMaxBuyer ? (profitAmount + profitGasPerBuyer) : 0n;
466
+ const extraForProfit = isMaxBuyer ? profitAmount + profitGasPerBuyer : 0n;
484
467
  const baseTransfer = transferAmount + gasForBuy + extraForProfit;
485
468
  if (hopCount <= 0) {
486
469
  const signedTx = await primarySellerWallet.signTransaction({
@@ -503,8 +486,8 @@ export async function directQuickSwapForSubmit(params) {
503
486
  hops.push({ address: w.address, privateKey: w.privateKey });
504
487
  }
505
488
  distributeHopWallets.push(hops);
506
- const fullChain = [primarySellerWallet, ...hops.map(h => new Wallet(h.privateKey))];
507
- const addresses = [...fullChain.map(w => w.address), buyerAddress];
489
+ const fullChain = [primarySellerWallet, ...hops.map((h) => new Wallet(h.privateKey))];
490
+ const addresses = [...fullChain.map((w) => w.address), buyerAddress];
508
491
  for (let j = 0; j < addresses.length - 1; j++) {
509
492
  const fromWallet = fullChain[j];
510
493
  const toAddress = addresses[j + 1];
@@ -544,8 +527,10 @@ export async function directQuickSwapForSubmit(params) {
544
527
  const payerIndex = pickMaxAmountIndex(params.buyAmounts);
545
528
  const payerKey = params.buyerKeys[payerIndex] || primarySellerKey;
546
529
  const payerAddress = new Wallet(payerKey).address.toLowerCase();
547
- const payerTxs = allTxs.filter(tx => tx.from.toLowerCase() === payerAddress);
548
- const payerNonce = payerTxs.length > 0 ? Math.max(...payerTxs.map(tx => tx.nonce)) + 1 : await new Wallet(payerKey, provider).getNonce('pending');
530
+ const payerTxs = allTxs.filter((tx) => tx.from.toLowerCase() === payerAddress);
531
+ const payerNonce = payerTxs.length > 0
532
+ ? Math.max(...payerTxs.map((tx) => tx.nonce)) + 1
533
+ : await new Wallet(payerKey, provider).getNonce('pending');
549
534
  const profitTx = await buildRevenueTail({
550
535
  rpcUrl,
551
536
  payerKey,
@@ -557,7 +542,7 @@ export async function directQuickSwapForSubmit(params) {
557
542
  const distributeGasCost = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas * BigInt(distributeTxs.length);
558
543
  return {
559
544
  transactions: allTxs,
560
- signedTransactions: [...allTxs.map(tx => tx.signedTx), profitTx.signedTx],
545
+ signedTransactions: [...allTxs.map((tx) => tx.signedTx), profitTx.signedTx],
561
546
  totalGasCost: sellResult.totalGasCost + distributeGasCost + buyResult.totalGasCost + NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas,
562
547
  metadata: formatSubmitMetadata(totalFlow, profitAmount),
563
548
  ...(distributeHopWallets.length > 0 ? { hopWallets: distributeHopWallets } : {}),
@@ -571,11 +556,11 @@ export async function directQuickSwapForSubmit(params) {
571
556
  * ENI 不需要多跳,直接转到收益地址
572
557
  */
573
558
  export async function buildProfitTransfer(params) {
574
- const { rpcUrl = ENI_RPC_URL, payerKey, profitAmount, gasPrice, nonce: explicitNonce, maxFeePerGas, maxPriorityFeePerGas } = params;
559
+ const { rpcUrl = ENI_RPC_URL, payerKey, profitAmount, gasPrice, nonce: explicitNonce, maxFeePerGas, maxPriorityFeePerGas, } = params;
575
560
  const provider = new JsonRpcProvider(rpcUrl, ENI_CHAIN_ID, { staticNetwork: true });
576
561
  const wallet = new Wallet(payerKey, provider);
577
562
  const feeData = await provider.getFeeData();
578
- const nonce = explicitNonce ?? await wallet.getNonce('pending');
563
+ const nonce = explicitNonce ?? (await wallet.getNonce('pending'));
579
564
  const resolvedMaxFeePerGas = maxFeePerGas ?? gasPrice ?? feeData.maxFeePerGas ?? feeData.gasPrice ?? 1000000000n;
580
565
  const resolvedMaxPriorityFeePerGas = maxPriorityFeePerGas ?? feeData.maxPriorityFeePerGas ?? 0n;
581
566
  const signedTx = await wallet.signTransaction({
@@ -5,8 +5,8 @@
5
5
  * 接口与 Flap Portal 不兼容,独立实现
6
6
  */
7
7
  import { Contract, Interface, JsonRpcProvider, formatEther, parseEther } from 'ethers';
8
- import { DAOAAS_PORTAL, DAOAAS_PORTAL_ABI, ENI_CHAIN_ID, ENI_MULTICALL3, ENI_RPC_URL, } from '../../constants.js';
9
- import { ERC20_ABI, MULTICALL3_ABI } from '../../../../shared/abis/common.js';
8
+ import { DAOAAS_PORTAL, DAOAAS_PORTAL_ABI, ENI_CHAIN_ID, ENI_MULTICALL3, ENI_RPC_URL } from '../../constants.js';
9
+ import { ERC20_ABI, MULTICALL3_ABI } from '../../../../abis/common.js';
10
10
  const portalIface = new Interface(DAOAAS_PORTAL_ABI);
11
11
  const erc20Iface = new Interface(ERC20_ABI);
12
12
  const multicallIface = new Interface(MULTICALL3_ABI);
@@ -34,6 +34,10 @@ export function encodeTransferCall(to, amount) {
34
34
  return erc20Iface.encodeFunctionData('transfer', [to, amount]);
35
35
  }
36
36
  export class DaoaasPortalQuery {
37
+ provider;
38
+ portal;
39
+ portalAddress;
40
+ multicall3Address;
37
41
  constructor(config = {}) {
38
42
  const rpcUrl = config.rpcUrl ?? ENI_RPC_URL;
39
43
  this.provider = new JsonRpcProvider(rpcUrl, ENI_CHAIN_ID, { staticNetwork: true });
@@ -56,7 +60,7 @@ export class DaoaasPortalQuery {
56
60
  /** 获取代币完整状态(链上 getTokenState 仅返回 uint256 状态码,其余数据分别查询) */
57
61
  async getTokenState(token) {
58
62
  const status = Number(await this.portal.getTokenState(token));
59
- const price = await this.portal.getPrice(token);
63
+ const price = (await this.portal.getPrice(token));
60
64
  const tokenContract = new Contract(token, ERC20_ABI, this.provider);
61
65
  const [totalSupply, portalBalance, name, symbol] = await Promise.all([
62
66
  tokenContract.totalSupply(),
@@ -69,7 +73,7 @@ export class DaoaasPortalQuery {
69
73
  }
70
74
  /** 批量获取钱包 EGAS 余额 */
71
75
  async getMultipleEgasBalances(addresses) {
72
- const calls = addresses.map(addr => ({
76
+ const calls = addresses.map((addr) => ({
73
77
  target: this.multicall3Address,
74
78
  allowFailure: true,
75
79
  callData: multicallIface.encodeFunctionData('getEthBalance', [addr]),
@@ -85,7 +89,7 @@ export class DaoaasPortalQuery {
85
89
  }
86
90
  /** 批量获取 ERC20 余额 */
87
91
  async getMultipleTokenBalances(token, addresses) {
88
- const calls = addresses.map(addr => ({
92
+ const calls = addresses.map((addr) => ({
89
93
  target: token,
90
94
  allowFailure: true,
91
95
  callData: erc20Iface.encodeFunctionData('balanceOf', [addr]),
@@ -101,7 +105,7 @@ export class DaoaasPortalQuery {
101
105
  }
102
106
  /** 批量获取 ERC20 allowance */
103
107
  async getMultipleAllowances(token, owners, spender) {
104
- const calls = owners.map(owner => ({
108
+ const calls = owners.map((owner) => ({
105
109
  target: token,
106
110
  allowFailure: true,
107
111
  callData: erc20Iface.encodeFunctionData('allowance', [owner, spender]),
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { Wallet, JsonRpcProvider, Contract, ethers, Interface } from 'ethers';
11
11
  import { ENI_CHAIN_ID, ENI_RPC_URL, WEGAS, NATIVE_TRANSFER_GAS_LIMIT, DSWAP_V2_ROUTER, DSWAP_V2_FACTORY, DSWAP_V2_ROUTER_ABI, DSWAP_V2_FACTORY_ABI, DSWAP_V2_PAIR_ABI, } from '../../constants.js';
12
- import { ERC20_ABI } from '../../../../shared/abis/common.js';
12
+ import { ERC20_ABI } from '../../../../abis/common.js';
13
13
  import { getProfitRecipient, getProfitRateBps, calculateProfitAmount } from '../../../../shared/constants/profit.js';
14
14
  const DEFAULT_DEADLINE_MINUTES = 20;
15
15
  const DEFAULT_SLIPPAGE_PCT = 5;
@@ -25,7 +25,7 @@ function getDeadline(minutes) {
25
25
  }
26
26
  function applySlippage(amount, slippagePct) {
27
27
  const pct = Math.max(0, Math.min(100, slippagePct));
28
- return amount * BigInt(100 - Math.floor(pct)) / 100n;
28
+ return (amount * BigInt(100 - Math.floor(pct))) / 100n;
29
29
  }
30
30
  async function signProfitTx(params) {
31
31
  return params.wallet.signTransaction({
@@ -64,17 +64,11 @@ export async function getLPPairInfo(params) {
64
64
  ]);
65
65
  let userLPBalance = 0n;
66
66
  if (params.userAddress) {
67
- userLPBalance = await pair.balanceOf(params.userAddress);
67
+ userLPBalance = (await pair.balanceOf(params.userAddress));
68
68
  }
69
- const userShare = totalSupply > 0n
70
- ? Number(userLPBalance * 10000n / totalSupply) / 10000
71
- : 0;
72
- const userToken0Amount = totalSupply > 0n
73
- ? reserves[0] * userLPBalance / totalSupply
74
- : 0n;
75
- const userToken1Amount = totalSupply > 0n
76
- ? reserves[1] * userLPBalance / totalSupply
77
- : 0n;
69
+ const userShare = totalSupply > 0n ? Number((userLPBalance * 10000n) / totalSupply) / 10000 : 0;
70
+ const userToken0Amount = totalSupply > 0n ? (reserves[0] * userLPBalance) / totalSupply : 0n;
71
+ const userToken1Amount = totalSupply > 0n ? (reserves[1] * userLPBalance) / totalSupply : 0n;
78
72
  return {
79
73
  pairAddress: pairAddr,
80
74
  token0,
@@ -89,7 +83,7 @@ export async function getLPPairInfo(params) {
89
83
  };
90
84
  }
91
85
  export async function batchGetLPPairInfo(params) {
92
- return Promise.all(params.tokens.map(token => getLPPairInfo({ rpcUrl: params.rpcUrl, token, userAddress: params.userAddress })));
86
+ return Promise.all(params.tokens.map((token) => getLPPairInfo({ rpcUrl: params.rpcUrl, token, userAddress: params.userAddress })));
93
87
  }
94
88
  // ============================================================================
95
89
  // 创建/添加 流动性 — EGAS + Token
@@ -123,7 +117,12 @@ export async function addLiquidityETHForSubmit(params) {
123
117
  const amountTokenMin = applySlippage(amountTokenDesired, slippage);
124
118
  const amountETHMin = applySlippage(amountETHDesired, slippage);
125
119
  const addLiqData = routerIface.encodeFunctionData('addLiquidityETH', [
126
- token, amountTokenDesired, amountTokenMin, amountETHMin, wallet.address, deadline,
120
+ token,
121
+ amountTokenDesired,
122
+ amountTokenMin,
123
+ amountETHMin,
124
+ wallet.address,
125
+ deadline,
127
126
  ]);
128
127
  const addLiqTx = await wallet.signTransaction({
129
128
  to: DSWAP_V2_ROUTER,
@@ -140,7 +139,13 @@ export async function addLiquidityETHForSubmit(params) {
140
139
  const profitTxGasCost = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
141
140
  const profitAmount = calculateProfitAmount(amountETHDesired, PROFIT_BPS) + profitTxGasCost;
142
141
  if (profitAmount > 0n) {
143
- const profitTx = await signProfitTx({ wallet, nonce: currentNonce, profitAmount, maxFeePerGas, maxPriorityFeePerGas });
142
+ const profitTx = await signProfitTx({
143
+ wallet,
144
+ nonce: currentNonce,
145
+ profitAmount,
146
+ maxFeePerGas,
147
+ maxPriorityFeePerGas,
148
+ });
144
149
  signedTxs.push(profitTx);
145
150
  }
146
151
  return { signedTransactions: signedTxs };
@@ -165,7 +170,7 @@ export async function removeLiquidityETHForSubmit(params) {
165
170
  const pair = new Contract(pairAddr, DSWAP_V2_PAIR_ABI, provider);
166
171
  let liquidity = params.liquidity;
167
172
  if (liquidity === 0n) {
168
- liquidity = await pair.balanceOf(wallet.address);
173
+ liquidity = (await pair.balanceOf(wallet.address));
169
174
  if (liquidity === 0n)
170
175
  throw new Error('No LP tokens to remove');
171
176
  }
@@ -177,8 +182,8 @@ export async function removeLiquidityETHForSubmit(params) {
177
182
  const isToken0 = token.toLowerCase() === token0.toLowerCase();
178
183
  const reserveToken = isToken0 ? reserves[0] : reserves[1];
179
184
  const reserveETH = isToken0 ? reserves[1] : reserves[0];
180
- const amountTokenExpected = reserveToken * liquidity / totalSupply;
181
- const amountETHExpected = reserveETH * liquidity / totalSupply;
185
+ const amountTokenExpected = (reserveToken * liquidity) / totalSupply;
186
+ const amountETHExpected = (reserveETH * liquidity) / totalSupply;
182
187
  const amountTokenMin = applySlippage(amountTokenExpected, slippage);
183
188
  const amountETHMin = applySlippage(amountETHExpected, slippage);
184
189
  let currentNonce = await wallet.getNonce();
@@ -198,7 +203,12 @@ export async function removeLiquidityETHForSubmit(params) {
198
203
  signedTxs.push(approveTx);
199
204
  }
200
205
  const removeLiqData = routerIface.encodeFunctionData('removeLiquidityETHSupportingFeeOnTransferTokens', [
201
- token, liquidity, amountTokenMin, amountETHMin, wallet.address, deadline,
206
+ token,
207
+ liquidity,
208
+ amountTokenMin,
209
+ amountETHMin,
210
+ wallet.address,
211
+ deadline,
202
212
  ]);
203
213
  const removeLiqTx = await wallet.signTransaction({
204
214
  to: DSWAP_V2_ROUTER,
@@ -215,7 +225,13 @@ export async function removeLiquidityETHForSubmit(params) {
215
225
  const profitTxGasCost = NATIVE_TRANSFER_GAS_LIMIT * maxFeePerGas;
216
226
  const profitAmount = calculateProfitAmount(amountETHExpected, PROFIT_BPS) + profitTxGasCost;
217
227
  if (profitAmount > 0n) {
218
- const profitTx = await signProfitTx({ wallet, nonce: currentNonce, profitAmount, maxFeePerGas, maxPriorityFeePerGas });
228
+ const profitTx = await signProfitTx({
229
+ wallet,
230
+ nonce: currentNonce,
231
+ profitAmount,
232
+ maxFeePerGas,
233
+ maxPriorityFeePerGas,
234
+ });
219
235
  signedTxs.push(profitTx);
220
236
  }
221
237
  return { signedTransactions: signedTxs };
@@ -234,7 +250,10 @@ export async function addLiquidityForSubmit(params) {
234
250
  const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? 0n;
235
251
  let currentNonce = await wallet.getNonce();
236
252
  const signedTxs = [];
237
- for (const [token, amount] of [[tokenA, amountADesired], [tokenB, amountBDesired]]) {
253
+ for (const [token, amount] of [
254
+ [tokenA, amountADesired],
255
+ [tokenB, amountBDesired],
256
+ ]) {
238
257
  const erc20 = new Contract(token, ERC20_ABI, provider);
239
258
  const allowance = await erc20.allowance(wallet.address, DSWAP_V2_ROUTER);
240
259
  if (allowance < amount) {
@@ -254,7 +273,14 @@ export async function addLiquidityForSubmit(params) {
254
273
  const amountAMin = applySlippage(amountADesired, slippage);
255
274
  const amountBMin = applySlippage(amountBDesired, slippage);
256
275
  const addLiqData = routerIface.encodeFunctionData('addLiquidity', [
257
- tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin, wallet.address, deadline,
276
+ tokenA,
277
+ tokenB,
278
+ amountADesired,
279
+ amountBDesired,
280
+ amountAMin,
281
+ amountBMin,
282
+ wallet.address,
283
+ deadline,
258
284
  ]);
259
285
  const addLiqTx = await wallet.signTransaction({
260
286
  to: DSWAP_V2_ROUTER,
@@ -290,7 +316,7 @@ export async function removeLiquidityForSubmit(params) {
290
316
  const pair = new Contract(pairAddr, DSWAP_V2_PAIR_ABI, provider);
291
317
  let liquidity = params.liquidity;
292
318
  if (liquidity === 0n) {
293
- liquidity = await pair.balanceOf(wallet.address);
319
+ liquidity = (await pair.balanceOf(wallet.address));
294
320
  if (liquidity === 0n)
295
321
  throw new Error('No LP tokens to remove');
296
322
  }
@@ -302,8 +328,8 @@ export async function removeLiquidityForSubmit(params) {
302
328
  const isAToken0 = tokenA.toLowerCase() === token0.toLowerCase();
303
329
  const reserveA = isAToken0 ? reserves[0] : reserves[1];
304
330
  const reserveB = isAToken0 ? reserves[1] : reserves[0];
305
- const amountAMin = applySlippage(reserveA * liquidity / totalSupply, slippage);
306
- const amountBMin = applySlippage(reserveB * liquidity / totalSupply, slippage);
331
+ const amountAMin = applySlippage((reserveA * liquidity) / totalSupply, slippage);
332
+ const amountBMin = applySlippage((reserveB * liquidity) / totalSupply, slippage);
307
333
  let currentNonce = await wallet.getNonce();
308
334
  const signedTxs = [];
309
335
  const lpAllowance = await pair.allowance(wallet.address, DSWAP_V2_ROUTER);
@@ -321,7 +347,13 @@ export async function removeLiquidityForSubmit(params) {
321
347
  signedTxs.push(approveTx);
322
348
  }
323
349
  const removeLiqData = routerIface.encodeFunctionData('removeLiquidity', [
324
- tokenA, tokenB, liquidity, amountAMin, amountBMin, wallet.address, deadline,
350
+ tokenA,
351
+ tokenB,
352
+ liquidity,
353
+ amountAMin,
354
+ amountBMin,
355
+ wallet.address,
356
+ deadline,
325
357
  ]);
326
358
  const removeLiqTx = await wallet.signTransaction({
327
359
  to: DSWAP_V2_ROUTER,
@@ -9,5 +9,5 @@ export type { LaunchParams, FairLaunchTokenInfo, FairLaunchQueryConfig, FairLaun
9
9
  export { LP_FAIR_LAUNCHER_ADDRESS, TOKEN_FACTORY_ADDRESS, POOL_FACTORY_ADDRESS, RATE_BASE, DEAD_ADDRESS, QUOTE_TOKENS, DEFAULT_LOCK_TIME, DEFAULT_RELEASE_PERIOD, DEFAULT_INITIAL_LP, } from './constants.js';
10
10
  export { standardPreset, liquidityProvidingPreset, dividendPreset, dividendBuybackPreset, deflationaryPreset, validateLaunchParams, detectLaunchType, } from './presets.js';
11
11
  export { FairLauncherQuery, encodeLaunchTokenCall, launchToken, launchTokenForSubmit, setTokenTradeStartTime, setTokenTradeStartTimeForSubmit, } from './launcher.js';
12
- export { FairPoolQuery, claimFromPool, claimFromPoolForSubmit, batchClaimForSubmit, } from './pool.js';
13
- export type { PoolOverview, PoolClaimParams, PoolClaimResult, } from './pool.js';
12
+ export { FairPoolQuery, claimFromPool, claimFromPoolForSubmit, batchClaimForSubmit } from './pool.js';
13
+ export type { PoolOverview, PoolClaimParams, PoolClaimResult } from './pool.js';
@@ -23,4 +23,4 @@ export { FairLauncherQuery, encodeLaunchTokenCall, launchToken, launchTokenForSu
23
23
  // ============================================================================
24
24
  // 池 (Pool)
25
25
  // ============================================================================
26
- export { FairPoolQuery, claimFromPool, claimFromPoolForSubmit, batchClaimForSubmit, } from './pool.js';
26
+ export { FairPoolQuery, claimFromPool, claimFromPoolForSubmit, batchClaimForSubmit } from './pool.js';
@@ -7,7 +7,7 @@
7
7
  * - 查询代币列表
8
8
  */
9
9
  import { Contract, Interface, Wallet, JsonRpcProvider } from 'ethers';
10
- import { ENI_CHAIN_ID, ENI_RPC_URL, LP_FAIR_LAUNCHER_ABI, NATIVE_TRANSFER_GAS_LIMIT, } from '../../constants.js';
10
+ import { ENI_CHAIN_ID, ENI_RPC_URL, LP_FAIR_LAUNCHER_ABI, NATIVE_TRANSFER_GAS_LIMIT } from '../../constants.js';
11
11
  import { LP_FAIR_LAUNCHER_ADDRESS } from './constants.js';
12
12
  import { buildProfitTransfer } from '../daoaas/portal-direct.js';
13
13
  import { calculateProfitAmount, getProfitRateBps, getProfitRecipient } from '../../../../shared/constants/profit.js';
@@ -17,6 +17,8 @@ const launcherIface = new Interface(LP_FAIR_LAUNCHER_ABI);
17
17
  // 只读查询
18
18
  // ============================================================================
19
19
  export class FairLauncherQuery {
20
+ provider;
21
+ launcher;
20
22
  constructor(config = {}) {
21
23
  const rpcUrl = config.rpcUrl ?? ENI_RPC_URL;
22
24
  this.provider = new JsonRpcProvider(rpcUrl, ENI_CHAIN_ID, { staticNetwork: true });
@@ -257,55 +259,93 @@ export async function launchTokenForSubmit(params) {
257
259
  // ============================================================================
258
260
  function paramsToTuple(p) {
259
261
  return [
260
- p.name, p.symbol, p.logo, p.metadata,
261
- p.quoteTokenAddr, p.initialLp, p.initialQuote,
262
- p.lpAddRate, p.lpAddMin,
263
- p.buybackRate, p.buybackMin, p.buybackPath,
264
- p.marketingRates, p.marketingAddrs,
265
- p.vestingAmount, p.vestingLockEndTime, p.vestingReleaseEndTime,
266
- p.vestingRecipients, p.vestingRatios,
267
- p.tradeStartTime, p.claimStartTime, p.claimEndTime,
268
- p.lockTime, p.releasePeriod,
269
- p.maxCount, p.minAmount, p.maxAmount,
270
- p.whitelistEnabled, p.whitelistAddrs,
271
- p.inviteCodeEnabled, p.inviteCodes,
262
+ p.name,
263
+ p.symbol,
264
+ p.logo,
265
+ p.metadata,
266
+ p.quoteTokenAddr,
267
+ p.initialLp,
268
+ p.initialQuote,
269
+ p.lpAddRate,
270
+ p.lpAddMin,
271
+ p.buybackRate,
272
+ p.buybackMin,
273
+ p.buybackPath,
274
+ p.marketingRates,
275
+ p.marketingAddrs,
276
+ p.vestingAmount,
277
+ p.vestingLockEndTime,
278
+ p.vestingReleaseEndTime,
279
+ p.vestingRecipients,
280
+ p.vestingRatios,
281
+ p.tradeStartTime,
282
+ p.claimStartTime,
283
+ p.claimEndTime,
284
+ p.lockTime,
285
+ p.releasePeriod,
286
+ p.maxCount,
287
+ p.minAmount,
288
+ p.maxAmount,
289
+ p.whitelistEnabled,
290
+ p.whitelistAddrs,
291
+ p.inviteCodeEnabled,
292
+ p.inviteCodes,
272
293
  ];
273
294
  }
274
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
295
+ function readRawBigint(raw, key, index) {
296
+ const value = raw[key] ?? raw[index];
297
+ if (value === undefined || value === null)
298
+ return 0n;
299
+ return BigInt(value);
300
+ }
301
+ function readRawString(raw, key, index) {
302
+ const value = raw[key] ?? raw[index];
303
+ return typeof value === 'string' ? value : '';
304
+ }
305
+ function readRawStringArray(raw, key, index) {
306
+ const value = raw[key] ?? raw[index];
307
+ return Array.isArray(value) ? [...value] : [];
308
+ }
309
+ function readRawBigintArray(raw, key, index) {
310
+ const value = raw[key] ?? raw[index];
311
+ if (!Array.isArray(value))
312
+ return [];
313
+ return value.map((item) => BigInt(item));
314
+ }
275
315
  function parseFairLaunchTokenInfo(raw) {
276
316
  return {
277
- indexAll: BigInt(raw.indexAll ?? raw[0] ?? 0),
278
- user: raw.user ?? raw[1] ?? '',
279
- index: BigInt(raw.index ?? raw[2] ?? 0),
280
- tokenAddress: raw.tokenAddr ?? raw[3] ?? '',
281
- poolAddress: raw.poolAddr ?? raw[4] ?? '',
282
- vestingAddress: raw.vestingAddr ?? raw[5] ?? '',
283
- quoteTokenAddr: raw.quoteTokenAddr ?? raw[6] ?? '',
284
- initialSupply: BigInt(raw.initialSupply ?? raw[7] ?? 0),
285
- initialLP: BigInt(raw.initialLP ?? raw[8] ?? 0),
286
- initialQuote: BigInt(raw.initialQuote ?? raw[9] ?? 0),
287
- lpAddRate: BigInt(raw.lpAddRate ?? raw[10] ?? 0),
288
- buybackRate: BigInt(raw.buybackRate ?? raw[11] ?? 0),
289
- buybackPath: Array.from(raw.buybackPath ?? raw[12] ?? []),
290
- marketingRates: (raw.marketingRates ?? raw[13] ?? []).map((r) => BigInt(r)),
291
- marketingAddrs: Array.from(raw.marketingAddrs ?? raw[14] ?? []),
292
- vestingAmount: BigInt(raw.vestingAmount ?? raw[15] ?? 0),
293
- vestingLockEndTime: BigInt(raw.vestingLockEndTime ?? raw[16] ?? 0),
294
- vestingReleaseEndTime: BigInt(raw.vestingReleaseEndTime ?? raw[17] ?? 0),
295
- vestingRecipients: Array.from(raw.vestingRecipients ?? raw[18] ?? []),
296
- vestingRatios: (raw.vestingRatios ?? raw[19] ?? []).map((r) => BigInt(r)),
297
- tradeStartTime: BigInt(raw.tradeStartTime ?? raw[20] ?? 0),
298
- claimStartTime: BigInt(raw.claimStartTime ?? raw[21] ?? 0),
299
- claimEndTime: BigInt(raw.claimEndTime ?? raw[22] ?? 0),
300
- lockTime: BigInt(raw.lockTime ?? raw[23] ?? 0),
301
- releasePeriod: BigInt(raw.releasePeriod ?? raw[24] ?? 0),
302
- maxCount: BigInt(raw.maxCount ?? raw[25] ?? 0),
303
- minAmount: BigInt(raw.minAmount ?? raw[26] ?? 0),
304
- maxAmount: BigInt(raw.maxAmount ?? raw[27] ?? 0),
305
- name: raw.name ?? raw[28] ?? '',
306
- symbol: raw.symbol ?? raw[29] ?? '',
307
- logo: raw.logo ?? raw[30] ?? '',
308
- metadata: raw.metadata ?? raw[31] ?? '',
309
- timestamp: BigInt(raw.timestamp ?? raw[32] ?? 0),
317
+ indexAll: readRawBigint(raw, 'indexAll', 0),
318
+ user: readRawString(raw, 'user', 1),
319
+ index: readRawBigint(raw, 'index', 2),
320
+ tokenAddress: readRawString(raw, 'tokenAddr', 3),
321
+ poolAddress: readRawString(raw, 'poolAddr', 4),
322
+ vestingAddress: readRawString(raw, 'vestingAddr', 5),
323
+ quoteTokenAddr: readRawString(raw, 'quoteTokenAddr', 6),
324
+ initialSupply: readRawBigint(raw, 'initialSupply', 7),
325
+ initialLP: readRawBigint(raw, 'initialLP', 8),
326
+ initialQuote: readRawBigint(raw, 'initialQuote', 9),
327
+ lpAddRate: readRawBigint(raw, 'lpAddRate', 10),
328
+ buybackRate: readRawBigint(raw, 'buybackRate', 11),
329
+ buybackPath: readRawStringArray(raw, 'buybackPath', 12),
330
+ marketingRates: readRawBigintArray(raw, 'marketingRates', 13),
331
+ marketingAddrs: readRawStringArray(raw, 'marketingAddrs', 14),
332
+ vestingAmount: readRawBigint(raw, 'vestingAmount', 15),
333
+ vestingLockEndTime: readRawBigint(raw, 'vestingLockEndTime', 16),
334
+ vestingReleaseEndTime: readRawBigint(raw, 'vestingReleaseEndTime', 17),
335
+ vestingRecipients: readRawStringArray(raw, 'vestingRecipients', 18),
336
+ vestingRatios: readRawBigintArray(raw, 'vestingRatios', 19),
337
+ tradeStartTime: readRawBigint(raw, 'tradeStartTime', 20),
338
+ claimStartTime: readRawBigint(raw, 'claimStartTime', 21),
339
+ claimEndTime: readRawBigint(raw, 'claimEndTime', 22),
340
+ lockTime: readRawBigint(raw, 'lockTime', 23),
341
+ releasePeriod: readRawBigint(raw, 'releasePeriod', 24),
342
+ maxCount: readRawBigint(raw, 'maxCount', 25),
343
+ minAmount: readRawBigint(raw, 'minAmount', 26),
344
+ maxAmount: readRawBigint(raw, 'maxAmount', 27),
345
+ name: readRawString(raw, 'name', 28),
346
+ symbol: readRawString(raw, 'symbol', 29),
347
+ logo: readRawString(raw, 'logo', 30),
348
+ metadata: readRawString(raw, 'metadata', 31),
349
+ timestamp: readRawBigint(raw, 'timestamp', 32),
310
350
  };
311
351
  }
@@ -7,7 +7,7 @@
7
7
  * - 构建跟买交易 (claimForSubmit / batchClaimForSubmit)
8
8
  */
9
9
  import { Contract, Interface, Wallet, JsonRpcProvider } from 'ethers';
10
- import { ENI_CHAIN_ID, ENI_RPC_URL, LP_FAIR_POOL_ABI, NATIVE_TRANSFER_GAS_LIMIT, } from '../../constants.js';
10
+ import { ENI_CHAIN_ID, ENI_RPC_URL, LP_FAIR_POOL_ABI, NATIVE_TRANSFER_GAS_LIMIT } from '../../constants.js';
11
11
  import { buildProfitTransfer } from '../daoaas/portal-direct.js';
12
12
  import { calculateProfitAmount, getProfitRateBps, getProfitRecipient } from '../../../../shared/constants/profit.js';
13
13
  const poolIface = new Interface(LP_FAIR_POOL_ABI);
@@ -15,6 +15,9 @@ const poolIface = new Interface(LP_FAIR_POOL_ABI);
15
15
  // 查询
16
16
  // ============================================================================
17
17
  export class FairPoolQuery {
18
+ provider;
19
+ pool;
20
+ poolAddress;
18
21
  constructor(poolAddress, rpcUrl) {
19
22
  this.poolAddress = poolAddress;
20
23
  this.provider = new JsonRpcProvider(rpcUrl ?? ENI_RPC_URL, ENI_CHAIN_ID, { staticNetwork: true });