four-flap-meme-sdk 1.9.49 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/README.en.md +41 -6
  2. package/README.md +31 -0
  3. package/README.zh-CN.md +41 -6
  4. package/dist/__tests__/subpath-exports.test.js +34 -0
  5. package/dist/abis/common.js +74 -68
  6. package/dist/abis/flap/vault.js +9 -7
  7. package/dist/abis/index.d.ts +3 -4
  8. package/dist/abis/index.js +3 -4
  9. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  10. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  11. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  12. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  13. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  14. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  15. package/dist/bundle-core/config-helpers.d.ts +36 -0
  16. package/dist/bundle-core/config-helpers.js +57 -0
  17. package/dist/bundle-core/errors.d.ts +50 -0
  18. package/dist/bundle-core/errors.js +34 -0
  19. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  20. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  21. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  22. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  23. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  24. package/dist/bundle-core/four-meme/core.js +515 -0
  25. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  26. package/dist/{shared 2/flap/portal-bundle-merkle/pancake-proxy.js → bundle-core/four-meme/pancake-proxy.js} +277 -299
  27. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  28. package/dist/bundle-core/four-meme/private.js +465 -0
  29. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  30. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  31. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  32. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  33. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  34. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  35. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  36. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  37. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  38. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  39. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  40. package/dist/{chains/bsc/four/swap/index.js → bundle-core/four-meme/swap.js} +84 -408
  41. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  42. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  43. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  44. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  45. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  46. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  47. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  48. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  49. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  50. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  51. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  52. package/dist/bundle-core/index.d.ts +8 -0
  53. package/dist/bundle-core/index.js +8 -0
  54. package/dist/bundle-core/internal.d.ts +21 -0
  55. package/dist/bundle-core/internal.js +182 -0
  56. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  57. package/dist/bundle-core/sign-context-helpers.js +67 -0
  58. package/dist/bundle-core/submit.d.ts +293 -0
  59. package/dist/bundle-core/submit.js +727 -0
  60. package/dist/bundle-core/types/index.d.ts +8 -0
  61. package/dist/bundle-core/types.d.ts +1 -0
  62. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  63. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -116
  64. package/dist/chains/bsc/four/config.d.ts +5 -70
  65. package/dist/chains/bsc/four/config.js +2 -115
  66. package/dist/chains/bsc/four/core.d.ts +1 -4
  67. package/dist/chains/bsc/four/core.js +1 -589
  68. package/dist/chains/bsc/four/index.d.ts +6 -6
  69. package/dist/chains/bsc/four/index.js +6 -6
  70. package/dist/chains/bsc/four/internal.d.ts +2 -50
  71. package/dist/chains/bsc/four/internal.js +2 -237
  72. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  73. package/dist/chains/bsc/four/pancake-proxy.js +1 -688
  74. package/dist/chains/bsc/four/private.d.ts +1 -27
  75. package/dist/chains/bsc/four/private.js +1 -477
  76. package/dist/chains/bsc/four/submit.d.ts +2 -315
  77. package/dist/chains/bsc/four/submit.js +2 -746
  78. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  79. package/dist/chains/bsc/four/swap-buy-first.js +2 -506
  80. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  81. package/dist/chains/bsc/four/swap-internal.js +1 -18
  82. package/dist/chains/bsc/four/swap.d.ts +2 -144
  83. package/dist/chains/bsc/four/swap.js +2 -760
  84. package/dist/chains/bsc/four/types.d.ts +1 -476
  85. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  86. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  87. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  88. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  89. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  90. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  91. package/dist/chains/bsc/four/utils.d.ts +5 -18
  92. package/dist/chains/bsc/four/utils.js +5 -1534
  93. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  94. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  95. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  96. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -207
  97. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  98. package/dist/chains/bsc/pancake/{bundle-swap/helpers.js → bundle-swap-helpers.js} +63 -70
  99. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  100. package/dist/chains/bsc/pancake/bundle-swap.js +111 -686
  101. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  102. package/dist/chains/bsc/pancake/index.js +1 -3
  103. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  104. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  105. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  106. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  107. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  108. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  109. package/dist/chains/eni/batch-router/transfer.js +54 -23
  110. package/dist/chains/eni/batch-router/utils.js +32 -6
  111. package/dist/chains/eni/bundler/sign.js +4 -4
  112. package/dist/chains/eni/bundler/submit.js +1 -4
  113. package/dist/chains/eni/constants.js +1 -1
  114. package/dist/chains/eni/index.d.ts +1 -1
  115. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  116. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  117. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  118. package/dist/chains/eni/platforms/daoaas/meta.js +8 -4
  119. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -43
  120. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  121. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  122. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  123. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  124. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -47
  125. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  126. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  127. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  128. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  129. package/dist/chains/eni/platforms/iro/index.js +4 -4
  130. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  131. package/dist/chains/eni/platforms/iro/token.js +107 -31
  132. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  133. package/dist/chains/eni/submit.js +5 -13
  134. package/dist/chains/index.d.ts +13 -0
  135. package/dist/chains/index.js +13 -0
  136. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  137. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -20
  138. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  139. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  140. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -56
  141. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  142. package/dist/chains/xlayer/eip7702/bundle-sell.js +26 -74
  143. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  144. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -68
  145. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  146. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  147. package/dist/chains/xlayer/eip7702/index.d.ts +29 -46
  148. package/dist/chains/xlayer/eip7702/index.js +27 -81
  149. package/dist/chains/xlayer/eip7702/{multi-hop-transfer/types.d.ts → multi-hop-transfer-helpers.d.ts} +17 -23
  150. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  151. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +58 -291
  152. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  153. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  154. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  155. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  156. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  157. package/dist/chains/xlayer/eip7702/{volume/types.d.ts → volume-helpers.d.ts} +41 -17
  158. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  159. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  160. package/dist/chains/xlayer/eip7702/volume.js +83 -158
  161. package/dist/chains/xlayer/eoa/constants.js +1 -1
  162. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  163. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  164. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  165. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  166. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +64 -276
  167. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  168. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +14 -14
  169. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  170. package/dist/chains/xlayer/eoa/index.js +8 -23
  171. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  172. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  173. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  174. package/dist/chains/xlayer/eoa/types.js +1 -3
  175. package/dist/contracts/helper3.d.ts +20 -17
  176. package/dist/contracts/helper3.js +56 -20
  177. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  178. package/dist/contracts/tm-bundle-helpers.js +72 -0
  179. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  180. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -117
  181. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -70
  182. package/dist/contracts/tm-bundle-merkle/config.js +2 -115
  183. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  184. package/dist/contracts/tm-bundle-merkle/core.js +1 -588
  185. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  186. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  187. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -50
  188. package/dist/contracts/tm-bundle-merkle/internal.js +2 -236
  189. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  190. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -687
  191. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  192. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  193. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  194. package/dist/contracts/tm-bundle-merkle/submit.js +3 -919
  195. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  196. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -505
  197. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  198. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  199. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  200. package/dist/contracts/tm-bundle-merkle/swap.js +2 -757
  201. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  202. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  203. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  204. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  205. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  206. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  207. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  208. package/dist/contracts/tm-bundle-merkle/utils.d.ts +5 -6
  209. package/dist/contracts/tm-bundle-merkle/utils.js +5 -6
  210. package/dist/contracts/tm-bundle.d.ts +3 -51
  211. package/dist/contracts/tm-bundle.js +102 -142
  212. package/dist/contracts/tm.d.ts +3 -2
  213. package/dist/contracts/tm.js +36 -32
  214. package/dist/contracts/tm1.js +9 -4
  215. package/dist/contracts/tm2.js +9 -4
  216. package/dist/dex/direct-router-helpers.d.ts +264 -0
  217. package/dist/dex/direct-router-helpers.js +539 -0
  218. package/dist/dex/direct-router.d.ts +3 -125
  219. package/dist/dex/direct-router.js +237 -652
  220. package/dist/dex/{direct-router/types.d.ts → types.d.ts} +1 -1
  221. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  222. package/dist/exports/root-bundle-and-tooling.js +30 -0
  223. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  224. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  225. package/dist/exports/root-foundations.d.ts +35 -0
  226. package/dist/exports/root-foundations.js +70 -0
  227. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  228. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  229. package/dist/flap/index.d.ts +10 -0
  230. package/dist/flap/index.js +8 -0
  231. package/dist/flows/create.d.ts +2 -2
  232. package/dist/flows/create.js +6 -6
  233. package/dist/flows/index.d.ts +1 -0
  234. package/dist/flows/index.js +1 -0
  235. package/dist/index.d.ts +20 -91
  236. package/dist/index.js +20 -215
  237. package/dist/shared/abis/common.d.ts +2 -83
  238. package/dist/shared/abis/common.js +2 -252
  239. package/dist/shared/abis/index.d.ts +5 -6
  240. package/dist/shared/abis/index.js +5 -7
  241. package/dist/shared/clients/blockrazor.js +41 -24
  242. package/dist/shared/clients/club48.js +30 -26
  243. package/dist/shared/clients/emitservice.js +2 -0
  244. package/dist/shared/clients/four.js +23 -18
  245. package/dist/shared/clients/index.d.ts +8 -0
  246. package/dist/shared/clients/index.js +8 -0
  247. package/dist/shared/clients/merkle.js +26 -30
  248. package/dist/shared/constants/addresses.d.ts +1 -1
  249. package/dist/shared/constants/addresses.js +11 -2
  250. package/dist/shared/constants/chains.d.ts +1 -1
  251. package/dist/shared/constants/chains.js +1 -1
  252. package/dist/shared/constants/gas.d.ts +1 -1
  253. package/dist/shared/constants/gas.js +2 -6
  254. package/dist/shared/constants/index.d.ts +3 -0
  255. package/dist/shared/constants/index.js +1 -0
  256. package/dist/shared/constants/quote.d.ts +30 -0
  257. package/dist/shared/constants/quote.js +37 -0
  258. package/dist/shared/flap/abi.js +1 -1
  259. package/dist/shared/flap/constants.d.ts +1 -1
  260. package/dist/shared/flap/constants.js +2 -2
  261. package/dist/shared/flap/curve.js +3 -0
  262. package/dist/shared/flap/errors.d.ts +1 -4
  263. package/dist/shared/flap/errors.js +21 -3
  264. package/dist/shared/flap/index.d.ts +2 -2
  265. package/dist/shared/flap/index.js +2 -2
  266. package/dist/shared/flap/meta.d.ts +16 -18
  267. package/dist/shared/flap/meta.js +14 -26
  268. package/dist/shared/flap/permit.js +6 -5
  269. package/dist/shared/flap/pinata.d.ts +9 -2
  270. package/dist/shared/flap/pinata.js +20 -18
  271. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  272. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  273. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  274. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  275. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  276. package/dist/shared/flap/portal-bundle-merkle/core.js +66 -156
  277. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +81 -86
  278. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  279. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  280. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  281. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  282. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  283. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  284. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  285. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  286. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  287. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  288. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  289. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  290. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  291. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +73 -3
  292. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  293. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  294. package/dist/shared/flap/portal-bundle.js +54 -42
  295. package/dist/shared/flap/portal.js +32 -10
  296. package/dist/shared/flap/vanity.js +4 -7
  297. package/dist/shared/flap/vault.d.ts +1 -1
  298. package/dist/shared/flap/vault.js +54 -48
  299. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  300. package/dist/shared/foundation/dex/v3-path.js +35 -0
  301. package/dist/shared/foundation/gas/bundle-gas.d.ts +39 -0
  302. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  303. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  304. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  305. package/dist/shared/foundation/index.d.ts +13 -0
  306. package/dist/shared/foundation/index.js +12 -0
  307. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  308. package/dist/shared/foundation/nonce/nonce-manager.js +180 -0
  309. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  310. package/dist/shared/foundation/normalize-unknown.js +29 -0
  311. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  312. package/dist/shared/foundation/sdk-logger.js +12 -0
  313. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  314. package/dist/shared/foundation/tx/build-request.js +25 -0
  315. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  316. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  317. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  318. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  319. package/dist/{utils/erc20/types.d.ts → shared/foundation/types/erc20.d.ts} +7 -19
  320. package/dist/{utils/holders-maker/types.d.ts → shared/foundation/types/holders-maker.d.ts} +4 -12
  321. package/dist/shared/foundation/types/index.d.ts +7 -0
  322. package/dist/{utils/lp-inspect/types.d.ts → shared/foundation/types/lp-inspect.d.ts} +4 -2
  323. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  324. package/dist/shared/foundation/types/multicall.js +1 -0
  325. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  326. package/dist/shared/foundation/types/private-sale.js +1 -0
  327. package/dist/{utils/quote-helpers/types.d.ts → shared/foundation/types/quote-helpers.d.ts} +1 -0
  328. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  329. package/dist/shared/four/tax-token.d.ts +1 -1
  330. package/dist/shared/four/tax-token.js +27 -7
  331. package/dist/shared/index.d.ts +6 -0
  332. package/dist/shared/index.js +4 -0
  333. package/dist/utils/airdrop-sweep.d.ts +4 -76
  334. package/dist/utils/airdrop-sweep.js +38 -52
  335. package/dist/utils/bundle-helpers.d.ts +9 -243
  336. package/dist/utils/bundle-helpers.js +10 -584
  337. package/dist/utils/constants.d.ts +5 -61
  338. package/dist/utils/constants.js +5 -80
  339. package/dist/utils/contract-factory.d.ts +2 -4
  340. package/dist/utils/contract-factory.js +25 -18
  341. package/dist/utils/erc20.d.ts +8 -90
  342. package/dist/utils/erc20.js +94 -153
  343. package/dist/utils/errors.d.ts +10 -22
  344. package/dist/utils/errors.js +61 -79
  345. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  346. package/dist/utils/holders-maker/addresses.js +15 -0
  347. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  348. package/dist/utils/holders-maker/buy-tx.js +278 -0
  349. package/dist/utils/holders-maker/constants.d.ts +6 -0
  350. package/dist/utils/holders-maker/constants.js +7 -0
  351. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  352. package/dist/utils/holders-maker/disperse.js +90 -0
  353. package/dist/utils/holders-maker/routing.d.ts +4 -0
  354. package/dist/utils/holders-maker/routing.js +45 -0
  355. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  356. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  357. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  358. package/dist/utils/holders-maker-helpers.js +9 -0
  359. package/dist/utils/holders-maker.d.ts +2 -138
  360. package/dist/utils/holders-maker.js +23 -651
  361. package/dist/utils/hop-chains.d.ts +35 -0
  362. package/dist/utils/hop-chains.js +215 -0
  363. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  364. package/dist/utils/lp-inspect-helpers.js +109 -0
  365. package/dist/utils/lp-inspect.d.ts +2 -112
  366. package/dist/utils/lp-inspect.js +63 -195
  367. package/dist/utils/mpcExclusive.d.ts +2 -5
  368. package/dist/utils/mpcExclusive.js +4 -3
  369. package/dist/utils/private-sale.d.ts +2 -58
  370. package/dist/utils/private-sale.js +2 -7
  371. package/dist/utils/provider-factory.d.ts +4 -0
  372. package/dist/utils/provider-factory.js +10 -0
  373. package/dist/utils/quote-helpers.d.ts +4 -45
  374. package/dist/utils/quote-helpers.js +15 -65
  375. package/dist/utils/stealth-transfer.d.ts +2 -28
  376. package/dist/utils/stealth-transfer.js +30 -14
  377. package/dist/utils/swap-helpers.d.ts +0 -3
  378. package/dist/utils/swap-helpers.js +6 -9
  379. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  380. package/dist/utils/types/airdrop-sweep.js +1 -0
  381. package/dist/utils/types/contract-factory.d.ts +1 -0
  382. package/dist/utils/types/contract-factory.js +1 -0
  383. package/dist/utils/types/erc20.d.ts +1 -0
  384. package/dist/utils/types/erc20.js +1 -0
  385. package/dist/utils/types/errors.d.ts +1 -0
  386. package/dist/utils/types/errors.js +1 -0
  387. package/dist/utils/types/holders-maker.d.ts +1 -0
  388. package/dist/utils/types/holders-maker.js +1 -0
  389. package/dist/utils/types/hop-chains.d.ts +8 -0
  390. package/dist/utils/types/hop-chains.js +1 -0
  391. package/dist/utils/types/index.d.ts +13 -0
  392. package/dist/utils/types/index.js +1 -0
  393. package/dist/utils/types/lp-inspect.d.ts +1 -0
  394. package/dist/utils/types/lp-inspect.js +1 -0
  395. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  396. package/dist/utils/types/mpc-exclusive.js +1 -0
  397. package/dist/utils/types/private-sale.d.ts +1 -0
  398. package/dist/utils/types/private-sale.js +1 -0
  399. package/dist/utils/types/quote-helpers.d.ts +1 -0
  400. package/dist/utils/types/quote-helpers.js +1 -0
  401. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  402. package/dist/utils/types/stealth-transfer.js +1 -0
  403. package/dist/utils/types/wallet.d.ts +25 -0
  404. package/dist/utils/types/wallet.js +1 -0
  405. package/dist/utils/wallet.d.ts +2 -25
  406. package/dist/utils/wallet.js +9 -10
  407. package/package.json +120 -2
  408. package/src/abis/contracts/TaxToken.json +969 -0
  409. package/src/abis/contracts/TokenManager.json +836 -0
  410. package/src/abis/contracts/TokenManager2.json +136 -0
  411. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  412. package/dist/chains/bsc/four/submit/blockrazor.d.ts +0 -18
  413. package/dist/chains/bsc/four/submit/blockrazor.js +0 -86
  414. package/dist/chains/bsc/four/submit/direct.d.ts +0 -66
  415. package/dist/chains/bsc/four/submit/direct.js +0 -452
  416. package/dist/chains/bsc/four/submit/helpers.d.ts +0 -18
  417. package/dist/chains/bsc/four/submit/helpers.js +0 -57
  418. package/dist/chains/bsc/four/submit/index.d.ts +0 -12
  419. package/dist/chains/bsc/four/submit/index.js +0 -11
  420. package/dist/chains/bsc/four/submit/merkle.d.ts +0 -18
  421. package/dist/chains/bsc/four/submit/merkle.js +0 -74
  422. package/dist/chains/bsc/four/submit/types.d.ts +0 -143
  423. package/dist/chains/bsc/four/swap/index.d.ts +0 -32
  424. package/dist/chains/bsc/four/swap/types.d.ts +0 -70
  425. package/dist/chains/bsc/four/utils/index.d.ts +0 -20
  426. package/dist/chains/bsc/four/utils/index.js +0 -1558
  427. package/dist/chains/bsc/pancake/bundle-buy-first/index.d.ts +0 -8
  428. package/dist/chains/bsc/pancake/bundle-buy-first/index.js +0 -907
  429. package/dist/chains/bsc/pancake/bundle-buy-first/types.d.ts +0 -73
  430. package/dist/chains/bsc/pancake/bundle-swap/helpers.d.ts +0 -102
  431. package/dist/chains/bsc/pancake/bundle-swap/index.d.ts +0 -50
  432. package/dist/chains/bsc/pancake/bundle-swap/index.js +0 -1066
  433. package/dist/chains/bsc/pancake/bundle-swap/types.d.ts +0 -202
  434. package/dist/chains/bsc/pancake/bundle-swap/types.js +0 -3
  435. package/dist/chains/xlayer/eip7702/bundle-swap/index.d.ts +0 -72
  436. package/dist/chains/xlayer/eip7702/bundle-swap/index.js +0 -921
  437. package/dist/chains/xlayer/eip7702/bundle-swap/types.d.ts +0 -65
  438. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.d.ts +0 -128
  439. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.js +0 -857
  440. package/dist/chains/xlayer/eip7702/volume/index.d.ts +0 -96
  441. package/dist/chains/xlayer/eip7702/volume/index.js +0 -793
  442. package/dist/dex/direct-router/index.d.ts +0 -70
  443. package/dist/dex/direct-router/index.js +0 -1410
  444. package/dist/shared/abis/TaxToken.json +0 -969
  445. package/dist/shared/abis/TokenManager.json +0 -836
  446. package/dist/shared/abis/TokenManager2.json +0 -136
  447. package/dist/shared/abis/TokenManagerHelper3.json +0 -993
  448. package/dist/shared/flap/__tests__/curve.test.js +0 -85
  449. package/dist/shared/flap/portal/index.d.ts +0 -12
  450. package/dist/shared/flap/portal/index.js +0 -11
  451. package/dist/shared/flap/portal/portal.d.ts +0 -47
  452. package/dist/shared/flap/portal/portal.js +0 -218
  453. package/dist/shared/flap/portal/types.d.ts +0 -227
  454. package/dist/shared/flap/portal/types.js +0 -80
  455. package/dist/shared/flap/portal/writer.d.ts +0 -121
  456. package/dist/shared/flap/portal/writer.js +0 -265
  457. package/dist/shared/flap/portal-bundle-merkle/core/index.d.ts +0 -18
  458. package/dist/shared/flap/portal-bundle-merkle/core/index.js +0 -938
  459. package/dist/shared/flap/portal-bundle-merkle/swap/index.d.ts +0 -42
  460. package/dist/shared/flap/portal-bundle-merkle/swap/index.js +0 -1448
  461. package/dist/shared/flap/portal-bundle-merkle/swap/types.d.ts +0 -84
  462. package/dist/shared/flap/portal-bundle-merkle/utils/index.d.ts +0 -17
  463. package/dist/shared/flap/portal-bundle-merkle/utils/index.js +0 -1024
  464. package/dist/shared/flap/portal-bundle-merkle/utils/types.d.ts +0 -16
  465. package/dist/shared 2/abis/TaxToken.json +0 -105
  466. package/dist/shared 2/abis/TokenManager.json +0 -836
  467. package/dist/shared 2/abis/TokenManager2.json +0 -60
  468. package/dist/shared 2/abis/TokenManagerHelper3.json +0 -993
  469. package/dist/shared 2/abis/common.d.ts +0 -85
  470. package/dist/shared 2/abis/common.js +0 -254
  471. package/dist/shared 2/abis/index.d.ts +0 -8
  472. package/dist/shared 2/abis/index.js +0 -8
  473. package/dist/shared 2/clients/blockrazor.d.ts +0 -314
  474. package/dist/shared 2/clients/blockrazor.js +0 -596
  475. package/dist/shared 2/clients/club48.d.ts +0 -154
  476. package/dist/shared 2/clients/club48.js +0 -331
  477. package/dist/shared 2/clients/emitservice.d.ts +0 -47
  478. package/dist/shared 2/clients/emitservice.js +0 -44
  479. package/dist/shared 2/clients/four.d.ts +0 -132
  480. package/dist/shared 2/clients/four.js +0 -281
  481. package/dist/shared 2/clients/merkle.d.ts +0 -210
  482. package/dist/shared 2/clients/merkle.js +0 -400
  483. package/dist/shared 2/flap/__tests__/curve.test.js +0 -85
  484. package/dist/shared 2/flap/abi.d.ts +0 -4
  485. package/dist/shared 2/flap/abi.js +0 -4
  486. package/dist/shared 2/flap/constants.d.ts +0 -128
  487. package/dist/shared 2/flap/constants.js +0 -143
  488. package/dist/shared 2/flap/curve.d.ts +0 -33
  489. package/dist/shared 2/flap/curve.js +0 -84
  490. package/dist/shared 2/flap/errors.d.ts +0 -37
  491. package/dist/shared 2/flap/errors.js +0 -114
  492. package/dist/shared 2/flap/index.d.ts +0 -22
  493. package/dist/shared 2/flap/index.js +0 -33
  494. package/dist/shared 2/flap/ipfs.d.ts +0 -21
  495. package/dist/shared 2/flap/ipfs.js +0 -38
  496. package/dist/shared 2/flap/meta.d.ts +0 -30
  497. package/dist/shared 2/flap/meta.js +0 -195
  498. package/dist/shared 2/flap/permit.d.ts +0 -16
  499. package/dist/shared 2/flap/permit.js +0 -67
  500. package/dist/shared 2/flap/pinata.d.ts +0 -40
  501. package/dist/shared 2/flap/pinata.js +0 -106
  502. package/dist/shared 2/flap/portal-bundle-merkle/config.d.ts +0 -79
  503. package/dist/shared 2/flap/portal-bundle-merkle/config.js +0 -133
  504. package/dist/shared 2/flap/portal-bundle-merkle/core.d.ts +0 -18
  505. package/dist/shared 2/flap/portal-bundle-merkle/core.js +0 -938
  506. package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.d.ts +0 -125
  507. package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.js +0 -665
  508. package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -88
  509. package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.js +0 -446
  510. package/dist/shared 2/flap/portal-bundle-merkle/index.d.ts +0 -14
  511. package/dist/shared 2/flap/portal-bundle-merkle/index.js +0 -26
  512. package/dist/shared 2/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -28
  513. package/dist/shared 2/flap/portal-bundle-merkle/private.d.ts +0 -17
  514. package/dist/shared 2/flap/portal-bundle-merkle/private.js +0 -549
  515. package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
  516. package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.js +0 -831
  517. package/dist/shared 2/flap/portal-bundle-merkle/swap.d.ts +0 -201
  518. package/dist/shared 2/flap/portal-bundle-merkle/swap.js +0 -1359
  519. package/dist/shared 2/flap/portal-bundle-merkle/types.d.ts +0 -358
  520. package/dist/shared 2/flap/portal-bundle-merkle/utils.d.ts +0 -89
  521. package/dist/shared 2/flap/portal-bundle-merkle/utils.js +0 -963
  522. package/dist/shared 2/flap/portal-bundle.d.ts +0 -119
  523. package/dist/shared 2/flap/portal-bundle.js +0 -584
  524. package/dist/shared 2/flap/portal.d.ts +0 -392
  525. package/dist/shared 2/flap/portal.js +0 -559
  526. package/dist/shared 2/flap/vanity.d.ts +0 -48
  527. package/dist/shared 2/flap/vanity.js +0 -110
  528. package/dist/shared 2/flap/vault.d.ts +0 -240
  529. package/dist/shared 2/flap/vault.js +0 -366
  530. package/dist/shared 2/four/index.d.ts +0 -7
  531. package/dist/shared 2/four/index.js +0 -22
  532. package/dist/shared 2/four/tax-token.d.ts +0 -176
  533. package/dist/shared 2/four/tax-token.js +0 -302
  534. package/dist/shared 2/index.d.ts +0 -10
  535. package/dist/shared 2/index.js +0 -10
  536. package/dist/utils/__tests__/errors.test.js +0 -76
  537. package/dist/utils/erc20/index.d.ts +0 -242
  538. package/dist/utils/erc20/index.js +0 -645
  539. package/dist/utils/holders-maker/helpers.d.ts +0 -43
  540. package/dist/utils/holders-maker/helpers.js +0 -371
  541. package/dist/utils/holders-maker/index.d.ts +0 -26
  542. package/dist/utils/holders-maker/index.js +0 -218
  543. package/dist/utils/holders-maker/types.js +0 -4
  544. package/dist/utils/lp-inspect/index.d.ts +0 -44
  545. package/dist/utils/lp-inspect/index.js +0 -937
  546. package/dist/utils/quote-helpers/index.d.ts +0 -107
  547. package/dist/utils/quote-helpers/index.js +0 -346
  548. /package/dist/{chains/bsc/four/submit/types.js → __tests__/subpath-exports.test.d.ts} +0 -0
  549. /package/dist/{chains/bsc/four/swap/types.js → bundle-core/__tests__/config-helpers.test.d.ts} +0 -0
  550. /package/dist/{chains/bsc/four/utils/types.d.ts → bundle-core/__tests__/facade-parity.test.d.ts} +0 -0
  551. /package/dist/{chains/bsc/four/utils/types.js → bundle-core/__tests__/sign-context-helpers.test.d.ts} +0 -0
  552. /package/dist/{chains/bsc/pancake/bundle-buy-first/types.js → bundle-core/__tests__/sign-fixture.test.d.ts} +0 -0
  553. /package/dist/{chains/xlayer/eip7702/multi-hop-transfer/types.js → bundle-core/four-meme/types/buy-first.js} +0 -0
  554. /package/dist/{chains/xlayer/eip7702/volume/types.js → bundle-core/four-meme/types/core-flow.js} +0 -0
  555. /package/dist/{dex/direct-router/types.js → bundle-core/four-meme/types/index.js} +0 -0
  556. /package/dist/{shared 2/flap/__tests__/curve.test.d.ts → bundle-core/four-meme/types/swap-internal.js} +0 -0
  557. /package/dist/{chains/xlayer/eip7702/bundle-swap → bundle-core/four-meme}/types.js +0 -0
  558. /package/dist/{shared/flap/__tests__/curve.test.d.ts → bundle-core/types/index.js} +0 -0
  559. /package/dist/{shared 2/flap/portal-bundle-merkle → bundle-core}/types.js +0 -0
  560. /package/dist/{shared/flap/portal-bundle-merkle/core/types.d.ts → chains/xlayer/eip7702/multi-hop-transfer-helpers.js} +0 -0
  561. /package/dist/{shared/flap/portal-bundle-merkle/core → dex}/types.js +0 -0
  562. /package/dist/shared/{flap/portal-bundle-merkle/swap/types.js → foundation/tx/wallet-sign-patch.d.ts} +0 -0
  563. /package/dist/shared/{flap/portal-bundle-merkle/utils/types.js → foundation/types/airdrop-sweep.js} +0 -0
  564. /package/dist/{utils/__tests__/errors.test.d.ts → shared/foundation/types/erc20.js} +0 -0
  565. /package/dist/{utils/erc20/types.js → shared/foundation/types/holders-maker.js} +0 -0
  566. /package/dist/{utils/lp-inspect/types.js → shared/foundation/types/index.js} +0 -0
  567. /package/dist/{utils/quote-helpers/types.js → shared/foundation/types/lp-inspect.js} +0 -0
@@ -0,0 +1,27 @@
1
+ import type { FourPrivateBuySignParams, FourPrivateSellSignParams, FourPrivateTransactionResult, FourBatchPrivateBuySignParams, FourBatchPrivateSellSignParams, FourBatchPrivateMerkleResult } from './types.js';
2
+ /**
3
+ * 私有购买(单笔)(仅签名版本 - 不依赖 Merkle)
4
+ * ✅ 精简版:只负责签名交易,不提交到 Merkle
5
+ * ✅ 优化:并行获取 gasPrice 和 nonce
6
+ */
7
+ export declare function fourPrivateBuyMerkle(params: FourPrivateBuySignParams): Promise<FourPrivateTransactionResult>;
8
+ /**
9
+ * 私有卖出(单笔)(仅签名版本 - 不依赖 Merkle)
10
+ * ✅ 精简版:只负责签名交易,不提交到 Merkle
11
+ * ✅ 自动检查授权,智能处理授权+卖出
12
+ * ✅ 优化:并行获取 gasPrice、allowance、nonce
13
+ */
14
+ export declare function fourPrivateSellMerkle(params: FourPrivateSellSignParams): Promise<FourPrivateTransactionResult>;
15
+ /**
16
+ * 批量私有购买(仅签名版本 - 不依赖 Merkle)
17
+ * ✅ 精简版:只负责签名交易,不提交到 Merkle
18
+ * ✅ 优化:并行获取 gasPrice 和 nonces,批量构建交易
19
+ */
20
+ export declare function fourBatchPrivateBuyMerkle(params: FourBatchPrivateBuySignParams): Promise<FourBatchPrivateMerkleResult>;
21
+ /**
22
+ * 批量私有卖出(仅签名版本 - 不依赖 Merkle)
23
+ * ✅ 精简版:只负责签名交易,不提交到 Merkle
24
+ * ✅ 自动包含授权交易,无需前端单独调用
25
+ * ✅ 优化:并行获取所有查询数据,批量获取 nonces
26
+ */
27
+ export declare function fourBatchPrivateSellMerkle(params: FourBatchPrivateSellSignParams): Promise<FourBatchPrivateMerkleResult>;
@@ -0,0 +1,465 @@
1
+ import { ethers, Wallet } from 'ethers';
2
+ import { NonceManager, getOptimizedGasPrice, buildProfitHopTransactions, PROFIT_HOP_COUNT, } from '../../utils/bundle-helpers.js';
3
+ import { ADDRESSES, BLOCKRAZOR_BUILDER_EOA } from '../../shared/constants/index.js';
4
+ import { TM2_ABI } from '../../abis/common.js';
5
+ import { getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, calculateBatchProfit, getProfitRecipient, getBribeAmount, } from '../config-helpers.js';
6
+ import { trySell } from '../../contracts/tm.js';
7
+ import { createSignProvider } from '../sign-context-helpers.js';
8
+ const CHAIN_ID = 56;
9
+ const DEFAULT_GAS_LIMIT = 800000;
10
+ // ✅ TM2_ABI 从公共模块导入
11
+ // ✅ 本地 getGasLimit(FourAnyConfig 支持 bigint gasLimit)
12
+ function getGasLimit(config, defaultGas = DEFAULT_GAS_LIMIT) {
13
+ if (config.gasLimit !== undefined) {
14
+ return typeof config.gasLimit === 'bigint' ? config.gasLimit : BigInt(config.gasLimit);
15
+ }
16
+ const multiplier = config.gasLimitMultiplier ?? 1.0;
17
+ return BigInt(Math.ceil(defaultGas * multiplier));
18
+ }
19
+ /**
20
+ * 私有购买(单笔)(仅签名版本 - 不依赖 Merkle)
21
+ * ✅ 精简版:只负责签名交易,不提交到 Merkle
22
+ * ✅ 优化:并行获取 gasPrice 和 nonce
23
+ */
24
+ export async function fourPrivateBuyMerkle(params) {
25
+ const { privateKey, tokenAddress, funds, to, config } = params;
26
+ // ✅ 直接使用传入的 RPC URL 创建 provider(不依赖 Merkle)
27
+ const provider = createSignProvider(config.rpcUrl, CHAIN_ID, 'BSC');
28
+ const wallet = new Wallet(privateKey, provider);
29
+ const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
30
+ const txType = getTxType(config);
31
+ const gasLimit = getGasLimit(config);
32
+ const originalFundsWei = ethers.parseEther(funds);
33
+ // ✅ 利润提取配置(同步计算)
34
+ const extractProfit = shouldExtractProfit();
35
+ let profitWei = 0n;
36
+ let actualFundsWei = originalFundsWei;
37
+ if (extractProfit) {
38
+ const { profit, remaining } = calculateProfit(originalFundsWei);
39
+ profitWei = profit;
40
+ actualFundsWei = remaining;
41
+ }
42
+ const tm2 = new ethers.Contract(tmAddr, TM2_ABI, wallet);
43
+ // ✅ 获取贿赂金额
44
+ const bribeAmount = getBribeAmount(config);
45
+ const needBribeTx = bribeAmount > 0n;
46
+ const needProfitTx = extractProfit && profitWei > 0n;
47
+ // ✅ 优化:并行获取 gasPrice、nonce 和构建未签名交易
48
+ const [gasPrice, baseNonce, unsigned] = await Promise.all([
49
+ getOptimizedGasPrice(provider, getGasPriceConfig(config)),
50
+ wallet.getNonce(),
51
+ tm2.buyTokenAMAP.populateTransaction(0n, tokenAddress, to ?? wallet.address, actualFundsWei, 0n, {
52
+ value: actualFundsWei,
53
+ }),
54
+ ]);
55
+ // ✅ 分配 nonces:贿赂 → 买入 → 利润
56
+ let nonceIdx = 0;
57
+ const bribeNonce = needBribeTx ? baseNonce + nonceIdx++ : undefined;
58
+ const buyNonce = baseNonce + nonceIdx++;
59
+ const profitNonce = needProfitTx ? baseNonce + nonceIdx : undefined;
60
+ // ✅ 并行签名所有交易(贿赂、买入、利润)
61
+ const signPromises = [];
62
+ // 贿赂交易
63
+ if (needBribeTx && bribeNonce !== undefined) {
64
+ signPromises.push(wallet.signTransaction({
65
+ to: BLOCKRAZOR_BUILDER_EOA,
66
+ value: bribeAmount,
67
+ nonce: bribeNonce,
68
+ gasPrice,
69
+ gasLimit: 21000n,
70
+ chainId: CHAIN_ID,
71
+ type: txType,
72
+ }));
73
+ }
74
+ // 买入交易
75
+ signPromises.push(wallet.signTransaction({
76
+ ...unsigned,
77
+ from: wallet.address,
78
+ nonce: buyNonce,
79
+ gasLimit,
80
+ gasPrice,
81
+ chainId: CHAIN_ID,
82
+ type: txType,
83
+ value: actualFundsWei,
84
+ }));
85
+ // ✅ 并行签名完成后按顺序返回
86
+ const signedTxs = await Promise.all(signPromises);
87
+ // ✅ 利润多跳转账(强制 2 跳中转)
88
+ let profitHopWallets;
89
+ if (needProfitTx && profitNonce !== undefined) {
90
+ const profitHopResult = await buildProfitHopTransactions({
91
+ provider,
92
+ payerWallet: wallet,
93
+ profitAmount: profitWei,
94
+ profitRecipient: getProfitRecipient(),
95
+ hopCount: PROFIT_HOP_COUNT,
96
+ gasPrice,
97
+ chainId: CHAIN_ID,
98
+ txType,
99
+ startNonce: profitNonce,
100
+ });
101
+ signedTxs.push(...profitHopResult.signedTransactions);
102
+ profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
103
+ }
104
+ return {
105
+ signedTransactions: signedTxs,
106
+ profitHopWallets, // ✅ 返回利润多跳钱包
107
+ };
108
+ }
109
+ /**
110
+ * 私有卖出(单笔)(仅签名版本 - 不依赖 Merkle)
111
+ * ✅ 精简版:只负责签名交易,不提交到 Merkle
112
+ * ✅ 自动检查授权,智能处理授权+卖出
113
+ * ✅ 优化:并行获取 gasPrice、allowance、nonce
114
+ */
115
+ export async function fourPrivateSellMerkle(params) {
116
+ const { privateKey, tokenAddress, amount, minFunds, config } = params;
117
+ // ✅ 直接使用传入的 RPC URL 创建 provider(不依赖 Merkle)
118
+ const provider = createSignProvider(config.rpcUrl, CHAIN_ID, 'BSC');
119
+ const wallet = new Wallet(privateKey, provider);
120
+ const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
121
+ const txType = getTxType(config);
122
+ const sellGasLimit = getGasLimit(config);
123
+ const amountWei = ethers.parseUnits(amount, 18);
124
+ const minOut = minFunds ?? 0n;
125
+ const tm2 = new ethers.Contract(tmAddr, TM2_ABI, wallet);
126
+ // ✅ 优化:并行获取 gasPrice、nonce 和构建未签名交易(已移除授权检查)
127
+ const [gasPrice, sellNonce, sellUnsigned] = await Promise.all([
128
+ getOptimizedGasPrice(provider, getGasPriceConfig(config)),
129
+ wallet.getNonce(),
130
+ tm2.sellToken.populateTransaction(0n, tokenAddress, amountWei, 0n), // ✅ 已移除滑点保护:minOut 固定为 0
131
+ ]);
132
+ // ✅ 已移除授权检查(前端负责确保授权)
133
+ // ✅ 利润计算(同步)
134
+ const extractProfit = shouldExtractProfit();
135
+ const { profit } = extractProfit ? calculateProfit(minOut) : { profit: 0n };
136
+ // ✅ 获取贿赂金额
137
+ const bribeAmount = getBribeAmount(config);
138
+ const needBribeTx = bribeAmount > 0n;
139
+ const needProfitTx = extractProfit && profit > 0n;
140
+ // ✅ 分配 nonces:贿赂 → 卖出 → 利润
141
+ let nonceIdx = 0;
142
+ const bribeNonce = needBribeTx ? sellNonce + nonceIdx++ : undefined;
143
+ const actualSellNonce = sellNonce + nonceIdx++;
144
+ const profitNonce = needProfitTx ? sellNonce + nonceIdx : undefined;
145
+ // ✅ 并行签名所有交易(贿赂、卖出、利润)
146
+ const signPromises = [];
147
+ // 贿赂交易
148
+ if (needBribeTx && bribeNonce !== undefined) {
149
+ signPromises.push(wallet.signTransaction({
150
+ to: BLOCKRAZOR_BUILDER_EOA,
151
+ value: bribeAmount,
152
+ nonce: bribeNonce,
153
+ gasPrice,
154
+ gasLimit: 21000n,
155
+ chainId: CHAIN_ID,
156
+ type: txType,
157
+ }));
158
+ }
159
+ // 卖出交易
160
+ signPromises.push(wallet.signTransaction({
161
+ ...sellUnsigned,
162
+ from: wallet.address,
163
+ nonce: actualSellNonce,
164
+ gasLimit: sellGasLimit,
165
+ gasPrice,
166
+ chainId: CHAIN_ID,
167
+ type: txType,
168
+ value: 0n,
169
+ }));
170
+ // ✅ 并行签名完成后按顺序返回
171
+ const signedTxs = await Promise.all(signPromises);
172
+ // ✅ 利润多跳转账(强制 2 跳中转)
173
+ let profitHopWallets;
174
+ if (needProfitTx && profitNonce !== undefined) {
175
+ const profitHopResult = await buildProfitHopTransactions({
176
+ provider,
177
+ payerWallet: wallet,
178
+ profitAmount: profit,
179
+ profitRecipient: getProfitRecipient(),
180
+ hopCount: PROFIT_HOP_COUNT,
181
+ gasPrice,
182
+ chainId: CHAIN_ID,
183
+ txType,
184
+ startNonce: profitNonce,
185
+ });
186
+ signedTxs.push(...profitHopResult.signedTransactions);
187
+ profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
188
+ }
189
+ return {
190
+ signedTransactions: signedTxs,
191
+ profitHopWallets, // ✅ 返回利润多跳钱包
192
+ };
193
+ }
194
+ /**
195
+ * 批量私有购买(仅签名版本 - 不依赖 Merkle)
196
+ * ✅ 精简版:只负责签名交易,不提交到 Merkle
197
+ * ✅ 优化:并行获取 gasPrice 和 nonces,批量构建交易
198
+ */
199
+ export async function fourBatchPrivateBuyMerkle(params) {
200
+ const { privateKeys, fundsList, tokenAddress, config } = params;
201
+ if (privateKeys.length !== fundsList.length) {
202
+ throw new Error('privateKeys and fundsList length mismatch');
203
+ }
204
+ // ✅ 直接使用传入的 RPC URL 创建 provider(不依赖 Merkle)
205
+ const provider = createSignProvider(config.rpcUrl, CHAIN_ID, 'BSC');
206
+ const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
207
+ const txType = getTxType(config);
208
+ const finalGasLimit = getGasLimit(config);
209
+ const wallets = privateKeys.map((k) => new Wallet(k, provider));
210
+ const originalAmountsWei = fundsList.map((a) => ethers.parseEther(a));
211
+ // ✅ 利润提取配置(同步计算)
212
+ const extractProfit = shouldExtractProfit();
213
+ const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei);
214
+ const actualAmountsWei = remainingAmounts;
215
+ // ✅ 获取贿赂金额
216
+ const bribeAmount = getBribeAmount(config);
217
+ const needBribeTx = bribeAmount > 0n;
218
+ // ✅ 找出投入金额最多的钱包(作为贿赂和利润支付者)- 同步计算
219
+ let maxFundsIndex = 0;
220
+ let maxFunds = originalAmountsWei[0];
221
+ for (let i = 1; i < originalAmountsWei.length; i++) {
222
+ if (originalAmountsWei[i] > maxFunds) {
223
+ maxFunds = originalAmountsWei[i];
224
+ maxFundsIndex = i;
225
+ }
226
+ }
227
+ const tm2Contracts = wallets.map((w) => new ethers.Contract(tmAddr, TM2_ABI, w));
228
+ const nonceManager = new NonceManager(provider);
229
+ const needProfitTx = extractProfit && totalProfit > 0n;
230
+ // ✅ 计算 payer 需要的 nonce 数量:贿赂(可选) + 买入 + 利润(可选)
231
+ const payerNonceCount = 1 + (needBribeTx ? 1 : 0) + (needProfitTx ? 1 : 0);
232
+ // ✅ 优化:并行获取 gasPrice、nonces 和构建未签名交易
233
+ const [gasPrice, unsignedList, noncesResult] = await Promise.all([
234
+ getOptimizedGasPrice(provider, getGasPriceConfig(config)),
235
+ Promise.all(tm2Contracts.map((c, i) => c.buyTokenAMAP.populateTransaction(0n, tokenAddress, wallets[i].address, actualAmountsWei[i], 0n, {
236
+ value: actualAmountsWei[i],
237
+ }))),
238
+ (async () => {
239
+ if (payerNonceCount > 1) {
240
+ // payer 需要多个连续 nonce
241
+ const payerNonces = await nonceManager.getNextNonceBatch(wallets[maxFundsIndex], payerNonceCount);
242
+ // 其他钱包各需要 1 个 nonce
243
+ const otherWallets = wallets.filter((_, i) => i !== maxFundsIndex);
244
+ const otherNonces = otherWallets.length > 0 ? await nonceManager.getNextNoncesForWallets(otherWallets) : [];
245
+ // 组装最终的 nonces 数组(保持原顺序)
246
+ const nonces = [];
247
+ let otherIdx = 0;
248
+ let nonceIdx = 0;
249
+ const bribeNonce = needBribeTx ? payerNonces[nonceIdx++] : undefined;
250
+ for (let i = 0; i < wallets.length; i++) {
251
+ if (i === maxFundsIndex) {
252
+ nonces.push(payerNonces[nonceIdx++]); // 买入交易
253
+ }
254
+ else {
255
+ nonces.push(otherNonces[otherIdx++]);
256
+ }
257
+ }
258
+ const profitNonce = needProfitTx ? payerNonces[nonceIdx] : undefined;
259
+ return { nonces, bribeNonce, profitNonce };
260
+ }
261
+ else {
262
+ // 所有钱包各 1 个 nonce
263
+ const nonces = await nonceManager.getNextNoncesForWallets(wallets);
264
+ return { nonces, bribeNonce: undefined, profitNonce: undefined };
265
+ }
266
+ })(),
267
+ ]);
268
+ const { nonces, bribeNonce, profitNonce } = noncesResult;
269
+ // ✅ 贿赂交易放在首位(提高 BlockRazor 打包优先级)
270
+ const signedTxs = [];
271
+ if (needBribeTx && bribeNonce !== undefined) {
272
+ const bribeTx = await wallets[maxFundsIndex].signTransaction({
273
+ to: BLOCKRAZOR_BUILDER_EOA,
274
+ value: bribeAmount,
275
+ nonce: bribeNonce,
276
+ gasPrice,
277
+ gasLimit: 21000n,
278
+ chainId: CHAIN_ID,
279
+ type: txType,
280
+ });
281
+ signedTxs.push(bribeTx);
282
+ }
283
+ // ✅ 并行签名所有买入交易
284
+ const signedList = await Promise.all(unsignedList.map((unsigned, i) => wallets[i].signTransaction({
285
+ ...unsigned,
286
+ from: wallets[i].address,
287
+ nonce: nonces[i],
288
+ gasLimit: finalGasLimit,
289
+ gasPrice,
290
+ chainId: CHAIN_ID,
291
+ type: txType,
292
+ value: actualAmountsWei[i],
293
+ })));
294
+ signedTxs.push(...signedList);
295
+ // ✅ 利润多跳转账(强制 2 跳中转)
296
+ let profitHopWallets;
297
+ if (needProfitTx && profitNonce !== undefined) {
298
+ const profitHopResult = await buildProfitHopTransactions({
299
+ provider,
300
+ payerWallet: wallets[maxFundsIndex],
301
+ profitAmount: totalProfit,
302
+ profitRecipient: getProfitRecipient(),
303
+ hopCount: PROFIT_HOP_COUNT,
304
+ gasPrice,
305
+ chainId: CHAIN_ID,
306
+ txType,
307
+ startNonce: profitNonce,
308
+ });
309
+ signedTxs.push(...profitHopResult.signedTransactions);
310
+ profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
311
+ }
312
+ nonceManager.clearTemp();
313
+ return {
314
+ signedTransactions: signedTxs,
315
+ profitHopWallets, // ✅ 返回利润多跳钱包
316
+ };
317
+ }
318
+ /**
319
+ * 批量私有卖出(仅签名版本 - 不依赖 Merkle)
320
+ * ✅ 精简版:只负责签名交易,不提交到 Merkle
321
+ * ✅ 自动包含授权交易,无需前端单独调用
322
+ * ✅ 优化:并行获取所有查询数据,批量获取 nonces
323
+ */
324
+ export async function fourBatchPrivateSellMerkle(params) {
325
+ const { privateKeys, amounts, tokenAddress, config, minFundsEach } = params;
326
+ if (privateKeys.length !== amounts.length) {
327
+ throw new Error('privateKeys and amounts length mismatch');
328
+ }
329
+ // ✅ 直接使用传入的 RPC URL 创建 provider(不依赖 Merkle)
330
+ const provider = createSignProvider(config.rpcUrl, CHAIN_ID, 'BSC');
331
+ const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
332
+ const txType = getTxType(config);
333
+ const sellGasLimit = getGasLimit(config);
334
+ const wallets = privateKeys.map((k) => new Wallet(k, provider));
335
+ const amountsWei = amounts.map((a) => ethers.parseUnits(a, 18));
336
+ const rpcUrl = config.rpcUrl;
337
+ // ✅ 优化:并行获取 gasPrice 和 quotedOutputs(已移除授权和余额检查)
338
+ const [gasPrice, quotedOutputs] = await Promise.all([
339
+ getOptimizedGasPrice(provider, getGasPriceConfig(config)),
340
+ // 获取预期收益(用于计算利润)
341
+ minFundsEach !== undefined
342
+ ? Promise.resolve((() => {
343
+ const minOutWei = typeof minFundsEach === 'string' ? ethers.parseEther(minFundsEach) : minFundsEach;
344
+ return new Array(wallets.length).fill((minOutWei * 100n) / 95n);
345
+ })())
346
+ : Promise.all(amountsWei.map(async (amount) => {
347
+ try {
348
+ const result = await trySell('BSC', rpcUrl, tokenAddress, amount);
349
+ return result.funds;
350
+ }
351
+ catch {
352
+ return 0n;
353
+ }
354
+ })),
355
+ ]);
356
+ // ✅ 已移除滑点保护:minOuts 固定为 0
357
+ const minOuts = new Array(wallets.length).fill(0n);
358
+ // ✅ 计算总利润和找出收益最高的钱包(同步计算)
359
+ const extractProfit = shouldExtractProfit();
360
+ let totalProfit = 0n;
361
+ let maxRevenueIndex = 0;
362
+ let maxRevenue = 0n;
363
+ if (extractProfit) {
364
+ for (let i = 0; i < wallets.length; i++) {
365
+ if (quotedOutputs[i] > 0n) {
366
+ const { profit } = calculateProfit(quotedOutputs[i]);
367
+ totalProfit += profit;
368
+ if (quotedOutputs[i] > maxRevenue) {
369
+ maxRevenue = quotedOutputs[i];
370
+ maxRevenueIndex = i;
371
+ }
372
+ }
373
+ }
374
+ }
375
+ // ✅ 获取贿赂金额
376
+ const bribeAmount = getBribeAmount(config);
377
+ const needBribeTx = bribeAmount > 0n;
378
+ const tm2Contracts = wallets.map((w) => new ethers.Contract(tmAddr, TM2_ABI, w));
379
+ const nonceManager = new NonceManager(provider);
380
+ const needProfitTx = extractProfit && totalProfit > 0n;
381
+ // ✅ 计算 payer 需要的 nonce 数量:贿赂(可选) + 卖出 + 利润(可选)
382
+ const payerNonceCount = 1 + (needBribeTx ? 1 : 0) + (needProfitTx ? 1 : 0);
383
+ // ✅ 优化:第二批并行获取 - nonces 和构建未签名交易
384
+ const [sellUnsigned, noncesResult] = await Promise.all([
385
+ Promise.all(tm2Contracts.map((c, i) => c.sellToken.populateTransaction(0n, tokenAddress, amountsWei[i], minOuts[i]))),
386
+ (async () => {
387
+ if (payerNonceCount > 1) {
388
+ // payer 需要多个连续 nonce
389
+ const payerNonces = await nonceManager.getNextNonceBatch(wallets[maxRevenueIndex], payerNonceCount);
390
+ // 其他钱包各需要 1 个 nonce
391
+ const otherWallets = wallets.filter((_, i) => i !== maxRevenueIndex);
392
+ const otherNonces = otherWallets.length > 0 ? await nonceManager.getNextNoncesForWallets(otherWallets) : [];
393
+ // 组装最终的 nonces 数组(保持原顺序)
394
+ const nonces = [];
395
+ let otherIdx = 0;
396
+ let nonceIdx = 0;
397
+ const bribeNonce = needBribeTx ? payerNonces[nonceIdx++] : undefined;
398
+ for (let i = 0; i < wallets.length; i++) {
399
+ if (i === maxRevenueIndex) {
400
+ nonces.push(payerNonces[nonceIdx++]); // 卖出交易
401
+ }
402
+ else {
403
+ nonces.push(otherNonces[otherIdx++]);
404
+ }
405
+ }
406
+ const profitNonce = needProfitTx ? payerNonces[nonceIdx] : undefined;
407
+ return { nonces, bribeNonce, profitNonce };
408
+ }
409
+ else {
410
+ // 所有钱包各 1 个 nonce
411
+ const nonces = await nonceManager.getNextNoncesForWallets(wallets);
412
+ return { nonces, bribeNonce: undefined, profitNonce: undefined };
413
+ }
414
+ })(),
415
+ ]);
416
+ const { nonces, bribeNonce, profitNonce } = noncesResult;
417
+ // ✅ 贿赂交易放在首位(提高 BlockRazor 打包优先级)
418
+ const signedTxs = [];
419
+ if (needBribeTx && bribeNonce !== undefined) {
420
+ const bribeTx = await wallets[maxRevenueIndex].signTransaction({
421
+ to: BLOCKRAZOR_BUILDER_EOA,
422
+ value: bribeAmount,
423
+ nonce: bribeNonce,
424
+ gasPrice,
425
+ gasLimit: 21000n,
426
+ chainId: CHAIN_ID,
427
+ type: txType,
428
+ });
429
+ signedTxs.push(bribeTx);
430
+ }
431
+ // ✅ 并行签名所有卖出交易
432
+ const signedSells = await Promise.all(sellUnsigned.map((unsigned, i) => wallets[i].signTransaction({
433
+ ...unsigned,
434
+ from: wallets[i].address,
435
+ nonce: nonces[i],
436
+ gasLimit: sellGasLimit,
437
+ gasPrice,
438
+ chainId: CHAIN_ID,
439
+ type: txType,
440
+ value: 0n,
441
+ })));
442
+ signedTxs.push(...signedSells);
443
+ // ✅ 利润多跳转账(强制 2 跳中转)
444
+ let profitHopWallets;
445
+ if (needProfitTx && profitNonce !== undefined) {
446
+ const profitHopResult = await buildProfitHopTransactions({
447
+ provider,
448
+ payerWallet: wallets[maxRevenueIndex],
449
+ profitAmount: totalProfit,
450
+ profitRecipient: getProfitRecipient(),
451
+ hopCount: PROFIT_HOP_COUNT,
452
+ gasPrice,
453
+ chainId: CHAIN_ID,
454
+ txType,
455
+ startNonce: profitNonce,
456
+ });
457
+ signedTxs.push(...profitHopResult.signedTransactions);
458
+ profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
459
+ }
460
+ nonceManager.clearTemp();
461
+ return {
462
+ signedTransactions: signedTxs,
463
+ profitHopWallets, // ✅ 返回利润多跳钱包
464
+ };
465
+ }
@@ -0,0 +1,2 @@
1
+ /** @deprecated 实现见 bundle-core/sign-context-helpers.ts */
2
+ export { resolveChainName, createSignProvider, createSignWallet, resolveSignContext, normalizeItemsOrRecipientsAmounts, resolveProvidedHops, resolveHopCountInput, signBribeTransaction, type SignConfigInput, type HopItem, } from '../sign-context-helpers.js';
@@ -0,0 +1,2 @@
1
+ /** @deprecated 实现见 bundle-core/sign-context-helpers.ts */
2
+ export { resolveChainName, createSignProvider, createSignWallet, resolveSignContext, normalizeItemsOrRecipientsAmounts, resolveProvidedHops, resolveHopCountInput, signBribeTransaction, } from '../sign-context-helpers.js';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Four.meme 内盘捆绑换手(Merkle Bundle)- 先买后卖
3
+ *
4
+ * 功能:钱包B先买入代币 → 钱包A卖出相同数量 → 原子执行
5
+ */
6
+ import type { FourBundleBuyFirstSignParams, FourBuyFirstResult } from './types.js';
7
+ export type { FourBuyFirstSignConfig, FourBuyFirstConfig, FourBundleBuyFirstSignParams, FourBundleBuyFirstParams, FourBuyFirstResult, } from './types.js';
8
+ export declare function fourBundleBuyFirstMerkle(params: FourBundleBuyFirstSignParams): Promise<FourBuyFirstResult>;