four-flap-meme-sdk 2.2.2 → 2.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/README.en.md +41 -6
  2. package/README.md +31 -0
  3. package/README.zh-CN.md +41 -6
  4. package/dist/__tests__/subpath-exports.test.d.ts +1 -0
  5. package/dist/__tests__/subpath-exports.test.js +64 -0
  6. package/dist/abis/common.d.ts +85 -0
  7. package/dist/abis/common.js +264 -0
  8. package/dist/abis/contracts/TaxToken.json +969 -0
  9. package/dist/abis/contracts/TokenManager2.json +136 -0
  10. package/dist/abis/contracts/index.d.ts +5 -0
  11. package/dist/abis/contracts/index.js +5 -0
  12. package/dist/abis/flap/index.d.ts +3 -0
  13. package/dist/abis/flap/index.js +3 -0
  14. package/dist/abis/flap/portal-events.d.ts +6 -0
  15. package/dist/abis/flap/portal-events.js +17 -0
  16. package/dist/abis/flap/portal.d.ts +6 -0
  17. package/dist/abis/flap/portal.js +37 -0
  18. package/dist/abis/flap/vault.d.ts +171 -0
  19. package/dist/abis/flap/vault.js +91 -0
  20. package/dist/abis/index.d.ts +8 -0
  21. package/dist/abis/index.js +11 -0
  22. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +1 -0
  23. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  24. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +1 -0
  25. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  26. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
  27. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  28. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
  29. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  30. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  31. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  32. package/dist/bundle-core/config-helpers.d.ts +36 -0
  33. package/dist/bundle-core/config-helpers.js +57 -0
  34. package/dist/bundle-core/errors.d.ts +50 -0
  35. package/dist/bundle-core/errors.js +35 -0
  36. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  37. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  38. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  39. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  40. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  41. package/dist/bundle-core/four-meme/core.js +515 -0
  42. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  43. package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
  44. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  45. package/dist/bundle-core/four-meme/private.js +465 -0
  46. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  47. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  48. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  49. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  50. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  51. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  52. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  53. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  54. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  55. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  56. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  57. package/dist/bundle-core/four-meme/swap.js +505 -0
  58. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  59. package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
  60. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  61. package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
  62. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  63. package/dist/bundle-core/four-meme/types/index.js +1 -0
  64. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  65. package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
  66. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  67. package/dist/bundle-core/four-meme/types.js +1 -0
  68. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  69. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  70. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  71. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  72. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  73. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  74. package/dist/bundle-core/index.d.ts +8 -0
  75. package/dist/bundle-core/index.js +8 -0
  76. package/dist/bundle-core/internal.d.ts +21 -0
  77. package/dist/bundle-core/internal.js +182 -0
  78. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  79. package/dist/bundle-core/sign-context-helpers.js +67 -0
  80. package/dist/bundle-core/submit.d.ts +293 -0
  81. package/dist/bundle-core/submit.js +727 -0
  82. package/dist/bundle-core/types/index.d.ts +8 -0
  83. package/dist/bundle-core/types/index.js +1 -0
  84. package/dist/bundle-core/types.d.ts +1 -0
  85. package/dist/bundle-core/types.js +1 -0
  86. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  87. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
  88. package/dist/chains/bsc/four/config.d.ts +5 -67
  89. package/dist/chains/bsc/four/config.js +2 -114
  90. package/dist/chains/bsc/four/core.d.ts +1 -4
  91. package/dist/chains/bsc/four/core.js +1 -592
  92. package/dist/chains/bsc/four/index.d.ts +6 -6
  93. package/dist/chains/bsc/four/index.js +6 -6
  94. package/dist/chains/bsc/four/internal.d.ts +2 -46
  95. package/dist/chains/bsc/four/internal.js +2 -239
  96. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  97. package/dist/chains/bsc/four/pancake-proxy.js +1 -687
  98. package/dist/chains/bsc/four/private.d.ts +1 -27
  99. package/dist/chains/bsc/four/private.js +1 -477
  100. package/dist/chains/bsc/four/submit.d.ts +2 -315
  101. package/dist/chains/bsc/four/submit.js +2 -752
  102. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  103. package/dist/chains/bsc/four/swap-buy-first.js +2 -507
  104. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  105. package/dist/chains/bsc/four/swap-internal.js +1 -18
  106. package/dist/chains/bsc/four/swap.d.ts +2 -144
  107. package/dist/chains/bsc/four/swap.js +2 -766
  108. package/dist/chains/bsc/four/types.d.ts +1 -476
  109. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  110. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  111. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  112. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  113. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  114. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  115. package/dist/chains/bsc/four/utils.d.ts +5 -18
  116. package/dist/chains/bsc/four/utils.js +5 -1552
  117. package/dist/chains/bsc/iro.d.ts +5 -0
  118. package/dist/chains/bsc/iro.js +4 -0
  119. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  120. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  121. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  122. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -212
  123. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  124. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  125. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  126. package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
  127. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  128. package/dist/chains/bsc/pancake/index.js +1 -3
  129. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  130. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  131. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  132. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  133. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  134. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  135. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  136. package/dist/chains/eni/batch-router/transfer.js +55 -25
  137. package/dist/chains/eni/batch-router/utils.js +32 -6
  138. package/dist/chains/eni/bundler/sign.js +5 -6
  139. package/dist/chains/eni/bundler/submit.js +1 -4
  140. package/dist/chains/eni/constants.js +1 -1
  141. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  142. package/dist/chains/eni/flat-aliases.js +8 -0
  143. package/dist/chains/eni/index.d.ts +2 -1
  144. package/dist/chains/eni/index.js +1 -0
  145. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  146. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  147. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  148. package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
  149. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -44
  150. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  151. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  152. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  153. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  154. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -46
  155. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  156. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  157. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  158. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  159. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  160. package/dist/chains/eni/platforms/iro/index.js +4 -4
  161. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  162. package/dist/chains/eni/platforms/iro/token.js +107 -31
  163. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  164. package/dist/chains/eni/submit.d.ts +43 -0
  165. package/dist/chains/eni/submit.js +286 -0
  166. package/dist/chains/index.d.ts +13 -0
  167. package/dist/chains/index.js +13 -0
  168. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  169. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
  170. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  171. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  172. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -59
  173. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  174. package/dist/chains/xlayer/eip7702/bundle-sell.js +29 -111
  175. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  176. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -245
  177. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  178. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  179. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  180. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  181. package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
  182. package/dist/chains/xlayer/eip7702/index.js +28 -81
  183. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  184. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  185. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  186. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +63 -307
  187. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  188. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  189. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  190. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  191. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  192. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  193. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  194. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  195. package/dist/chains/xlayer/eip7702/volume.js +89 -164
  196. package/dist/chains/xlayer/eoa/constants.js +1 -1
  197. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  198. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  199. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  200. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  201. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
  202. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  203. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
  204. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  205. package/dist/chains/xlayer/eoa/index.js +8 -23
  206. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  207. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  208. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  209. package/dist/chains/xlayer/eoa/types.js +1 -3
  210. package/dist/chains/xlayer/index.d.ts +3 -2
  211. package/dist/chains/xlayer/index.js +4 -7
  212. package/dist/contracts/helper3.d.ts +20 -5
  213. package/dist/contracts/helper3.js +56 -20
  214. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  215. package/dist/contracts/tm-bundle-helpers.js +72 -0
  216. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  217. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -113
  218. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -67
  219. package/dist/contracts/tm-bundle-merkle/config.js +2 -114
  220. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  221. package/dist/contracts/tm-bundle-merkle/core.js +1 -591
  222. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  223. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  224. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -46
  225. package/dist/contracts/tm-bundle-merkle/internal.js +2 -238
  226. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  227. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -686
  228. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  229. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  230. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  231. package/dist/contracts/tm-bundle-merkle/submit.js +3 -928
  232. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  233. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -506
  234. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  235. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  236. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  237. package/dist/contracts/tm-bundle-merkle/swap.js +2 -764
  238. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  239. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  240. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  241. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  242. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  243. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  244. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  245. package/dist/contracts/tm-bundle-merkle/utils.d.ts +6 -18
  246. package/dist/contracts/tm-bundle-merkle/utils.js +6 -1501
  247. package/dist/contracts/tm-bundle.d.ts +3 -51
  248. package/dist/contracts/tm-bundle.js +108 -177
  249. package/dist/contracts/tm.d.ts +3 -2
  250. package/dist/contracts/tm.js +37 -32
  251. package/dist/contracts/tm1.js +9 -4
  252. package/dist/contracts/tm2.js +9 -4
  253. package/dist/dex/direct-router-helpers.d.ts +264 -0
  254. package/dist/dex/direct-router-helpers.js +539 -0
  255. package/dist/dex/direct-router.d.ts +3 -125
  256. package/dist/dex/direct-router.js +237 -666
  257. package/dist/dex/types.d.ts +81 -0
  258. package/dist/dex/types.js +1 -0
  259. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  260. package/dist/exports/root-bundle-and-tooling.js +30 -0
  261. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  262. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  263. package/dist/exports/root-foundations.d.ts +35 -0
  264. package/dist/exports/root-foundations.js +70 -0
  265. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  266. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  267. package/dist/flap/index.d.ts +10 -0
  268. package/dist/flap/index.js +8 -0
  269. package/dist/flows/create.d.ts +2 -1
  270. package/dist/flows/create.js +6 -6
  271. package/dist/flows/index.d.ts +1 -0
  272. package/dist/flows/index.js +1 -0
  273. package/dist/index.d.ts +20 -85
  274. package/dist/index.js +20 -215
  275. package/dist/merkle/index.d.ts +12 -0
  276. package/dist/merkle/index.js +11 -0
  277. package/dist/shared/abis/common.d.ts +2 -83
  278. package/dist/shared/abis/common.js +2 -252
  279. package/dist/shared/abis/index.d.ts +5 -6
  280. package/dist/shared/abis/index.js +5 -7
  281. package/dist/shared/clients/blockrazor.js +39 -25
  282. package/dist/shared/clients/club48.d.ts +2 -2
  283. package/dist/shared/clients/club48.js +34 -29
  284. package/dist/shared/clients/emitservice.js +2 -0
  285. package/dist/shared/clients/four.d.ts +21 -6
  286. package/dist/shared/clients/four.js +29 -24
  287. package/dist/shared/clients/index.d.ts +8 -0
  288. package/dist/shared/clients/index.js +8 -0
  289. package/dist/shared/clients/merkle.js +27 -34
  290. package/dist/shared/constants/addresses.d.ts +1 -1
  291. package/dist/shared/constants/addresses.js +11 -2
  292. package/dist/shared/constants/chains.d.ts +1 -1
  293. package/dist/shared/constants/chains.js +1 -1
  294. package/dist/shared/constants/gas.d.ts +1 -1
  295. package/dist/shared/constants/gas.js +2 -6
  296. package/dist/shared/constants/index.d.ts +3 -0
  297. package/dist/shared/constants/index.js +1 -0
  298. package/dist/shared/constants/quote.d.ts +30 -0
  299. package/dist/shared/constants/quote.js +37 -0
  300. package/dist/shared/flap/abi.js +1 -1
  301. package/dist/shared/flap/constants.d.ts +1 -2
  302. package/dist/shared/flap/constants.js +2 -3
  303. package/dist/shared/flap/curve.js +3 -0
  304. package/dist/shared/flap/errors.d.ts +1 -4
  305. package/dist/shared/flap/errors.js +20 -1
  306. package/dist/shared/flap/index.d.ts +5 -4
  307. package/dist/shared/flap/index.js +5 -4
  308. package/dist/shared/flap/meta.d.ts +22 -18
  309. package/dist/shared/flap/meta.js +12 -17
  310. package/dist/shared/flap/permit.js +5 -2
  311. package/dist/shared/flap/pinata.d.ts +22 -6
  312. package/dist/shared/flap/pinata.js +21 -26
  313. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  314. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  315. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  316. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  317. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  318. package/dist/shared/flap/portal-bundle-merkle/core.js +96 -277
  319. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +7 -2
  320. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +107 -206
  321. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  322. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  323. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  324. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  325. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  326. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  327. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  328. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  329. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  330. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  331. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  332. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  333. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  334. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +88 -9
  335. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  336. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  337. package/dist/shared/flap/portal-bundle.js +55 -56
  338. package/dist/shared/flap/portal-create-token.d.ts +80 -0
  339. package/dist/shared/flap/portal-create-token.js +257 -0
  340. package/dist/shared/flap/portal.d.ts +14 -3
  341. package/dist/shared/flap/portal.js +50 -25
  342. package/dist/shared/flap/vanity.d.ts +1 -5
  343. package/dist/shared/flap/vanity.js +6 -17
  344. package/dist/shared/flap/vault.d.ts +17 -124
  345. package/dist/shared/flap/vault.js +67 -148
  346. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  347. package/dist/shared/foundation/dex/v3-path.js +35 -0
  348. package/dist/shared/foundation/gas/bundle-gas.d.ts +49 -0
  349. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  350. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  351. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  352. package/dist/shared/foundation/index.d.ts +13 -0
  353. package/dist/shared/foundation/index.js +12 -0
  354. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  355. package/dist/shared/foundation/nonce/nonce-manager.js +183 -0
  356. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  357. package/dist/shared/foundation/normalize-unknown.js +29 -0
  358. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  359. package/dist/shared/foundation/sdk-logger.js +12 -0
  360. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  361. package/dist/shared/foundation/tx/build-request.js +25 -0
  362. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  363. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  364. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
  365. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  366. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  367. package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
  368. package/dist/shared/foundation/types/erc20.d.ts +65 -0
  369. package/dist/shared/foundation/types/erc20.js +1 -0
  370. package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
  371. package/dist/shared/foundation/types/holders-maker.js +1 -0
  372. package/dist/shared/foundation/types/index.d.ts +7 -0
  373. package/dist/shared/foundation/types/index.js +1 -0
  374. package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
  375. package/dist/shared/foundation/types/lp-inspect.js +1 -0
  376. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  377. package/dist/shared/foundation/types/multicall.js +1 -0
  378. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  379. package/dist/shared/foundation/types/private-sale.js +1 -0
  380. package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
  381. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  382. package/dist/shared/four/tax-token.d.ts +1 -1
  383. package/dist/shared/four/tax-token.js +27 -7
  384. package/dist/shared/index.d.ts +6 -0
  385. package/dist/shared/index.js +4 -0
  386. package/dist/types/errors.d.ts +27 -0
  387. package/dist/types/errors.js +34 -0
  388. package/dist/utils/airdrop-sweep.d.ts +4 -76
  389. package/dist/utils/airdrop-sweep.js +42 -55
  390. package/dist/utils/bundle-helpers.d.ts +9 -243
  391. package/dist/utils/bundle-helpers.js +10 -584
  392. package/dist/utils/constants.d.ts +5 -61
  393. package/dist/utils/constants.js +5 -80
  394. package/dist/utils/contract-factory.d.ts +2 -4
  395. package/dist/utils/contract-factory.js +25 -18
  396. package/dist/utils/erc20.d.ts +7 -89
  397. package/dist/utils/erc20.js +94 -125
  398. package/dist/utils/errors.d.ts +12 -1
  399. package/dist/utils/errors.js +60 -1
  400. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  401. package/dist/utils/holders-maker/addresses.js +15 -0
  402. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  403. package/dist/utils/holders-maker/buy-tx.js +278 -0
  404. package/dist/utils/holders-maker/constants.d.ts +6 -0
  405. package/dist/utils/holders-maker/constants.js +7 -0
  406. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  407. package/dist/utils/holders-maker/disperse.js +90 -0
  408. package/dist/utils/holders-maker/routing.d.ts +4 -0
  409. package/dist/utils/holders-maker/routing.js +45 -0
  410. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  411. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  412. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  413. package/dist/utils/holders-maker-helpers.js +9 -0
  414. package/dist/utils/holders-maker.d.ts +2 -138
  415. package/dist/utils/holders-maker.js +26 -661
  416. package/dist/utils/hop-chains.d.ts +35 -0
  417. package/dist/utils/hop-chains.js +215 -0
  418. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  419. package/dist/utils/lp-inspect-helpers.js +109 -0
  420. package/dist/utils/lp-inspect.d.ts +2 -112
  421. package/dist/utils/lp-inspect.js +73 -223
  422. package/dist/utils/mpcExclusive.d.ts +2 -5
  423. package/dist/utils/mpcExclusive.js +4 -3
  424. package/dist/utils/private-sale.d.ts +2 -58
  425. package/dist/utils/private-sale.js +4 -15
  426. package/dist/utils/provider-factory.d.ts +4 -0
  427. package/dist/utils/provider-factory.js +10 -0
  428. package/dist/utils/quote-helpers.d.ts +4 -45
  429. package/dist/utils/quote-helpers.js +17 -74
  430. package/dist/utils/stealth-transfer.d.ts +2 -28
  431. package/dist/utils/stealth-transfer.js +31 -15
  432. package/dist/utils/swap-helpers.d.ts +2 -15
  433. package/dist/utils/swap-helpers.js +6 -11
  434. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  435. package/dist/utils/types/airdrop-sweep.js +1 -0
  436. package/dist/utils/types/contract-factory.d.ts +1 -0
  437. package/dist/utils/types/contract-factory.js +1 -0
  438. package/dist/utils/types/erc20.d.ts +1 -0
  439. package/dist/utils/types/erc20.js +1 -0
  440. package/dist/utils/types/errors.d.ts +1 -0
  441. package/dist/utils/types/errors.js +1 -0
  442. package/dist/utils/types/holders-maker.d.ts +1 -0
  443. package/dist/utils/types/holders-maker.js +1 -0
  444. package/dist/utils/types/hop-chains.d.ts +8 -0
  445. package/dist/utils/types/hop-chains.js +1 -0
  446. package/dist/utils/types/index.d.ts +13 -0
  447. package/dist/utils/types/index.js +1 -0
  448. package/dist/utils/types/lp-inspect.d.ts +1 -0
  449. package/dist/utils/types/lp-inspect.js +1 -0
  450. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  451. package/dist/utils/types/mpc-exclusive.js +1 -0
  452. package/dist/utils/types/private-sale.d.ts +1 -0
  453. package/dist/utils/types/private-sale.js +1 -0
  454. package/dist/utils/types/quote-helpers.d.ts +1 -0
  455. package/dist/utils/types/quote-helpers.js +1 -0
  456. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  457. package/dist/utils/types/stealth-transfer.js +1 -0
  458. package/dist/utils/types/wallet.d.ts +25 -0
  459. package/dist/utils/types/wallet.js +1 -0
  460. package/dist/utils/wallet.d.ts +2 -25
  461. package/dist/utils/wallet.js +13 -10
  462. package/dist/vanity/index.d.ts +5 -0
  463. package/dist/vanity/index.js +5 -0
  464. package/package.json +160 -4
  465. package/src/abis/contracts/TaxToken.json +969 -0
  466. package/src/abis/contracts/TokenManager.json +836 -0
  467. package/src/abis/contracts/TokenManager2.json +136 -0
  468. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  469. package/dist/shared/abis/TaxToken.json +0 -105
  470. package/dist/shared/abis/TokenManager2.json +0 -60
  471. /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
  472. /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
@@ -7,11 +7,12 @@
7
7
  * - V3 Quoter (BSC): 0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997
8
8
  */
9
9
  import { ethers, Wallet, JsonRpcProvider, Contract, Interface } from 'ethers';
10
- import { NonceManager, getOptimizedGasPrice, getDeadline, encodeV3Path, buildProfitHopTransactions, PROFIT_HOP_COUNT } from '../../../utils/bundle-helpers.js';
11
- import { ADDRESSES, ZERO_ADDRESS } from '../../../utils/constants.js';
10
+ import { NonceManager, getOptimizedGasPrice, getDeadline, encodeV3Path, buildProfitHopTransactions, PROFIT_HOP_COUNT, } from '../../../utils/bundle-helpers.js';
11
+ import { ADDRESSES, ZERO_ADDRESS } from '../../../shared/constants/index.js';
12
12
  import { GAS_LIMITS } from '../../constants/index.js';
13
13
  import { MULTICALL3_ABI, V2_ROUTER_ABI, V3_ROUTER02_ABI, V3_QUOTER_ABI, ERC20_ABI } from '../../abis/common.js';
14
- import { CHAIN_ID_MAP, getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, calculateBatchProfit, getProfitRecipient, getBribeAmount, BLOCKRAZOR_BUILDER_EOA } from './config.js';
14
+ import { getErrorMessageFromUnknown } from '../../foundation/index.js';
15
+ import { CHAIN_ID_MAP, getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, calculateBatchProfit, getProfitRecipient, getBribeAmount, BLOCKRAZOR_BUILDER_EOA, } from './config.js';
15
16
  // ==================== 常量 ====================
16
17
  const MULTICALL3_ADDRESS = ADDRESSES.BSC.Multicall3;
17
18
  const WBNB_ADDRESS = ADDRESSES.BSC.WBNB;
@@ -79,7 +80,9 @@ function needSendBNB(routeType, params, useNativeToken = true) {
79
80
  if (routeType === 'v3-single' && params.v3TokenIn && params.v3TokenIn.toLowerCase() === WBNB_ADDRESS.toLowerCase()) {
80
81
  return true;
81
82
  }
82
- if (routeType === 'v3-multi' && params.v3ExactTokenIn && params.v3ExactTokenIn.toLowerCase() === WBNB_ADDRESS.toLowerCase()) {
83
+ if (routeType === 'v3-multi' &&
84
+ params.v3ExactTokenIn &&
85
+ params.v3ExactTokenIn.toLowerCase() === WBNB_ADDRESS.toLowerCase()) {
83
86
  return true;
84
87
  }
85
88
  return false;
@@ -119,23 +122,22 @@ async function buildV3SingleTransactions(routers, wallets, tokenIn, tokenOut, fe
119
122
  const v3RouterIface = new Interface(V3_ROUTER_ABI);
120
123
  return Promise.all(routers.map(async (router, i) => {
121
124
  const isTokenOutWBNB = tokenOut.toLowerCase() === WBNB_ADDRESS.toLowerCase();
122
- const exactInputSingleData = v3RouterIface.encodeFunctionData('exactInputSingle', [{
125
+ const exactInputSingleData = v3RouterIface.encodeFunctionData('exactInputSingle', [
126
+ {
123
127
  tokenIn: tokenIn,
124
128
  tokenOut: tokenOut,
125
129
  fee: fee,
126
130
  recipient: isTokenOutWBNB ? PANCAKE_V3_ROUTER_ADDRESS : wallets[i].address,
127
131
  amountIn: amountsWei[i],
128
132
  amountOutMinimum: minOuts[i],
129
- sqrtPriceLimitX96: 0n
130
- }]);
133
+ sqrtPriceLimitX96: 0n,
134
+ },
135
+ ]);
131
136
  if (isBuy && needBNB) {
132
137
  return router.multicall.populateTransaction(deadline, [exactInputSingleData], { value: amountsWei[i] });
133
138
  }
134
139
  else if (!isBuy && isTokenOutWBNB) {
135
- const unwrapData = v3RouterIface.encodeFunctionData('unwrapWETH9', [
136
- minOuts[i],
137
- wallets[i].address
138
- ]);
140
+ const unwrapData = v3RouterIface.encodeFunctionData('unwrapWETH9', [minOuts[i], wallets[i].address]);
139
141
  return router.multicall.populateTransaction(deadline, [exactInputSingleData, unwrapData]);
140
142
  }
141
143
  else {
@@ -163,21 +165,25 @@ async function buildV3MultiHopTransactions(routers, wallets, tokens, fees, amoun
163
165
  const isTokenOutWBNB = tokenOut.toLowerCase() === WBNB_ADDRESS.toLowerCase();
164
166
  return Promise.all(routers.map(async (router, i) => {
165
167
  if (isBuy && needBNB) {
166
- const swapData = v3RouterIface.encodeFunctionData('exactInput', [{
168
+ const swapData = v3RouterIface.encodeFunctionData('exactInput', [
169
+ {
167
170
  path: forwardPath,
168
171
  recipient: wallets[i].address,
169
172
  amountIn: amountsWei[i],
170
- amountOutMinimum: minOuts[i]
171
- }]);
173
+ amountOutMinimum: minOuts[i],
174
+ },
175
+ ]);
172
176
  return router.multicall.populateTransaction(deadline, [swapData], { value: amountsWei[i] });
173
177
  }
174
178
  else if (!isBuy) {
175
- const swapData = v3RouterIface.encodeFunctionData('exactInput', [{
179
+ const swapData = v3RouterIface.encodeFunctionData('exactInput', [
180
+ {
176
181
  path: reversePath,
177
182
  recipient: isTokenOutWBNB ? PANCAKE_V3_ROUTER_ADDRESS : wallets[i].address,
178
183
  amountIn: amountsWei[i],
179
- amountOutMinimum: minOuts[i]
180
- }]);
184
+ amountOutMinimum: minOuts[i],
185
+ },
186
+ ]);
181
187
  if (isTokenOutWBNB) {
182
188
  const unwrapData = v3RouterIface.encodeFunctionData('unwrapWETH9', [minOuts[i], wallets[i].address]);
183
189
  return router.multicall.populateTransaction(deadline, [swapData, unwrapData]);
@@ -185,12 +191,14 @@ async function buildV3MultiHopTransactions(routers, wallets, tokens, fees, amoun
185
191
  return router.multicall.populateTransaction(deadline, [swapData]);
186
192
  }
187
193
  else {
188
- const swapData = v3RouterIface.encodeFunctionData('exactInput', [{
194
+ const swapData = v3RouterIface.encodeFunctionData('exactInput', [
195
+ {
189
196
  path: forwardPath,
190
197
  recipient: wallets[i].address,
191
198
  amountIn: amountsWei[i],
192
- amountOutMinimum: minOuts[i]
193
- }]);
199
+ amountOutMinimum: minOuts[i],
200
+ },
201
+ ]);
194
202
  return router.multicall.populateTransaction(deadline, [swapData]);
195
203
  }
196
204
  }));
@@ -215,7 +223,7 @@ export async function approvePancakeProxy(params) {
215
223
  const receipt = await tx.wait();
216
224
  return {
217
225
  txHash: receipt.hash,
218
- approved: receipt.status === 1
226
+ approved: receipt.status === 1,
219
227
  };
220
228
  }
221
229
  /**
@@ -231,9 +239,9 @@ export async function approvePancakeProxyBatch(params) {
231
239
  const provider = getCachedProvider(chain, config.rpcUrl, chainId);
232
240
  const gasPrice = await getOptimizedGasPrice(provider, getGasPriceConfig(config));
233
241
  const decimals = await getTokenDecimals(tokenAddress, provider);
234
- const wallets = privateKeys.map(k => new Wallet(k, provider));
235
- const amountsBigInt = amounts.map(a => a === 'max' ? ethers.MaxUint256 : ethers.parseUnits(a, decimals));
236
- const tokens = wallets.map(w => new Contract(tokenAddress, ERC20_ABI, w));
242
+ const wallets = privateKeys.map((k) => new Wallet(k, provider));
243
+ const amountsBigInt = amounts.map((a) => (a === 'max' ? ethers.MaxUint256 : ethers.parseUnits(a, decimals)));
244
+ const tokens = wallets.map((w) => new Contract(tokenAddress, ERC20_ABI, w));
237
245
  const allowances = await Promise.all(tokens.map((token, i) => token.allowance(wallets[i].address, approvalTarget)));
238
246
  const needApproval = wallets.filter((_, i) => allowances[i] < amountsBigInt[i]);
239
247
  const needApprovalAmounts = amountsBigInt.filter((amount, i) => allowances[i] < amount);
@@ -242,14 +250,14 @@ export async function approvePancakeProxyBatch(params) {
242
250
  success: true,
243
251
  approvedCount: 0,
244
252
  signedTransactions: [],
245
- message: '所有钱包已授权'
253
+ message: '所有钱包已授权',
246
254
  };
247
255
  }
248
- const needApprovalTokens = needApproval.map(w => new Contract(tokenAddress, ERC20_ABI, w));
256
+ const needApprovalTokens = needApproval.map((w) => new Contract(tokenAddress, ERC20_ABI, w));
249
257
  const unsignedApprovals = await Promise.all(needApprovalTokens.map((token, i) => token.approve.populateTransaction(approvalTarget, needApprovalAmounts[i])));
250
258
  const finalGasLimit = getGasLimit(config);
251
259
  const nonceManager = new NonceManager(provider);
252
- const nonces = await Promise.all(needApproval.map(w => nonceManager.getNextNonce(w)));
260
+ const nonces = await Promise.all(needApproval.map((w) => nonceManager.getNextNonce(w)));
253
261
  const signedTxs = await Promise.all(unsignedApprovals.map((unsigned, i) => needApproval[i].signTransaction({
254
262
  ...unsigned,
255
263
  from: needApproval[i].address,
@@ -257,7 +265,7 @@ export async function approvePancakeProxyBatch(params) {
257
265
  gasLimit: finalGasLimit,
258
266
  gasPrice,
259
267
  chainId,
260
- type: getTxType(config)
268
+ type: getTxType(config),
261
269
  })));
262
270
  nonceManager.clearTemp();
263
271
  const txHashes = [];
@@ -268,7 +276,7 @@ export async function approvePancakeProxyBatch(params) {
268
276
  txHashes.push(tx.hash);
269
277
  }
270
278
  catch (error) {
271
- errors.push(`钱包 ${i} 授权失败: ${error.message}`);
279
+ errors.push(`钱包 ${i} 授权失败: ${getErrorMessageFromUnknown(error)}`);
272
280
  }
273
281
  }
274
282
  const successCount = txHashes.length;
@@ -278,7 +286,7 @@ export async function approvePancakeProxyBatch(params) {
278
286
  approvedCount: successCount,
279
287
  signedTransactions: signedTxs,
280
288
  txHashes,
281
- message: `授权成功,共 ${successCount} 个钱包${errors.length > 0 ? `,${errors.length} 个失败` : ''}`
289
+ message: `授权成功,共 ${successCount} 个钱包${errors.length > 0 ? `,${errors.length} 个失败` : ''}`,
282
290
  };
283
291
  }
284
292
  else {
@@ -287,7 +295,7 @@ export async function approvePancakeProxyBatch(params) {
287
295
  approvedCount: 0,
288
296
  signedTransactions: signedTxs,
289
297
  txHashes: [],
290
- message: `授权失败: ${errors.join('; ')}`
298
+ message: `授权失败: ${errors.join('; ')}`,
291
299
  };
292
300
  }
293
301
  }
@@ -301,13 +309,13 @@ export async function pancakeProxyBatchBuyMerkle(params) {
301
309
  }
302
310
  const chainId = CHAIN_ID_MAP[chain];
303
311
  const provider = getCachedProvider(chain, config.rpcUrl, chainId);
304
- const buyers = privateKeys.map(k => new Wallet(k, provider));
305
- const extractProfit = shouldExtractProfit(config);
312
+ const buyers = privateKeys.map((k) => new Wallet(k, provider));
313
+ const extractProfit = shouldExtractProfit();
306
314
  const nonceManager = new NonceManager(provider);
307
315
  const finalGasLimit = getGasLimit(config);
308
316
  const useNativeToken = isUsingNativeToken(quoteToken);
309
- const originalAmountsWei = buyAmounts.map(amount => ethers.parseEther(amount));
310
- const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei, config);
317
+ const originalAmountsWei = buyAmounts.map((amount) => ethers.parseEther(amount));
318
+ const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei);
311
319
  const maxFundsIndex = findMaxAmountIndex(originalAmountsWei);
312
320
  const shouldExtractProfitForBuy = extractProfit && useNativeToken;
313
321
  const nativeProfitAmount = shouldExtractProfitForBuy ? totalProfit : 0n;
@@ -315,18 +323,17 @@ export async function pancakeProxyBatchBuyMerkle(params) {
315
323
  if (!useNativeToken && quoteTokenDecimals !== undefined && quoteTokenDecimals !== 18) {
316
324
  const decimalsDiff = 18 - quoteTokenDecimals;
317
325
  const divisor = BigInt(10 ** decimalsDiff);
318
- actualAmountsWei = remainingAmounts.map(amount => amount / divisor);
326
+ actualAmountsWei = remainingAmounts.map((amount) => amount / divisor);
319
327
  }
320
328
  const presetGasPrice = config.gasPrice;
321
329
  const presetNonces = config.nonces;
322
- const [gasPrice, tokenDecimals, nonces] = await Promise.all([
330
+ const [gasPrice, nonces] = await Promise.all([
323
331
  presetGasPrice !== undefined
324
332
  ? Promise.resolve(presetGasPrice)
325
333
  : getOptimizedGasPrice(provider, getGasPriceConfig(config)),
326
- getTokenDecimals(tokenAddress, provider),
327
334
  presetNonces && presetNonces.length === buyers.length
328
335
  ? Promise.resolve(presetNonces)
329
- : allocateProfitAwareNonces(buyers, shouldExtractProfitForBuy, maxFundsIndex, nativeProfitAmount, nonceManager)
336
+ : allocateProfitAwareNonces(buyers, shouldExtractProfitForBuy, maxFundsIndex, nativeProfitAmount, nonceManager),
330
337
  ]);
331
338
  const minOuts = new Array(buyers.length).fill(0n);
332
339
  const needBNB = needSendBNB(routeType, params, useNativeToken);
@@ -337,14 +344,14 @@ export async function pancakeProxyBatchBuyMerkle(params) {
337
344
  if (!params.v2Path || params.v2Path.length < 2) {
338
345
  throw new Error('v2Path is required for V2 routing');
339
346
  }
340
- routers = buyers.map(w => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
347
+ routers = buyers.map((w) => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
341
348
  unsignedBuys = await buildV2Transactions(routers, buyers, actualAmountsWei, minOuts, params.v2Path, true, needBNB);
342
349
  }
343
350
  else if (routeType === 'v3-single') {
344
351
  if (!params.v3TokenIn || !params.v3Fee) {
345
352
  throw new Error('v3TokenIn and v3Fee are required for V3 single-hop');
346
353
  }
347
- routers = buyers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
354
+ routers = buyers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
348
355
  unsignedBuys = await buildV3SingleTransactions(routers, buyers, params.v3TokenIn, tokenAddress, params.v3Fee, actualAmountsWei, minOuts, true, needBNB);
349
356
  }
350
357
  else if (routeType === 'v3-multi') {
@@ -355,7 +362,7 @@ export async function pancakeProxyBatchBuyMerkle(params) {
355
362
  if (!params.v3Fees || params.v3Fees.length !== params.v3Tokens.length - 1) {
356
363
  throw new Error(`v3Fees 长度必须等于 v3Tokens 长度 - 1`);
357
364
  }
358
- routers = buyers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
365
+ routers = buyers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
359
366
  unsignedBuys = await buildV3MultiHopTransactions(routers, buyers, params.v3Tokens, params.v3Fees, actualAmountsWei, minOuts, true, needBNB);
360
367
  }
361
368
  else {
@@ -379,11 +386,11 @@ export async function pancakeProxyBatchBuyMerkle(params) {
379
386
  gasPrice,
380
387
  gasLimit: GAS_LIMITS.BRIBE,
381
388
  chainId,
382
- type: txType
389
+ type: txType,
383
390
  }));
384
391
  }
385
392
  unsignedBuys.forEach((unsigned, i) => {
386
- const txValue = useNativeToken ? unsigned.value : 0n;
393
+ const txValue = useNativeToken ? (unsigned.value ?? 0n) : 0n;
387
394
  signPromises.push(buyers[i].signTransaction({
388
395
  ...unsigned,
389
396
  from: buyers[i].address,
@@ -392,7 +399,7 @@ export async function pancakeProxyBatchBuyMerkle(params) {
392
399
  gasPrice,
393
400
  chainId,
394
401
  type: txType,
395
- value: txValue
402
+ value: txValue,
396
403
  }));
397
404
  });
398
405
  const signedTxs = await Promise.all(signPromises);
@@ -409,7 +416,7 @@ export async function pancakeProxyBatchBuyMerkle(params) {
409
416
  gasPrice,
410
417
  chainId,
411
418
  txType,
412
- startNonce: profitNonce
419
+ startNonce: profitNonce,
413
420
  });
414
421
  signedTxs.push(...profitHopResult.signedTransactions);
415
422
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -417,7 +424,7 @@ export async function pancakeProxyBatchBuyMerkle(params) {
417
424
  nonceManager.clearTemp();
418
425
  return {
419
426
  signedTransactions: signedTxs,
420
- profitHopWallets // ✅ 返回利润多跳钱包
427
+ profitHopWallets, // ✅ 返回利润多跳钱包
421
428
  };
422
429
  }
423
430
  /**
@@ -430,9 +437,9 @@ export async function pancakeProxyBatchSellMerkle(params) {
430
437
  }
431
438
  const chainId = CHAIN_ID_MAP[chain];
432
439
  const provider = getCachedProvider(chain, config.rpcUrl, chainId);
433
- const sellers = privateKeys.map(k => new Wallet(k, provider));
440
+ const sellers = privateKeys.map((k) => new Wallet(k, provider));
434
441
  const finalGasLimit = getGasLimit(config);
435
- const extractProfit = shouldExtractProfit(config);
442
+ const extractProfit = shouldExtractProfit();
436
443
  const nonceManager = new NonceManager(provider);
437
444
  const presetGasPrice = config.gasPrice;
438
445
  const presetNonces = config.nonces;
@@ -440,9 +447,9 @@ export async function pancakeProxyBatchSellMerkle(params) {
440
447
  presetGasPrice !== undefined
441
448
  ? Promise.resolve(presetGasPrice)
442
449
  : getOptimizedGasPrice(provider, getGasPriceConfig(config)),
443
- getTokenDecimals(tokenAddress, provider)
450
+ getTokenDecimals(tokenAddress, provider),
444
451
  ]);
445
- const amountsWei = sellAmounts.map(amount => ethers.parseUnits(amount, tokenDecimals));
452
+ const amountsWei = sellAmounts.map((amount) => ethers.parseUnits(amount, tokenDecimals));
446
453
  // 获取报价
447
454
  let quotedOutputs;
448
455
  if (routeType === 'v2' && params.v2Path && params.v2Path.length >= 2) {
@@ -457,7 +464,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
457
464
  tokenOut: params.v3TokenOut,
458
465
  amountIn: amount,
459
466
  fee: params.v3Fee,
460
- sqrtPriceLimitX96: 0
467
+ sqrtPriceLimitX96: 0,
461
468
  });
462
469
  return result[0];
463
470
  }
@@ -478,7 +485,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
478
485
  for (let i = 0; i < sellers.length; i++) {
479
486
  const quoted = quotedOutputs[i];
480
487
  if (quoted > 0n) {
481
- const { profit } = calculateProfit(quoted, config);
488
+ const { profit } = calculateProfit(quoted);
482
489
  totalProfit += profit;
483
490
  if (quoted > maxRevenue) {
484
491
  maxRevenue = quoted;
@@ -505,9 +512,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
505
512
  else if (maxRevenueNonceCount > 1 && maxRevenueIndex >= 0) {
506
513
  const maxRevenueNonces = await nonceManager.getNextNonceBatch(sellers[maxRevenueIndex], maxRevenueNonceCount);
507
514
  const otherSellers = sellers.filter((_, i) => i !== maxRevenueIndex);
508
- const otherNonces = otherSellers.length > 0
509
- ? await nonceManager.getNextNoncesForWallets(otherSellers)
510
- : [];
515
+ const otherNonces = otherSellers.length > 0 ? await nonceManager.getNextNoncesForWallets(otherSellers) : [];
511
516
  nonces = [];
512
517
  let otherIdx = 0;
513
518
  let nonceIdx = 0;
@@ -536,14 +541,14 @@ export async function pancakeProxyBatchSellMerkle(params) {
536
541
  if (!params.v2Path || params.v2Path.length < 2) {
537
542
  throw new Error('v2Path is required for V2 routing');
538
543
  }
539
- routers = sellers.map(w => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
544
+ routers = sellers.map((w) => new Contract(PANCAKE_V2_ROUTER_ADDRESS, V2_ROUTER_ABI, w));
540
545
  unsignedSells = await buildV2Transactions(routers, sellers, amountsWei, minOuts, params.v2Path, false, false);
541
546
  }
542
547
  else if (routeType === 'v3-single') {
543
548
  if (!params.v3TokenOut || !params.v3Fee) {
544
549
  throw new Error('v3TokenOut and v3Fee are required for V3 single-hop');
545
550
  }
546
- routers = sellers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
551
+ routers = sellers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
547
552
  unsignedSells = await buildV3SingleTransactions(routers, sellers, tokenAddress, params.v3TokenOut, params.v3Fee, amountsWei, minOuts, false, false);
548
553
  }
549
554
  else if (routeType === 'v3-multi') {
@@ -554,7 +559,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
554
559
  if (!params.v3Fees || params.v3Fees.length !== params.v3Tokens.length - 1) {
555
560
  throw new Error(`v3Fees 长度必须等于 v3Tokens 长度 - 1`);
556
561
  }
557
- routers = sellers.map(w => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
562
+ routers = sellers.map((w) => new Contract(PANCAKE_V3_ROUTER_ADDRESS, V3_ROUTER_ABI, w));
558
563
  unsignedSells = await buildV3MultiHopTransactions(routers, sellers, params.v3Tokens, params.v3Fees, amountsWei, minOuts, false, false);
559
564
  }
560
565
  else {
@@ -570,7 +575,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
570
575
  gasPrice,
571
576
  gasLimit: GAS_LIMITS.BRIBE,
572
577
  chainId,
573
- type: txType
578
+ type: txType,
574
579
  }));
575
580
  }
576
581
  unsignedSells.forEach((unsigned, i) => {
@@ -583,7 +588,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
583
588
  gasPrice,
584
589
  chainId,
585
590
  type: txType,
586
- value: txValue
591
+ value: txValue,
587
592
  }));
588
593
  });
589
594
  const signedTxs = await Promise.all(signPromises);
@@ -599,7 +604,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
599
604
  gasPrice,
600
605
  chainId,
601
606
  txType,
602
- startNonce: profitNonce
607
+ startNonce: profitNonce,
603
608
  });
604
609
  signedTxs.push(...profitHopResult.signedTransactions);
605
610
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -607,7 +612,7 @@ export async function pancakeProxyBatchSellMerkle(params) {
607
612
  nonceManager.clearTemp();
608
613
  return {
609
614
  signedTransactions: signedTxs,
610
- profitHopWallets // ✅ 返回利润多跳钱包
615
+ profitHopWallets, // ✅ 返回利润多跳钱包
611
616
  };
612
617
  }
613
618
  // ==================== 内部工具函数 ====================
@@ -630,10 +635,10 @@ async function batchGetV2Quotes(provider, amountsWei, v2Path) {
630
635
  try {
631
636
  const v2RouterIface = new Interface(V2_ROUTER_ABI);
632
637
  const multicall = new Contract(MULTICALL3_ADDRESS, MULTICALL3_ABI, provider);
633
- const calls = amountsWei.map(amount => ({
638
+ const calls = amountsWei.map((amount) => ({
634
639
  target: PANCAKE_V2_ROUTER_ADDRESS,
635
640
  allowFailure: true,
636
- callData: v2RouterIface.encodeFunctionData('getAmountsOut', [amount, v2Path])
641
+ callData: v2RouterIface.encodeFunctionData('getAmountsOut', [amount, v2Path]),
637
642
  }));
638
643
  const results = await multicall.aggregate3.staticCall(calls);
639
644
  return results.map((r) => {
@@ -684,9 +689,7 @@ async function allocateProfitAwareNonces(wallets, extractProfit, maxIndex, total
684
689
  }
685
690
  const maxIndexNonces = await nonceManager.getNextNonceBatch(wallets[maxIndex], 2);
686
691
  const otherWallets = wallets.filter((_, i) => i !== maxIndex);
687
- const otherNonces = otherWallets.length > 0
688
- ? await nonceManager.getNextNoncesForWallets(otherWallets)
689
- : [];
692
+ const otherNonces = otherWallets.length > 0 ? await nonceManager.getNextNoncesForWallets(otherWallets) : [];
690
693
  const nonces = [];
691
694
  let otherIdx = 0;
692
695
  for (let i = 0; i < wallets.length; i++) {