four-flap-meme-sdk 2.2.19 → 3.0.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 (519) hide show
  1. package/dist/{shared/abis → abis}/common.d.ts +1 -1
  2. package/dist/{shared/abis → abis}/common.js +75 -91
  3. package/dist/abis/contracts/TaxToken.json +969 -0
  4. package/dist/abis/contracts/TokenManager2.json +136 -0
  5. package/dist/{shared/abis → abis/contracts}/index.d.ts +0 -1
  6. package/dist/{shared/abis → abis/contracts}/index.js +0 -2
  7. package/dist/abis/flap/index.d.ts +5 -0
  8. package/dist/abis/flap/index.js +5 -0
  9. package/dist/abis/flap/portal-eip7702.d.ts +4 -0
  10. package/dist/abis/flap/portal-eip7702.js +39 -0
  11. package/dist/abis/flap/portal-events.d.ts +6 -0
  12. package/dist/abis/flap/portal-events.js +17 -0
  13. package/dist/abis/flap/portal-merkle.d.ts +4 -0
  14. package/dist/abis/flap/portal-merkle.js +25 -0
  15. package/dist/abis/flap/portal.d.ts +6 -0
  16. package/dist/abis/flap/portal.js +37 -0
  17. package/dist/abis/flap/vault.d.ts +171 -0
  18. package/dist/abis/flap/vault.js +91 -0
  19. package/dist/abis/index.d.ts +6 -0
  20. package/dist/abis/index.js +9 -0
  21. package/dist/bundle/config-helpers.d.ts +37 -0
  22. package/dist/bundle/config-helpers.js +58 -0
  23. package/dist/bundle/errors.d.ts +50 -0
  24. package/dist/bundle/errors.js +38 -0
  25. package/dist/bundle/four-meme/approve-tokenmanager.d.ts +7 -0
  26. package/dist/bundle/four-meme/approve-tokenmanager.js +99 -0
  27. package/dist/bundle/four-meme/core-helpers.d.ts +8 -0
  28. package/dist/bundle/four-meme/core-helpers.js +41 -0
  29. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/core.d.ts +1 -1
  30. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/core.js +74 -150
  31. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/pancake-proxy.d.ts +1 -1
  32. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/pancake-proxy.js +85 -92
  33. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/private.d.ts +1 -1
  34. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/private.js +48 -59
  35. package/dist/bundle/four-meme/sign-context-helpers.d.ts +2 -0
  36. package/dist/bundle/four-meme/sign-context-helpers.js +2 -0
  37. package/dist/bundle/four-meme/swap-buy-first.d.ts +8 -0
  38. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-buy-first.js +56 -108
  39. package/dist/bundle/four-meme/swap-hop-helpers.d.ts +6 -0
  40. package/dist/bundle/four-meme/swap-hop-helpers.js +63 -0
  41. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-internal.js +4 -4
  42. package/dist/bundle/four-meme/swap-sign-helpers.d.ts +28 -0
  43. package/dist/bundle/four-meme/swap-sign-helpers.js +105 -0
  44. package/dist/bundle/four-meme/swap.d.ts +17 -0
  45. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap.js +84 -345
  46. package/dist/{contracts/tm-bundle-merkle/swap-buy-first.d.ts → bundle/four-meme/types/buy-first.d.ts} +11 -18
  47. package/dist/bundle/four-meme/types/core-flow.d.ts +63 -0
  48. package/dist/bundle/four-meme/types/core-flow.js +1 -0
  49. package/dist/{contracts/tm-bundle-merkle/types.d.ts → bundle/four-meme/types/index.d.ts} +130 -6
  50. package/dist/bundle/four-meme/types/index.js +1 -0
  51. package/dist/bundle/four-meme/types/swap-internal.d.ts +19 -0
  52. package/dist/bundle/four-meme/types/swap-internal.js +1 -0
  53. package/dist/bundle/four-meme/types.d.ts +1 -0
  54. package/dist/bundle/four-meme/utils-disperse.d.ts +7 -0
  55. package/dist/bundle/four-meme/utils-disperse.js +396 -0
  56. package/dist/bundle/four-meme/utils-pairwise.d.ts +8 -0
  57. package/dist/bundle/four-meme/utils-pairwise.js +328 -0
  58. package/dist/bundle/four-meme/utils-sweep.d.ts +8 -0
  59. package/dist/bundle/four-meme/utils-sweep.js +744 -0
  60. package/dist/bundle/index.d.ts +8 -0
  61. package/dist/bundle/index.js +8 -0
  62. package/dist/bundle/internal.d.ts +16 -0
  63. package/dist/bundle/internal.js +160 -0
  64. package/dist/bundle/sign-context-helpers.d.ts +26 -0
  65. package/dist/bundle/sign-context-helpers.js +63 -0
  66. package/dist/{contracts/tm-bundle-merkle → bundle}/submit.d.ts +6 -27
  67. package/dist/{contracts/tm-bundle-merkle → bundle}/submit.js +116 -313
  68. package/dist/bundle/types/index.d.ts +8 -0
  69. package/dist/bundle/types/index.js +1 -0
  70. package/dist/bundle/types.d.ts +1 -0
  71. package/dist/bundle/types.js +1 -0
  72. package/dist/chains/bsc/constants.js +1 -1
  73. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  74. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
  75. package/dist/chains/bsc/four/config.d.ts +5 -67
  76. package/dist/chains/bsc/four/config.js +2 -114
  77. package/dist/chains/bsc/four/core.d.ts +1 -4
  78. package/dist/chains/bsc/four/core.js +1 -592
  79. package/dist/chains/bsc/four/index.d.ts +6 -6
  80. package/dist/chains/bsc/four/index.js +6 -6
  81. package/dist/chains/bsc/four/internal.d.ts +2 -46
  82. package/dist/chains/bsc/four/internal.js +2 -239
  83. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  84. package/dist/chains/bsc/four/pancake-proxy.js +1 -687
  85. package/dist/chains/bsc/four/private.d.ts +1 -27
  86. package/dist/chains/bsc/four/private.js +1 -477
  87. package/dist/chains/bsc/four/submit.d.ts +2 -315
  88. package/dist/chains/bsc/four/submit.js +2 -752
  89. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  90. package/dist/chains/bsc/four/swap-buy-first.js +2 -507
  91. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  92. package/dist/chains/bsc/four/swap-internal.js +1 -18
  93. package/dist/chains/bsc/four/swap.d.ts +2 -144
  94. package/dist/chains/bsc/four/swap.js +2 -766
  95. package/dist/chains/bsc/four/types.d.ts +1 -476
  96. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  97. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  98. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  99. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  100. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  101. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  102. package/dist/chains/bsc/four/utils.d.ts +5 -18
  103. package/dist/chains/bsc/four/utils.js +5 -1552
  104. package/dist/chains/bsc/iro.d.ts +5 -0
  105. package/dist/chains/bsc/iro.js +4 -0
  106. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +155 -0
  107. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +80 -0
  108. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  109. package/dist/chains/bsc/pancake/bundle-buy-first.js +99 -214
  110. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  111. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  112. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  113. package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
  114. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  115. package/dist/chains/bsc/pancake/index.js +1 -3
  116. package/dist/chains/bsc/platforms/iro/constants.js +1 -1
  117. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  118. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  119. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  120. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  121. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  122. package/dist/chains/bsc/platforms/iro/token.js +5 -2
  123. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  124. package/dist/chains/eni/batch-router/transfer.js +57 -27
  125. package/dist/chains/eni/batch-router/utils.js +32 -6
  126. package/dist/chains/eni/bundler/sign.js +5 -6
  127. package/dist/chains/eni/bundler/submit.js +1 -4
  128. package/dist/chains/eni/constants.js +2 -2
  129. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  130. package/dist/chains/eni/flat-aliases.js +8 -0
  131. package/dist/chains/eni/index.d.ts +2 -1
  132. package/dist/chains/eni/index.js +1 -0
  133. package/dist/chains/eni/platforms/daoaas/create.js +3 -3
  134. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  135. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  136. package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
  137. package/dist/chains/eni/platforms/daoaas/portal-direct.js +29 -45
  138. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  139. package/dist/chains/eni/platforms/dswap/liquidity.js +59 -27
  140. package/dist/chains/eni/platforms/fair-launch/constants.js +1 -1
  141. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  142. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  143. package/dist/chains/eni/platforms/fair-launch/launcher.js +88 -47
  144. package/dist/chains/eni/platforms/fair-launch/pool.js +5 -2
  145. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  146. package/dist/chains/eni/platforms/iro/constants.d.ts +1 -1
  147. package/dist/chains/eni/platforms/iro/constants.js +2 -2
  148. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  149. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  150. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  151. package/dist/chains/eni/platforms/iro/index.js +4 -4
  152. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  153. package/dist/chains/eni/platforms/iro/token.js +108 -32
  154. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  155. package/dist/chains/eni/submit.d.ts +43 -0
  156. package/dist/chains/eni/submit.js +287 -0
  157. package/dist/chains/index.d.ts +13 -0
  158. package/dist/chains/index.js +13 -0
  159. package/dist/chains/monad/constants.js +1 -1
  160. package/dist/chains/xlayer/constants.d.ts +5 -0
  161. package/dist/chains/xlayer/constants.js +1 -1
  162. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  163. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
  164. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  165. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  166. package/dist/chains/xlayer/eip7702/bundle-create.js +104 -74
  167. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  168. package/dist/chains/xlayer/eip7702/bundle-sell.js +30 -112
  169. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  170. package/dist/chains/xlayer/eip7702/bundle-swap.js +52 -246
  171. package/dist/chains/xlayer/eip7702/constants.d.ts +11 -26
  172. package/dist/chains/xlayer/eip7702/constants.js +15 -68
  173. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  174. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  175. package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
  176. package/dist/chains/xlayer/eip7702/index.js +28 -81
  177. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  178. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  179. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  180. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +64 -308
  181. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  182. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +58 -0
  183. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  184. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  185. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  186. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  187. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  188. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  189. package/dist/chains/xlayer/eip7702/volume.js +89 -164
  190. package/dist/chains/xlayer/eoa/constants.d.ts +1 -1
  191. package/dist/chains/xlayer/eoa/constants.js +2 -16
  192. package/dist/chains/xlayer/eoa/dex-helpers.d.ts +1 -1
  193. package/dist/chains/xlayer/eoa/dex-helpers.js +7 -37
  194. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  195. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  196. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  197. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
  198. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  199. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
  200. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  201. package/dist/chains/xlayer/eoa/index.js +8 -23
  202. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  203. package/dist/chains/xlayer/eoa/router-manager.js +5 -4
  204. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  205. package/dist/chains/xlayer/eoa/types.js +1 -3
  206. package/dist/chains/xlayer/index.d.ts +3 -2
  207. package/dist/chains/xlayer/index.js +4 -7
  208. package/dist/core/amount/split-by-weight.d.ts +5 -0
  209. package/dist/core/amount/split-by-weight.js +35 -0
  210. package/dist/{shared → core}/clients/blockrazor.d.ts +4 -8
  211. package/dist/{shared → core}/clients/blockrazor.js +43 -35
  212. package/dist/{shared → core}/clients/club48.d.ts +2 -2
  213. package/dist/{shared → core}/clients/club48.js +36 -30
  214. package/dist/{shared → core}/clients/emitservice.js +2 -0
  215. package/dist/{shared → core}/clients/four.d.ts +21 -6
  216. package/dist/{shared → core}/clients/four.js +29 -24
  217. package/dist/core/clients/index.d.ts +8 -0
  218. package/dist/core/clients/index.js +8 -0
  219. package/dist/{shared → core}/clients/merkle.d.ts +4 -3
  220. package/dist/{shared → core}/clients/merkle.js +30 -47
  221. package/dist/{shared → core}/constants/addresses.d.ts +27 -1
  222. package/dist/{shared → core}/constants/addresses.js +39 -2
  223. package/dist/{shared → core}/constants/chains.d.ts +1 -1
  224. package/dist/{shared → core}/constants/chains.js +1 -1
  225. package/dist/{shared → core}/constants/gas.d.ts +1 -1
  226. package/dist/{shared → core}/constants/gas.js +2 -6
  227. package/dist/{shared → core}/constants/index.d.ts +5 -2
  228. package/dist/{shared → core}/constants/index.js +3 -2
  229. package/dist/core/constants/quote.d.ts +30 -0
  230. package/dist/core/constants/quote.js +37 -0
  231. package/dist/core/dex/v3-path.d.ts +6 -0
  232. package/dist/core/dex/v3-path.js +35 -0
  233. package/dist/core/erc20/decimals.d.ts +7 -0
  234. package/dist/core/erc20/decimals.js +24 -0
  235. package/dist/{utils → core}/erc20.d.ts +7 -89
  236. package/dist/{utils → core}/erc20.js +99 -130
  237. package/dist/core/foundation.d.ts +15 -0
  238. package/dist/core/foundation.js +14 -0
  239. package/dist/core/gas/bundle-gas.d.ts +49 -0
  240. package/dist/core/gas/bundle-gas.js +93 -0
  241. package/dist/core/gas/profit-hop.d.ts +20 -0
  242. package/dist/core/gas/profit-hop.js +72 -0
  243. package/dist/core/index.d.ts +5 -0
  244. package/dist/core/index.js +5 -0
  245. package/dist/core/legacy-types/errors.d.ts +27 -0
  246. package/dist/core/legacy-types/errors.js +34 -0
  247. package/dist/core/nonce/nonce-manager.d.ts +19 -0
  248. package/dist/core/nonce/nonce-manager.js +217 -0
  249. package/dist/core/normalize-unknown.d.ts +9 -0
  250. package/dist/core/normalize-unknown.js +29 -0
  251. package/dist/core/sdk-logger.d.ts +13 -0
  252. package/dist/core/sdk-logger.js +12 -0
  253. package/dist/core/shared-abis/common.d.ts +4 -0
  254. package/dist/core/shared-abis/common.js +4 -0
  255. package/dist/core/shared-abis/index.d.ts +5 -0
  256. package/dist/core/shared-abis/index.js +5 -0
  257. package/dist/core/tx/build-request.d.ts +17 -0
  258. package/dist/core/tx/build-request.js +25 -0
  259. package/dist/core/tx/sign-batch.d.ts +5 -0
  260. package/dist/core/tx/sign-batch.js +26 -0
  261. package/dist/core/tx/wallet-sign-patch.d.ts +1 -0
  262. package/dist/core/tx/wallet-sign-patch.js +18 -0
  263. package/dist/core/types/airdrop-sweep.d.ts +79 -0
  264. package/dist/core/types/airdrop-sweep.js +1 -0
  265. package/dist/core/types/erc20.d.ts +65 -0
  266. package/dist/core/types/erc20.js +1 -0
  267. package/dist/core/types/holders-maker.d.ts +64 -0
  268. package/dist/core/types/holders-maker.js +1 -0
  269. package/dist/core/types/index.d.ts +7 -0
  270. package/dist/core/types/index.js +1 -0
  271. package/dist/{utils → core/types}/lp-inspect.d.ts +4 -52
  272. package/dist/core/types/lp-inspect.js +1 -0
  273. package/dist/core/types/multicall.d.ts +5 -0
  274. package/dist/core/types/multicall.js +1 -0
  275. package/dist/core/types/private-sale.d.ts +35 -0
  276. package/dist/core/types/private-sale.js +1 -0
  277. package/dist/core/types/quote-helpers.d.ts +17 -0
  278. package/dist/core/types/quote-helpers.js +1 -0
  279. package/dist/core/types-erc20.d.ts +1 -0
  280. package/dist/core/types-erc20.js +1 -0
  281. package/dist/core/wallet/generate.d.ts +5 -0
  282. package/dist/core/wallet/generate.js +8 -0
  283. package/dist/domains/dex/direct-router-helpers.d.ts +269 -0
  284. package/dist/domains/dex/direct-router-helpers.js +536 -0
  285. package/dist/domains/dex/direct-router.d.ts +28 -0
  286. package/dist/{dex → domains/dex}/direct-router.js +246 -674
  287. package/dist/domains/dex/types.d.ts +81 -0
  288. package/dist/domains/dex/types.js +1 -0
  289. package/dist/{shared → domains}/flap/abi.js +1 -1
  290. package/dist/{shared → domains}/flap/constants.d.ts +1 -2
  291. package/dist/{shared → domains}/flap/constants.js +3 -4
  292. package/dist/{shared → domains}/flap/curve.js +3 -0
  293. package/dist/{shared → domains}/flap/errors.d.ts +1 -4
  294. package/dist/{shared → domains}/flap/errors.js +20 -1
  295. package/dist/domains/flap/index.d.ts +7 -0
  296. package/dist/domains/flap/index.js +5 -0
  297. package/dist/{shared → domains}/flap/meta.d.ts +22 -18
  298. package/dist/{shared → domains}/flap/meta.js +32 -24
  299. package/dist/{shared/flap/index.d.ts → domains/flap/module.d.ts} +4 -5
  300. package/dist/{shared/flap/index.js → domains/flap/module.js} +4 -5
  301. package/dist/{shared → domains}/flap/permit.js +10 -3
  302. package/dist/{shared → domains}/flap/pinata.d.ts +22 -6
  303. package/dist/{shared → domains}/flap/pinata.js +21 -26
  304. package/dist/domains/flap/portal-bundle-merkle/config.d.ts +10 -0
  305. package/dist/domains/flap/portal-bundle-merkle/config.js +13 -0
  306. package/dist/domains/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  307. package/dist/domains/flap/portal-bundle-merkle/core-helpers.js +83 -0
  308. package/dist/{shared → domains}/flap/portal-bundle-merkle/core.d.ts +0 -4
  309. package/dist/{shared → domains}/flap/portal-bundle-merkle/core.js +168 -175
  310. package/dist/{shared → domains}/flap/portal-bundle-merkle/create-to-dex.d.ts +17 -4
  311. package/dist/{shared → domains}/flap/portal-bundle-merkle/create-to-dex.js +97 -118
  312. package/dist/{shared → domains}/flap/portal-bundle-merkle/curve-to-dex.js +105 -123
  313. package/dist/domains/flap/portal-bundle-merkle/index.d.ts +18 -0
  314. package/dist/{shared → domains}/flap/portal-bundle-merkle/index.js +4 -7
  315. package/dist/{shared → domains}/flap/portal-bundle-merkle/pancake-proxy.js +73 -70
  316. package/dist/{shared → domains}/flap/portal-bundle-merkle/private.js +63 -116
  317. package/dist/domains/flap/portal-bundle-merkle/swap-batch.d.ts +8 -0
  318. package/dist/domains/flap/portal-bundle-merkle/swap-batch.js +227 -0
  319. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  320. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  321. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first.d.ts +2 -0
  322. package/dist/{shared → domains}/flap/portal-bundle-merkle/swap-buy-first.js +69 -288
  323. package/dist/domains/flap/portal-bundle-merkle/swap-cross.d.ts +9 -0
  324. package/dist/domains/flap/portal-bundle-merkle/swap-cross.js +139 -0
  325. package/dist/domains/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  326. package/dist/domains/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  327. package/dist/domains/flap/portal-bundle-merkle/swap-planning.d.ts +70 -0
  328. package/dist/domains/flap/portal-bundle-merkle/swap-planning.js +182 -0
  329. package/dist/domains/flap/portal-bundle-merkle/swap-quick-batch.d.ts +16 -0
  330. package/dist/domains/flap/portal-bundle-merkle/swap-quick-batch.js +327 -0
  331. package/dist/domains/flap/portal-bundle-merkle/swap-single.d.ts +2 -0
  332. package/dist/domains/flap/portal-bundle-merkle/swap-single.js +184 -0
  333. package/dist/domains/flap/portal-bundle-merkle/swap-types.d.ts +101 -0
  334. package/dist/domains/flap/portal-bundle-merkle/swap-types.js +1 -0
  335. package/dist/domains/flap/portal-bundle-merkle/swap.d.ts +8 -0
  336. package/dist/domains/flap/portal-bundle-merkle/swap.js +7 -0
  337. package/dist/{shared → domains}/flap/portal-bundle-merkle/types.d.ts +88 -12
  338. package/dist/domains/flap/portal-bundle-merkle/types.js +1 -0
  339. package/dist/domains/flap/portal-bundle-merkle/utils.d.ts +10 -0
  340. package/dist/{shared → domains}/flap/portal-bundle-merkle/utils.js +145 -265
  341. package/dist/{shared → domains}/flap/portal-bundle.d.ts +2 -2
  342. package/dist/{shared → domains}/flap/portal-bundle.js +84 -79
  343. package/dist/domains/flap/portal-create-token.d.ts +81 -0
  344. package/dist/domains/flap/portal-create-token.js +255 -0
  345. package/dist/{shared → domains}/flap/portal.d.ts +1 -2
  346. package/dist/{shared → domains}/flap/portal.js +36 -28
  347. package/dist/{shared → domains}/flap/vanity.d.ts +6 -6
  348. package/dist/{shared → domains}/flap/vanity.js +15 -21
  349. package/dist/{shared → domains}/flap/vault.d.ts +25 -93
  350. package/dist/{shared → domains}/flap/vault.js +77 -127
  351. package/dist/{flows → domains/flows}/create.d.ts +2 -1
  352. package/dist/{flows → domains/flows}/create.js +8 -8
  353. package/dist/domains/flows/index.d.ts +9 -0
  354. package/dist/domains/flows/index.js +9 -0
  355. package/dist/{contracts → domains/four/contracts}/helper3.d.ts +20 -5
  356. package/dist/{contracts → domains/four/contracts}/helper3.js +56 -20
  357. package/dist/domains/four/contracts/tm-bundle-helpers.d.ts +88 -0
  358. package/dist/domains/four/contracts/tm-bundle-helpers.js +73 -0
  359. package/dist/{contracts → domains/four/contracts}/tm-bundle.d.ts +4 -52
  360. package/dist/{contracts → domains/four/contracts}/tm-bundle.js +122 -189
  361. package/dist/{contracts → domains/four/contracts}/tm.d.ts +10 -8
  362. package/dist/{contracts → domains/four/contracts}/tm.js +39 -35
  363. package/dist/{contracts → domains/four/contracts}/tm1.js +9 -4
  364. package/dist/{contracts → domains/four/contracts}/tm2.js +10 -5
  365. package/dist/domains/four/index.d.ts +7 -0
  366. package/dist/domains/four/index.js +7 -0
  367. package/dist/{shared → domains}/four/tax-token.d.ts +1 -1
  368. package/dist/{shared → domains}/four/tax-token.js +31 -10
  369. package/dist/domains/holders/holders-maker-helpers.d.ts +9 -0
  370. package/dist/domains/holders/holders-maker-helpers.js +9 -0
  371. package/dist/domains/holders/holders-maker.d.ts +18 -0
  372. package/dist/domains/holders/holders-maker.js +324 -0
  373. package/dist/domains/holders/index.d.ts +1 -0
  374. package/dist/domains/holders/index.js +1 -0
  375. package/dist/domains/holders/internal/addresses.d.ts +12 -0
  376. package/dist/domains/holders/internal/addresses.js +15 -0
  377. package/dist/domains/holders/internal/buy-tx.d.ts +44 -0
  378. package/dist/domains/holders/internal/buy-tx.js +278 -0
  379. package/dist/domains/holders/internal/constants.d.ts +6 -0
  380. package/dist/domains/holders/internal/constants.js +7 -0
  381. package/dist/domains/holders/internal/disperse.d.ts +18 -0
  382. package/dist/domains/holders/internal/disperse.js +90 -0
  383. package/dist/domains/holders/internal/routing.d.ts +4 -0
  384. package/dist/domains/holders/internal/routing.js +45 -0
  385. package/dist/domains/holders/internal/transfer-tx.d.ts +4 -0
  386. package/dist/domains/holders/internal/transfer-tx.js +67 -0
  387. package/dist/domains/holders/types.d.ts +1 -0
  388. package/dist/domains/holders/types.js +1 -0
  389. package/dist/domains/lp-inspect/index.d.ts +1 -0
  390. package/dist/domains/lp-inspect/index.js +1 -0
  391. package/dist/domains/lp-inspect/lp-inspect-helpers.d.ts +9 -0
  392. package/dist/domains/lp-inspect/lp-inspect-helpers.js +109 -0
  393. package/dist/domains/lp-inspect/lp-inspect.d.ts +40 -0
  394. package/dist/{utils → domains/lp-inspect}/lp-inspect.js +78 -293
  395. package/dist/domains/lp-inspect/types.d.ts +1 -0
  396. package/dist/domains/lp-inspect/types.js +1 -0
  397. package/dist/domains/merkle/index.d.ts +12 -0
  398. package/dist/domains/merkle/index.js +11 -0
  399. package/dist/domains/private-sale/index.d.ts +1 -0
  400. package/dist/domains/private-sale/index.js +1 -0
  401. package/dist/domains/private-sale/private-sale.d.ts +34 -0
  402. package/dist/{utils → domains/private-sale}/private-sale.js +5 -16
  403. package/dist/domains/private-sale/types.d.ts +1 -0
  404. package/dist/domains/private-sale/types.js +1 -0
  405. package/dist/domains/quote/index.d.ts +1 -0
  406. package/dist/domains/quote/index.js +1 -0
  407. package/dist/{utils → domains/quote}/quote-helpers.d.ts +4 -45
  408. package/dist/{utils → domains/quote}/quote-helpers.js +17 -74
  409. package/dist/domains/quote/types.d.ts +1 -0
  410. package/dist/domains/quote/types.js +1 -0
  411. package/dist/domains/vanity/index.d.ts +5 -0
  412. package/dist/domains/vanity/index.js +5 -0
  413. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  414. package/dist/exports/root-bundle-and-tooling.js +30 -0
  415. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  416. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  417. package/dist/exports/root-foundations.d.ts +35 -0
  418. package/dist/exports/root-foundations.js +70 -0
  419. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  420. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  421. package/dist/index.d.ts +17 -88
  422. package/dist/index.js +17 -218
  423. package/dist/utils/airdrop-sweep.d.ts +4 -76
  424. package/dist/utils/airdrop-sweep.js +42 -55
  425. package/dist/utils/bundle-helpers.d.ts +9 -243
  426. package/dist/utils/bundle-helpers.js +10 -584
  427. package/dist/utils/constants.d.ts +5 -61
  428. package/dist/utils/constants.js +5 -80
  429. package/dist/utils/contract-factory.d.ts +2 -4
  430. package/dist/utils/contract-factory.js +25 -18
  431. package/dist/utils/errors.d.ts +12 -1
  432. package/dist/utils/errors.js +60 -1
  433. package/dist/utils/hop-chains.d.ts +35 -0
  434. package/dist/utils/hop-chains.js +215 -0
  435. package/dist/utils/index.d.ts +5 -0
  436. package/dist/utils/index.js +5 -0
  437. package/dist/utils/mpcExclusive.d.ts +2 -5
  438. package/dist/utils/mpcExclusive.js +4 -3
  439. package/dist/utils/provider-factory.d.ts +4 -0
  440. package/dist/utils/provider-factory.js +10 -0
  441. package/dist/utils/stealth-transfer.d.ts +2 -28
  442. package/dist/utils/stealth-transfer.js +41 -21
  443. package/dist/utils/swap-helpers.d.ts +2 -15
  444. package/dist/utils/swap-helpers.js +7 -12
  445. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  446. package/dist/utils/types/airdrop-sweep.js +1 -0
  447. package/dist/utils/types/contract-factory.d.ts +1 -0
  448. package/dist/utils/types/contract-factory.js +1 -0
  449. package/dist/utils/types/errors.d.ts +1 -0
  450. package/dist/utils/types/errors.js +1 -0
  451. package/dist/utils/types/hop-chains.d.ts +8 -0
  452. package/dist/utils/types/hop-chains.js +1 -0
  453. package/dist/utils/types/index.d.ts +13 -0
  454. package/dist/utils/types/index.js +1 -0
  455. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  456. package/dist/utils/types/mpc-exclusive.js +1 -0
  457. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  458. package/dist/utils/types/stealth-transfer.js +1 -0
  459. package/dist/utils/types/wallet.d.ts +25 -0
  460. package/dist/utils/types/wallet.js +1 -0
  461. package/dist/utils/wallet.d.ts +4 -25
  462. package/dist/utils/wallet.js +27 -22
  463. package/package.json +96 -2
  464. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +0 -26
  465. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +0 -113
  466. package/dist/contracts/tm-bundle-merkle/config.d.ts +0 -70
  467. package/dist/contracts/tm-bundle-merkle/config.js +0 -114
  468. package/dist/contracts/tm-bundle-merkle/index.d.ts +0 -15
  469. package/dist/contracts/tm-bundle-merkle/index.js +0 -29
  470. package/dist/contracts/tm-bundle-merkle/internal.d.ts +0 -48
  471. package/dist/contracts/tm-bundle-merkle/internal.js +0 -240
  472. package/dist/contracts/tm-bundle-merkle/swap.d.ts +0 -146
  473. package/dist/contracts/tm-bundle-merkle/utils.d.ts +0 -20
  474. package/dist/contracts/tm-bundle-merkle/utils.js +0 -1503
  475. package/dist/dex/direct-router.d.ts +0 -150
  476. package/dist/shared/abis/TaxToken.json +0 -105
  477. package/dist/shared/abis/TokenManager2.json +0 -60
  478. package/dist/shared/flap/graduated-dex.d.ts +0 -1
  479. package/dist/shared/flap/graduated-dex.js +0 -1
  480. package/dist/shared/flap/launch-v6.d.ts +0 -132
  481. package/dist/shared/flap/launch-v6.js +0 -137
  482. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +0 -79
  483. package/dist/shared/flap/portal-bundle-merkle/config.js +0 -133
  484. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +0 -14
  485. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
  486. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +0 -201
  487. package/dist/shared/flap/portal-bundle-merkle/swap.js +0 -1359
  488. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +0 -89
  489. package/dist/shared/flap/portal-create-token.d.ts +0 -63
  490. package/dist/shared/flap/portal-create-token.js +0 -258
  491. package/dist/shared/four/index.d.ts +0 -7
  492. package/dist/shared/four/index.js +0 -22
  493. package/dist/shared/index.d.ts +0 -10
  494. package/dist/shared/index.js +0 -10
  495. package/dist/utils/holders-maker.d.ts +0 -154
  496. package/dist/utils/holders-maker.js +0 -945
  497. package/dist/utils/pcs-infinity-cl.d.ts +0 -65
  498. package/dist/utils/pcs-infinity-cl.js +0 -426
  499. package/dist/utils/private-sale.d.ts +0 -90
  500. /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
  501. /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
  502. /package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-internal.d.ts +0 -0
  503. /package/dist/{shared/flap/portal-bundle-merkle/types.js → bundle/four-meme/types/buy-first.js} +0 -0
  504. /package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/types.js +0 -0
  505. /package/dist/{shared → core}/clients/emitservice.d.ts +0 -0
  506. /package/dist/{shared → core}/constants/profit.d.ts +0 -0
  507. /package/dist/{shared → core}/constants/profit.js +0 -0
  508. /package/dist/{dex → domains/dex}/index.d.ts +0 -0
  509. /package/dist/{dex → domains/dex}/index.js +0 -0
  510. /package/dist/{shared → domains}/flap/abi.d.ts +0 -0
  511. /package/dist/{shared → domains}/flap/curve.d.ts +0 -0
  512. /package/dist/{shared → domains}/flap/ipfs.d.ts +0 -0
  513. /package/dist/{shared → domains}/flap/ipfs.js +0 -0
  514. /package/dist/{shared → domains}/flap/permit.d.ts +0 -0
  515. /package/dist/{shared → domains}/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -0
  516. /package/dist/{shared → domains}/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -0
  517. /package/dist/{shared → domains}/flap/portal-bundle-merkle/private.d.ts +0 -0
  518. /package/dist/{contracts → domains/four/contracts}/tm1.d.ts +0 -0
  519. /package/dist/{contracts → domains/four/contracts}/tm2.d.ts +0 -0
@@ -1,22 +1,24 @@
1
1
  import { ethers, Wallet, Contract, Interface } from 'ethers';
2
- import { NonceManager, getOptimizedGasPrice, buildProfitHopTransactions, PROFIT_HOP_COUNT } from '../../utils/bundle-helpers.js';
3
- import { ADDRESSES, BLOCKRAZOR_BUILDER_EOA, ZERO_ADDRESS } from '../../utils/constants.js';
4
- import { MULTICALL3_ABI, ERC20_ABI } from '../../shared/abis/common.js';
5
- import { FourClient, buildLoginMessage } from '../../shared/clients/four.js';
6
- import { getErrorMessage, getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, getProfitRecipient, getBribeAmount } from './config.js';
7
- import { trySell } from '../tm.js';
8
- import Helper3Abi from '../../shared/abis/TokenManagerHelper3.json' with { type: 'json' };
2
+ import { NonceManager, getOptimizedGasPrice, buildProfitHopTransactions, PROFIT_HOP_COUNT, } from '../../utils/bundle-helpers.js';
3
+ import { ADDRESSES, ZERO_ADDRESS } from '../../core/constants/index.js';
4
+ import { MULTICALL3_ABI, ERC20_ABI } from '../../abis/common.js';
5
+ import { FourClient } from '../../core/clients/four.js';
6
+ import { getBundleErrorMessage } from '../errors.js';
7
+ import { getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, getProfitRecipient, getBribeAmount, } from '../config-helpers.js';
8
+ import { createSignProvider, signBribeTransaction } from '../sign-context-helpers.js';
9
+ import { trySell } from '../../domains/four/contracts/tm.js';
10
+ import { createChainContext, createWallets, loginFourClient, resolveTokenImage } from './core-helpers.js';
11
+ import { TokenManagerHelper3 as Helper3Abi } from '../../abis/contracts/index.js';
9
12
  // ✅ 常量
10
13
  const MULTICALL3_ADDRESS = ADDRESSES.BSC.Multicall3;
11
14
  // ✅ TM2 扩展 ABI(包含创建代币方法和事件)
12
- import { TM2_ABI as _TM2_ABI } from '../../shared/abis/common.js';
15
+ import { TM2_ABI as _TM2_ABI } from '../../abis/common.js';
13
16
  const TM2_ABI = [
14
17
  ..._TM2_ABI,
15
18
  'function createToken(bytes args, bytes signature) payable',
16
- 'event TokenCreate(address indexed creator, address indexed token, uint256 timestamp)'
19
+ 'event TokenCreate(address indexed creator, address indexed token, uint256 timestamp)',
17
20
  ];
18
21
  const PLATFORM_CREATE_FEE = ethers.parseEther('0.01');
19
- const CHAIN_ID = 56;
20
22
  // ✅ 本地 getGasLimit(FourAnyConfig 支持 bigint gasLimit)
21
23
  function getGasLimit(config, defaultGas = 800000) {
22
24
  if (config.gasLimit !== undefined) {
@@ -41,22 +43,13 @@ export async function createTokenWithBundleBuyMerkle(params) {
41
43
  const { provider, chainId } = createChainContext(rpcUrl);
42
44
  const devWallet = new Wallet(creatorKey, provider);
43
45
  const fourClient = new FourClient({ baseUrl: config.fourApiUrl });
44
- // 🔍 检查创建者余额
45
- const creatorBalance = await provider.getBalance(devWallet.address);
46
- const estimatedB0 = ethers.parseEther(params.b0Amount ?? '0');
47
- const estimatedPreSale = tokenInfo.preSale ? ethers.parseEther(tokenInfo.preSale) : 0n;
48
- // 计算总需求:创建费用 + b0Amount + preSale + 买入金额 + gas预估
49
- const buyAmount = ethers.parseEther(buyAmounts[0]);
50
- let totalRequired = PLATFORM_CREATE_FEE + estimatedB0 + estimatedPreSale + buyAmount;
51
- totalRequired += ethers.parseEther('0.01'); // 预留 0.01 BNB 作为 gas
52
- if (creatorBalance < totalRequired) {
53
- console.warn(`⚠️ 余额可能不足!当前: ${ethers.formatEther(creatorBalance)} BNB, 需要: ${ethers.formatEther(totalRequired)} BNB`);
54
- }
55
46
  const accessToken = await loginFourClient(devWallet, fourClient);
56
47
  const imgUrl = await resolveTokenImage(fourClient, tokenInfo, accessToken);
57
48
  // ✅ 兼容:历史调用可能把 Dev 首买金额塞在 buyAmounts[0],而不是 tokenInfo.preSale
58
49
  // Four 官方 API/链上 createArg 使用 preSale 表达“创建者预购金额”
59
- const effectivePreSaleStr = (tokenInfo.preSale && String(tokenInfo.preSale).trim().length > 0 ? String(tokenInfo.preSale) : String(buyAmounts[0] ?? '0'));
50
+ const effectivePreSaleStr = tokenInfo.preSale && String(tokenInfo.preSale).trim().length > 0
51
+ ? String(tokenInfo.preSale)
52
+ : String(buyAmounts[0] ?? '0');
60
53
  const createResp = await fourClient.createToken(accessToken, {
61
54
  name: tokenInfo.name,
62
55
  shortName: tokenInfo.symbol,
@@ -89,20 +82,10 @@ export async function createTokenWithBundleBuyMerkle(params) {
89
82
  const tmCreateAddr = ADDRESSES.BSC.TokenManagerOriginal;
90
83
  // ✅ 单笔交易: 和 Four.meme 官网一样
91
84
  // 计算利润
92
- const extractProfit = shouldExtractProfit(config);
85
+ const extractProfit = shouldExtractProfit();
93
86
  // ✅ 对 create 流程来说,“买入金额”就是 preSale(创建者预购)
94
87
  const originalBuyAmount = ethers.parseEther(effectivePreSaleStr || '0');
95
- let actualBuyFunds;
96
- let profitAmount;
97
- if (extractProfit) {
98
- const { remaining, profit } = calculateProfit(originalBuyAmount, config);
99
- actualBuyFunds = remaining;
100
- profitAmount = profit;
101
- }
102
- else {
103
- actualBuyFunds = originalBuyAmount;
104
- profitAmount = 0n;
105
- }
88
+ const profitAmount = extractProfit ? calculateProfit(originalBuyAmount).profit : 0n;
106
89
  // ✅ 获取贿赂金额
107
90
  const bribeAmount = getBribeAmount(config);
108
91
  const needBribeTx = bribeAmount > 0n;
@@ -113,21 +96,14 @@ export async function createTokenWithBundleBuyMerkle(params) {
113
96
  // 不要把“其它买入金额”额外塞进 msg.value,否则会被合约退回,造成“看起来没买到”的误解。
114
97
  const valueWei = PLATFORM_CREATE_FEE + b0AmountWei + preSaleWei;
115
98
  const tmCreate = new ethers.Contract(tmCreateAddr, TM2_ABI, devWallet);
116
- const createTxUnsigned = await tmCreate.createToken.populateTransaction(createResp.createArg, createResp.signature, { value: valueWei });
99
+ const createTxUnsigned = await tmCreate.createToken.populateTransaction(createResp.createArg, createResp.signature, {
100
+ value: valueWei,
101
+ });
117
102
  // ✅ 贿赂交易放在首位(由 devWallet 发送)
118
103
  let bribeNonce;
119
104
  if (needBribeTx) {
120
105
  bribeNonce = await nonceManager.getNextNonce(devWallet);
121
- const bribeTx = await devWallet.signTransaction({
122
- to: BLOCKRAZOR_BUILDER_EOA,
123
- value: bribeAmount,
124
- nonce: bribeNonce,
125
- gasPrice,
126
- gasLimit: 21000n,
127
- chainId,
128
- type: txType
129
- });
130
- signedTxs.push(bribeTx);
106
+ signedTxs.push(await signBribeTransaction(devWallet, bribeAmount, bribeNonce, gasPrice, chainId, txType));
131
107
  }
132
108
  const createTxRequest = {
133
109
  ...createTxUnsigned,
@@ -137,7 +113,7 @@ export async function createTokenWithBundleBuyMerkle(params) {
137
113
  gasPrice,
138
114
  chainId,
139
115
  type: getTxType(config),
140
- value: valueWei
116
+ value: valueWei,
141
117
  };
142
118
  signedTxs.push(await devWallet.signTransaction(createTxRequest));
143
119
  // ✅ 利润多跳转账(强制 2 跳中转)
@@ -153,7 +129,7 @@ export async function createTokenWithBundleBuyMerkle(params) {
153
129
  gasPrice,
154
130
  chainId,
155
131
  txType,
156
- startNonce: profitNonce
132
+ startNonce: profitNonce,
157
133
  });
158
134
  signedTxs.push(...profitHopResult.signedTransactions);
159
135
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -161,23 +137,25 @@ export async function createTokenWithBundleBuyMerkle(params) {
161
137
  nonceManager.clearTemp();
162
138
  // ⚠️ 只返回签名交易,不提交
163
139
  // 构建元数据
164
- const metadata = extractProfit && profitAmount > 0n ? {
165
- totalBuyAmount: ethers.formatEther(originalBuyAmount),
166
- profitAmount: ethers.formatEther(profitAmount),
167
- profitRecipient: getProfitRecipient(),
168
- buyerCount: 1
169
- } : undefined;
140
+ const metadata = extractProfit && profitAmount > 0n
141
+ ? {
142
+ totalBuyAmount: ethers.formatEther(originalBuyAmount),
143
+ profitAmount: ethers.formatEther(profitAmount),
144
+ profitRecipient: getProfitRecipient(),
145
+ buyerCount: 1,
146
+ }
147
+ : undefined;
170
148
  return {
171
149
  signedTransactions: signedTxs,
172
150
  tokenAddress: ZERO_ADDRESS, // ⚠️ 占位符,实际地址需要等交易确认后从事件解析
173
151
  profitHopWallets, // ✅ 返回利润多跳钱包
174
- metadata
152
+ metadata,
175
153
  };
176
154
  }
177
155
  export async function batchBuyWithBundleMerkle(params) {
178
156
  const { privateKeys, buyAmounts, tokenAddress, config } = params;
179
157
  if (privateKeys.length === 0 || buyAmounts.length !== privateKeys.length) {
180
- throw new Error(getErrorMessage('KEY_AMOUNT_MISMATCH'));
158
+ throw new Error(getBundleErrorMessage('KEY_AMOUNT_MISMATCH'));
181
159
  }
182
160
  const { provider, chainId } = createChainContext(config.rpcUrl);
183
161
  const txType = getTxType(config);
@@ -185,7 +163,7 @@ export async function batchBuyWithBundleMerkle(params) {
185
163
  // ✅ 优化:并行初始化 nonceManager 和获取 gasPrice
186
164
  const [nonceManager, gasPrice] = await Promise.all([
187
165
  Promise.resolve(new NonceManager(provider)),
188
- getOptimizedGasPrice(provider, getGasPriceConfig(config))
166
+ getOptimizedGasPrice(provider, getGasPriceConfig(config)),
189
167
  ]);
190
168
  const buyFlow = await executeBuyFlow({
191
169
  wallets: buyers,
@@ -198,19 +176,19 @@ export async function batchBuyWithBundleMerkle(params) {
198
176
  gasPrice,
199
177
  chainId,
200
178
  profitMode: { type: 'aggregated', payer: buyers[0] },
201
- txType
179
+ txType,
202
180
  });
203
181
  nonceManager.clearTemp();
204
182
  return {
205
183
  signedTransactions: buyFlow.signedTxs,
206
184
  profitHopWallets: buyFlow.profitHopWallets, // ✅ 返回利润多跳钱包
207
- metadata: buyFlow.metadata
185
+ metadata: buyFlow.metadata,
208
186
  };
209
187
  }
210
188
  export async function batchSellWithBundleMerkle(params) {
211
189
  const { privateKeys, sellAmounts, tokenAddress, minOutputAmounts, config } = params;
212
190
  if (privateKeys.length === 0 || sellAmounts.length !== privateKeys.length) {
213
- throw new Error(getErrorMessage('SELL_KEY_AMOUNT_MISMATCH'));
191
+ throw new Error(getBundleErrorMessage('SELL_KEY_AMOUNT_MISMATCH'));
214
192
  }
215
193
  const { provider, chainId } = createChainContext(config.rpcUrl);
216
194
  const txType = getTxType(config);
@@ -218,7 +196,7 @@ export async function batchSellWithBundleMerkle(params) {
218
196
  // ✅ 优化:并行初始化 nonceManager 和获取 gasPrice
219
197
  const [nonceManager, gasPrice] = await Promise.all([
220
198
  Promise.resolve(new NonceManager(provider)),
221
- getOptimizedGasPrice(provider, getGasPriceConfig(config))
199
+ getOptimizedGasPrice(provider, getGasPriceConfig(config)),
222
200
  ]);
223
201
  const sellFlow = await executeSellFlow({
224
202
  wallets: sellers,
@@ -232,56 +210,18 @@ export async function batchSellWithBundleMerkle(params) {
232
210
  gasPrice,
233
211
  chainId,
234
212
  rpcUrl: config.rpcUrl,
235
- txType
213
+ txType,
236
214
  });
237
215
  nonceManager.clearTemp();
238
216
  return {
239
217
  signedTransactions: sellFlow.signedTxs,
240
- profitHopWallets: sellFlow.profitHopWallets // ✅ 返回利润多跳钱包
218
+ profitHopWallets: sellFlow.profitHopWallets, // ✅ 返回利润多跳钱包
241
219
  };
242
220
  }
243
- function createChainContext(rpcUrl) {
244
- const provider = new ethers.JsonRpcProvider(rpcUrl, {
245
- chainId: CHAIN_ID,
246
- name: 'BSC'
247
- });
248
- return { provider, chainId: CHAIN_ID };
249
- }
250
- function createWallets(privateKeys, provider) {
251
- return privateKeys.map((key) => new Wallet(key, provider));
252
- }
253
- async function loginFourClient(wallet, fourClient) {
254
- const nonce = await fourClient.generateNonce({
255
- accountAddress: wallet.address,
256
- verifyType: 'LOGIN',
257
- networkCode: 'BSC'
258
- });
259
- const loginSignature = await wallet.signMessage(buildLoginMessage(nonce));
260
- return fourClient.loginDex({
261
- region: 'WEB',
262
- langType: 'EN',
263
- verifyInfo: {
264
- address: wallet.address,
265
- networkCode: 'BSC',
266
- signature: loginSignature,
267
- verifyType: 'LOGIN'
268
- },
269
- walletName: 'MetaMask'
270
- });
271
- }
272
- async function resolveTokenImage(fourClient, tokenInfo, accessToken) {
273
- if (tokenInfo.imageUrl) {
274
- return tokenInfo.imageUrl;
275
- }
276
- if (tokenInfo.imageFile) {
277
- return fourClient.uploadImage(accessToken, tokenInfo.imageFile);
278
- }
279
- throw new Error(getErrorMessage('IMAGE_REQUIRED'));
280
- }
281
221
  async function executeBuyFlow(options) {
282
- const { wallets, buyAmounts, tokenAddress, config, provider, nonceManager, contractAddress, gasPrice, chainId, profitMode, txType } = options;
283
- const extractProfit = shouldExtractProfit(config);
284
- const analysis = analyzeBuyFunds(buyAmounts, config, extractProfit);
222
+ const { wallets, buyAmounts, tokenAddress, config, provider, nonceManager, contractAddress, gasPrice, chainId, profitMode, txType, } = options;
223
+ const extractProfit = shouldExtractProfit();
224
+ const analysis = analyzeBuyFunds(buyAmounts, extractProfit);
285
225
  const finalGasLimit = getGasLimit(config);
286
226
  // ✅ 获取贿赂金额
287
227
  const bribeAmount = getBribeAmount(config);
@@ -292,16 +232,7 @@ async function executeBuyFlow(options) {
292
232
  let bribeNonceOffset = 0;
293
233
  if (needBribeTx) {
294
234
  const bribeNonce = await nonceManager.getNextNonce(payer);
295
- const bribeTx = await payer.signTransaction({
296
- to: BLOCKRAZOR_BUILDER_EOA,
297
- value: bribeAmount,
298
- nonce: bribeNonce,
299
- gasPrice,
300
- gasLimit: 21000n,
301
- chainId,
302
- type: txType
303
- });
304
- signedTxs.push(bribeTx);
235
+ signedTxs.push(await signBribeTransaction(payer, bribeAmount, bribeNonce, gasPrice, chainId, txType));
305
236
  bribeNonceOffset = 1; // payer 的买入交易 nonce 需要偏移
306
237
  }
307
238
  // ✅ 优化:并行执行 populateBuyTransactions 和批量获取 nonces(JSON-RPC 批量请求)
@@ -310,13 +241,13 @@ async function executeBuyFlow(options) {
310
241
  buyers: wallets,
311
242
  contractAddress,
312
243
  tokenAddress,
313
- fundsList: analysis.fundsList
244
+ fundsList: analysis.fundsList,
314
245
  }),
315
- nonceManager.getNextNoncesForWallets(wallets) // ✅ 批量获取 nonce
246
+ nonceManager.getNextNoncesForWallets(wallets), // ✅ 批量获取 nonce
316
247
  ]);
317
248
  // ✅ 调整 payer 的 nonce(如果有贿赂交易,需要偏移)
318
- const payerIndex = wallets.findIndex(w => w.address.toLowerCase() === payer.address.toLowerCase());
319
- const adjustedNonces = nonces.map((n, i) => i === payerIndex ? n + bribeNonceOffset : n);
249
+ const payerIndex = wallets.findIndex((w) => w.address.toLowerCase() === payer.address.toLowerCase());
250
+ const adjustedNonces = nonces.map((n, i) => (i === payerIndex ? n + bribeNonceOffset : n));
320
251
  // ✅ 并行签名所有买入交易
321
252
  const signedBuys = await Promise.all(unsignedBuys.map((unsigned, index) => wallets[index].signTransaction({
322
253
  ...unsigned,
@@ -326,7 +257,7 @@ async function executeBuyFlow(options) {
326
257
  gasPrice,
327
258
  chainId,
328
259
  type: txType,
329
- value: analysis.fundsList[index]
260
+ value: analysis.fundsList[index],
330
261
  })));
331
262
  signedTxs.push(...signedBuys);
332
263
  // ✅ 利润多跳转账(强制 2 跳中转)
@@ -342,7 +273,7 @@ async function executeBuyFlow(options) {
342
273
  gasPrice,
343
274
  chainId,
344
275
  txType,
345
- startNonce: profitNonce
276
+ startNonce: profitNonce,
346
277
  });
347
278
  signedTxs.push(...profitHopResult.signedTransactions);
348
279
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -351,10 +282,10 @@ async function executeBuyFlow(options) {
351
282
  return { signedTxs, metadata, profitHopWallets }; // ✅ 返回利润多跳钱包
352
283
  }
353
284
  async function executeSellFlow(options) {
354
- const { wallets, sellAmounts, tokenAddress, minOutputAmounts, config, provider, nonceManager, contractAddress, gasPrice, chainId, rpcUrl, txType } = options;
285
+ const { wallets, sellAmounts, tokenAddress, minOutputAmounts, config, provider, nonceManager, contractAddress, gasPrice, chainId, rpcUrl, txType, } = options;
355
286
  const amountsWei = sellAmounts.map((amount) => ethers.parseUnits(amount, 18));
356
287
  const finalGasLimit = getGasLimit(config);
357
- const extractProfit = shouldExtractProfit(config);
288
+ const extractProfit = shouldExtractProfit();
358
289
  // ✅ 获取贿赂金额
359
290
  const bribeAmount = getBribeAmount(config);
360
291
  const needBribeTx = bribeAmount > 0n;
@@ -365,41 +296,32 @@ async function executeSellFlow(options) {
365
296
  sellers: wallets,
366
297
  amountsWei,
367
298
  rpcUrl,
368
- tokenAddress
299
+ tokenAddress,
369
300
  }),
370
301
  ensureSellerBalances({ provider, tokenAddress, sellers: wallets, amountsWei }),
371
- nonceManager.getNextNoncesForWallets(wallets) // ✅ 批量获取 nonce(JSON-RPC 批量请求)
302
+ nonceManager.getNextNoncesForWallets(wallets), // ✅ 批量获取 nonce(JSON-RPC 批量请求)
372
303
  ]);
373
304
  // ✅ 找出收益最多的钱包作为 payer(贿赂和利润都由它发送)
374
- const { totalProfit, payer } = summarizeSellProfits(sellOutputs.quotedOutputs, wallets, config);
305
+ const { totalProfit, payer } = summarizeSellProfits(sellOutputs.quotedOutputs, wallets);
375
306
  const payerWallet = payer ?? wallets[0];
376
- const payerIndex = wallets.findIndex(w => w.address.toLowerCase() === payerWallet.address.toLowerCase());
307
+ const payerIndex = wallets.findIndex((w) => w.address.toLowerCase() === payerWallet.address.toLowerCase());
377
308
  // ✅ 贿赂交易放在首位
378
309
  const signedTxs = [];
379
310
  let bribeNonceOffset = 0;
380
311
  if (needBribeTx) {
381
312
  const bribeNonce = nonces[payerIndex];
382
- const bribeTx = await payerWallet.signTransaction({
383
- to: BLOCKRAZOR_BUILDER_EOA,
384
- value: bribeAmount,
385
- nonce: bribeNonce,
386
- gasPrice,
387
- gasLimit: 21000n,
388
- chainId,
389
- type: txType
390
- });
391
- signedTxs.push(bribeTx);
313
+ signedTxs.push(await signBribeTransaction(payerWallet, bribeAmount, bribeNonce, gasPrice, chainId, txType));
392
314
  bribeNonceOffset = 1;
393
315
  }
394
316
  // ✅ 调整 payer 的 nonce(如果有贿赂交易,需要偏移)
395
- const adjustedNonces = nonces.map((n, i) => i === payerIndex ? n + bribeNonceOffset : n);
317
+ const adjustedNonces = nonces.map((n, i) => (i === payerIndex ? n + bribeNonceOffset : n));
396
318
  // ✅ 构建未签名交易
397
319
  const unsignedSells = await populateSellTransactions({
398
320
  sellers: wallets,
399
321
  contractAddress,
400
322
  tokenAddress,
401
323
  amountsWei,
402
- minOuts: sellOutputs.minOuts
324
+ minOuts: sellOutputs.minOuts,
403
325
  });
404
326
  // ✅ 并行签名所有卖出交易
405
327
  const signedSells = await Promise.all(unsignedSells.map((unsigned, index) => wallets[index].signTransaction({
@@ -409,7 +331,7 @@ async function executeSellFlow(options) {
409
331
  gasLimit: finalGasLimit,
410
332
  gasPrice,
411
333
  chainId,
412
- type: txType
334
+ type: txType,
413
335
  })));
414
336
  signedTxs.push(...signedSells);
415
337
  // ✅ 利润多跳转账(强制 2 跳中转)
@@ -423,11 +345,11 @@ async function executeSellFlow(options) {
423
345
  chainId,
424
346
  txType,
425
347
  signedTxs,
426
- baseNonce: adjustedNonces[payerIndex] + 1 // ✅ 传入基础 nonce
348
+ baseNonce: adjustedNonces[payerIndex] + 1, // ✅ 传入基础 nonce
427
349
  });
428
350
  return { signedTxs, profitHopWallets }; // ✅ 返回利润多跳钱包
429
351
  }
430
- function analyzeBuyFunds(buyAmounts, config, extractProfit) {
352
+ function analyzeBuyFunds(buyAmounts, extractProfit) {
431
353
  const fundsList = [];
432
354
  const profitList = [];
433
355
  let totalProfit = 0n;
@@ -436,7 +358,7 @@ function analyzeBuyFunds(buyAmounts, config, extractProfit) {
436
358
  const originalAmount = ethers.parseEther(amount);
437
359
  totalBuyAmount += originalAmount;
438
360
  if (extractProfit) {
439
- const { remaining, profit } = calculateProfit(originalAmount, config);
361
+ const { remaining, profit } = calculateProfit(originalAmount);
440
362
  fundsList.push(remaining);
441
363
  profitList.push(profit);
442
364
  totalProfit += profit;
@@ -451,7 +373,9 @@ function analyzeBuyFunds(buyAmounts, config, extractProfit) {
451
373
  async function populateBuyTransactions(params) {
452
374
  const { buyers, contractAddress, tokenAddress, fundsList } = params;
453
375
  const contracts = buyers.map((wallet) => new ethers.Contract(contractAddress, TM2_ABI, wallet));
454
- return Promise.all(contracts.map((contract, index) => contract.buyTokenAMAP.populateTransaction(0n, tokenAddress, buyers[index].address, fundsList[index], 0n, { value: fundsList[index] })));
376
+ return Promise.all(contracts.map((contract, index) => contract.buyTokenAMAP.populateTransaction(0n, tokenAddress, buyers[index].address, fundsList[index], 0n, {
377
+ value: fundsList[index],
378
+ })));
455
379
  }
456
380
  function buildBuyMetadata(extractProfit, totalBuyAmount, totalProfit, buyerCount) {
457
381
  if (!extractProfit || totalBuyAmount <= 0n || totalProfit <= 0n) {
@@ -461,7 +385,7 @@ function buildBuyMetadata(extractProfit, totalBuyAmount, totalProfit, buyerCount
461
385
  totalBuyAmount: ethers.formatEther(totalBuyAmount),
462
386
  profitAmount: ethers.formatEther(totalProfit),
463
387
  profitRecipient: getProfitRecipient(),
464
- buyerCount
388
+ buyerCount,
465
389
  };
466
390
  }
467
391
  /**
@@ -490,15 +414,15 @@ async function resolveSellOutputs(params) {
490
414
  }
491
415
  }
492
416
  // ✅ 使用 Multicall3 批量获取报价
493
- const provider = new ethers.JsonRpcProvider(rpcUrl, { chainId: 56, name: 'BSC' });
417
+ const provider = createSignProvider(rpcUrl, 56, 'BSC');
494
418
  const helper3Address = ADDRESSES.BSC.TokenManagerHelper3;
495
419
  const helper3Iface = new Interface(Helper3Abi);
496
420
  const multicall = new Contract(MULTICALL3_ADDRESS, MULTICALL3_ABI, provider);
497
421
  // 构建批量调用
498
- const calls = amountsWei.map(amount => ({
422
+ const calls = amountsWei.map((amount) => ({
499
423
  target: helper3Address,
500
424
  allowFailure: true, // 允许单个失败
501
- callData: helper3Iface.encodeFunctionData('trySell', [tokenAddress, amount])
425
+ callData: helper3Iface.encodeFunctionData('trySell', [tokenAddress, amount]),
502
426
  }));
503
427
  try {
504
428
  const results = await multicall.aggregate3.staticCall(calls);
@@ -551,7 +475,7 @@ async function populateSellTransactions(params) {
551
475
  const contracts = sellers.map((wallet) => new ethers.Contract(contractAddress, TM2_ABI, wallet));
552
476
  return Promise.all(contracts.map((contract, index) => contract.sellToken.populateTransaction(0n, tokenAddress, amountsWei[index], minOuts[index])));
553
477
  }
554
- function summarizeSellProfits(quotedOutputs, sellers, config) {
478
+ function summarizeSellProfits(quotedOutputs, sellers) {
555
479
  let totalProfit = 0n;
556
480
  let maxRevenue = 0n;
557
481
  let payer;
@@ -559,7 +483,7 @@ function summarizeSellProfits(quotedOutputs, sellers, config) {
559
483
  if (output <= 0n) {
560
484
  return;
561
485
  }
562
- const { profit } = calculateProfit(output, config);
486
+ const { profit } = calculateProfit(output);
563
487
  totalProfit += profit;
564
488
  if (output > maxRevenue) {
565
489
  maxRevenue = output;
@@ -574,7 +498,7 @@ async function appendAggregatedProfitTransfer(params) {
574
498
  return undefined;
575
499
  }
576
500
  // ✅ 利润多跳转账(强制 2 跳中转)
577
- const profitNonce = baseNonce ?? await nonceManager.getNextNonce(payer);
501
+ const profitNonce = baseNonce ?? (await nonceManager.getNextNonce(payer));
578
502
  const profitHopResult = await buildProfitHopTransactions({
579
503
  provider,
580
504
  payerWallet: payer,
@@ -584,7 +508,7 @@ async function appendAggregatedProfitTransfer(params) {
584
508
  gasPrice,
585
509
  chainId,
586
510
  txType,
587
- startNonce: profitNonce
511
+ startNonce: profitNonce,
588
512
  });
589
513
  signedTxs.push(...profitHopResult.signedTransactions);
590
514
  return profitHopResult.hopWallets; // ✅ 返回利润多跳钱包
@@ -6,7 +6,7 @@
6
6
  * - V3 Router: 0x13f4EA83D0bd40E75C8222255bc855a974568Dd4
7
7
  * - V3 Quoter: 0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997
8
8
  */
9
- import { FourPancakeProxyBatchBuySignParams, FourPancakeProxyBatchBuyResult, FourPancakeProxyBatchSellSignParams, FourPancakeProxyBatchSellResult, FourPancakeProxyApprovalParams, FourPancakeProxyApprovalBatchParams, FourPancakeProxyApprovalBatchResult } from './types.js';
9
+ import type { FourPancakeProxyBatchBuySignParams, FourPancakeProxyBatchBuyResult, FourPancakeProxyBatchSellSignParams, FourPancakeProxyBatchSellResult, FourPancakeProxyApprovalParams, FourPancakeProxyApprovalBatchParams, FourPancakeProxyApprovalBatchResult } from './types.js';
10
10
  /**
11
11
  * ✅ 授权代币给 PancakeSwap Router(根据 routeType 选择 V2/V3)
12
12
  */