four-flap-meme-sdk 2.2.8 → 2.2.10

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 (474) hide show
  1. package/README.en.md +6 -41
  2. package/README.md +0 -31
  3. package/README.zh-CN.md +6 -41
  4. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +26 -1
  5. package/dist/chains/bsc/four/approve-tokenmanager.js +113 -1
  6. package/dist/chains/bsc/four/config.d.ts +67 -5
  7. package/dist/chains/bsc/four/config.js +114 -2
  8. package/dist/chains/bsc/four/core.d.ts +4 -1
  9. package/dist/chains/bsc/four/core.js +592 -1
  10. package/dist/chains/bsc/four/index.d.ts +6 -6
  11. package/dist/chains/bsc/four/index.js +6 -6
  12. package/dist/chains/bsc/four/internal.d.ts +46 -2
  13. package/dist/chains/bsc/four/internal.js +239 -2
  14. package/dist/chains/bsc/four/pancake-proxy.d.ts +28 -1
  15. package/dist/chains/bsc/four/pancake-proxy.js +687 -1
  16. package/dist/chains/bsc/four/private.d.ts +27 -1
  17. package/dist/chains/bsc/four/private.js +477 -1
  18. package/dist/chains/bsc/four/submit.d.ts +315 -2
  19. package/dist/chains/bsc/four/submit.js +752 -2
  20. package/dist/chains/bsc/four/swap-buy-first.d.ts +55 -2
  21. package/dist/chains/bsc/four/swap-buy-first.js +507 -2
  22. package/dist/chains/bsc/four/swap-internal.d.ts +3 -1
  23. package/dist/chains/bsc/four/swap-internal.js +18 -1
  24. package/dist/chains/bsc/four/swap.d.ts +144 -2
  25. package/dist/chains/bsc/four/swap.js +766 -2
  26. package/dist/chains/bsc/four/types.d.ts +476 -1
  27. package/dist/chains/bsc/four/utils.d.ts +18 -5
  28. package/dist/chains/bsc/four/utils.js +1552 -5
  29. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +91 -1
  30. package/dist/chains/bsc/pancake/bundle-buy-first.js +212 -97
  31. package/dist/chains/bsc/pancake/bundle-swap.d.ts +79 -1
  32. package/dist/chains/bsc/pancake/bundle-swap.js +726 -114
  33. package/dist/chains/bsc/pancake/index.d.ts +2 -4
  34. package/dist/chains/bsc/pancake/index.js +3 -1
  35. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  36. package/dist/chains/bsc/platforms/iro/factory.js +1 -3
  37. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  38. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  39. package/dist/chains/bsc/platforms/iro/pool.js +10 -31
  40. package/dist/chains/bsc/platforms/iro/token.js +1 -4
  41. package/dist/chains/eni/batch-router/bundle-approve.js +3 -4
  42. package/dist/chains/eni/batch-router/transfer.js +25 -55
  43. package/dist/chains/eni/batch-router/utils.js +6 -32
  44. package/dist/chains/eni/bundler/sign.js +6 -5
  45. package/dist/chains/eni/bundler/submit.js +4 -1
  46. package/dist/chains/eni/constants.js +1 -1
  47. package/dist/chains/eni/index.d.ts +1 -2
  48. package/dist/chains/eni/index.js +0 -1
  49. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  50. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  51. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  52. package/dist/chains/eni/platforms/daoaas/meta.js +6 -9
  53. package/dist/chains/eni/platforms/daoaas/portal-direct.js +44 -28
  54. package/dist/chains/eni/platforms/daoaas/portal.js +6 -10
  55. package/dist/chains/eni/platforms/dswap/liquidity.js +26 -58
  56. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  57. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  58. package/dist/chains/eni/platforms/fair-launch/launcher.js +46 -87
  59. package/dist/chains/eni/platforms/fair-launch/pool.js +1 -4
  60. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  61. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  62. package/dist/chains/eni/platforms/iro/factory.js +1 -3
  63. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  64. package/dist/chains/eni/platforms/iro/index.js +4 -4
  65. package/dist/chains/eni/platforms/iro/pool.js +26 -90
  66. package/dist/chains/eni/platforms/iro/token.js +31 -107
  67. package/dist/chains/eni/platforms/iro/whitelist.js +18 -6
  68. package/dist/chains/index.d.ts +0 -13
  69. package/dist/chains/index.js +0 -13
  70. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +26 -2
  71. package/dist/chains/xlayer/eip7702/bundle-approve.js +21 -11
  72. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +6 -2
  73. package/dist/chains/xlayer/eip7702/bundle-buy.js +51 -13
  74. package/dist/chains/xlayer/eip7702/bundle-create.js +59 -93
  75. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +6 -2
  76. package/dist/chains/xlayer/eip7702/bundle-sell.js +111 -29
  77. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +65 -3
  78. package/dist/chains/xlayer/eip7702/bundle-swap.js +245 -51
  79. package/dist/chains/xlayer/eip7702/constants.d.ts +16 -1
  80. package/dist/chains/xlayer/eip7702/constants.js +21 -3
  81. package/dist/chains/xlayer/eip7702/index.d.ts +46 -28
  82. package/dist/chains/xlayer/eip7702/index.js +81 -28
  83. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +203 -2
  84. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +307 -63
  85. package/dist/chains/xlayer/eip7702/types.d.ts +0 -88
  86. package/dist/chains/xlayer/eip7702/utils.d.ts +3 -0
  87. package/dist/chains/xlayer/eip7702/utils.js +28 -23
  88. package/dist/chains/xlayer/eip7702/volume.d.ts +184 -6
  89. package/dist/chains/xlayer/eip7702/volume.js +164 -89
  90. package/dist/chains/xlayer/eoa/constants.js +1 -1
  91. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  92. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +95 -1
  93. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +299 -66
  94. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  95. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +23 -18
  96. package/dist/chains/xlayer/eoa/index.d.ts +6 -10
  97. package/dist/chains/xlayer/eoa/index.js +23 -8
  98. package/dist/chains/xlayer/eoa/portal-ops.js +2 -7
  99. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  100. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  101. package/dist/chains/xlayer/eoa/types.js +3 -1
  102. package/dist/chains/xlayer/index.d.ts +2 -3
  103. package/dist/chains/xlayer/index.js +7 -4
  104. package/dist/contracts/helper3.d.ts +5 -20
  105. package/dist/contracts/helper3.js +20 -56
  106. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +26 -1
  107. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +113 -1
  108. package/dist/contracts/tm-bundle-merkle/config.d.ts +67 -5
  109. package/dist/contracts/tm-bundle-merkle/config.js +114 -2
  110. package/dist/contracts/tm-bundle-merkle/core.d.ts +4 -1
  111. package/dist/contracts/tm-bundle-merkle/core.js +591 -1
  112. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  113. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  114. package/dist/contracts/tm-bundle-merkle/internal.d.ts +46 -2
  115. package/dist/contracts/tm-bundle-merkle/internal.js +238 -2
  116. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +28 -1
  117. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +686 -1
  118. package/dist/contracts/tm-bundle-merkle/private.d.ts +27 -1
  119. package/dist/contracts/tm-bundle-merkle/private.js +476 -1
  120. package/dist/contracts/tm-bundle-merkle/submit.d.ts +314 -3
  121. package/dist/contracts/tm-bundle-merkle/submit.js +928 -3
  122. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +55 -2
  123. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +506 -2
  124. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +3 -1
  125. package/dist/contracts/tm-bundle-merkle/swap-internal.js +18 -1
  126. package/dist/contracts/tm-bundle-merkle/swap.d.ts +144 -2
  127. package/dist/contracts/tm-bundle-merkle/swap.js +764 -2
  128. package/dist/contracts/tm-bundle-merkle/types.d.ts +476 -1
  129. package/dist/contracts/tm-bundle-merkle/utils.d.ts +18 -6
  130. package/dist/contracts/tm-bundle-merkle/utils.js +1501 -6
  131. package/dist/contracts/tm-bundle.d.ts +51 -3
  132. package/dist/contracts/tm-bundle.js +177 -108
  133. package/dist/contracts/tm.d.ts +2 -3
  134. package/dist/contracts/tm.js +32 -37
  135. package/dist/contracts/tm1.js +4 -9
  136. package/dist/contracts/tm2.js +4 -9
  137. package/dist/dex/direct-router.d.ts +125 -3
  138. package/dist/dex/direct-router.js +666 -237
  139. package/dist/flows/create.d.ts +1 -2
  140. package/dist/flows/create.js +6 -6
  141. package/dist/index.d.ts +86 -20
  142. package/dist/index.js +216 -20
  143. package/dist/shared/abis/TaxToken.json +105 -0
  144. package/dist/shared/abis/TokenManager2.json +60 -0
  145. package/dist/shared/abis/common.d.ts +83 -2
  146. package/dist/shared/abis/common.js +253 -2
  147. package/dist/shared/abis/index.d.ts +6 -5
  148. package/dist/shared/abis/index.js +7 -5
  149. package/dist/shared/clients/blockrazor.js +25 -39
  150. package/dist/shared/clients/club48.d.ts +2 -2
  151. package/dist/shared/clients/club48.js +29 -34
  152. package/dist/shared/clients/emitservice.js +0 -2
  153. package/dist/shared/clients/four.d.ts +6 -21
  154. package/dist/shared/clients/four.js +24 -29
  155. package/dist/shared/clients/merkle.js +34 -27
  156. package/dist/shared/constants/addresses.d.ts +1 -1
  157. package/dist/shared/constants/addresses.js +2 -11
  158. package/dist/shared/constants/chains.d.ts +1 -1
  159. package/dist/shared/constants/chains.js +1 -1
  160. package/dist/shared/constants/gas.d.ts +1 -1
  161. package/dist/shared/constants/gas.js +6 -2
  162. package/dist/shared/constants/index.d.ts +0 -3
  163. package/dist/shared/constants/index.js +0 -1
  164. package/dist/shared/flap/abi.js +1 -1
  165. package/dist/shared/flap/constants.d.ts +2 -3
  166. package/dist/shared/flap/constants.js +4 -5
  167. package/dist/shared/flap/curve.js +0 -3
  168. package/dist/shared/flap/errors.d.ts +4 -1
  169. package/dist/shared/flap/errors.js +1 -20
  170. package/dist/shared/flap/index.d.ts +5 -5
  171. package/dist/shared/flap/index.js +5 -5
  172. package/dist/shared/flap/launch-v6.d.ts +117 -0
  173. package/dist/shared/flap/launch-v6.js +111 -0
  174. package/dist/shared/flap/meta.d.ts +18 -22
  175. package/dist/shared/flap/meta.js +17 -12
  176. package/dist/shared/flap/permit.js +2 -5
  177. package/dist/shared/flap/pinata.d.ts +6 -22
  178. package/dist/shared/flap/pinata.js +26 -21
  179. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +72 -3
  180. package/dist/shared/flap/portal-bundle-merkle/config.js +124 -4
  181. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +4 -0
  182. package/dist/shared/flap/portal-bundle-merkle/core.js +267 -161
  183. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +4 -17
  184. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +195 -104
  185. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +92 -100
  186. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +7 -11
  187. package/dist/shared/flap/portal-bundle-merkle/index.js +7 -4
  188. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +68 -71
  189. package/dist/shared/flap/portal-bundle-merkle/private.js +114 -61
  190. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +64 -1
  191. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +247 -66
  192. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +71 -2
  193. package/dist/shared/flap/portal-bundle-merkle/swap.js +410 -103
  194. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +12 -88
  195. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +80 -1
  196. package/dist/shared/flap/portal-bundle-merkle/utils.js +265 -145
  197. package/dist/shared/flap/portal-bundle.js +56 -55
  198. package/dist/shared/flap/portal.d.ts +3 -14
  199. package/dist/shared/flap/portal.js +26 -49
  200. package/dist/shared/flap/vanity.d.ts +5 -8
  201. package/dist/shared/flap/vanity.js +20 -21
  202. package/dist/shared/flap/vault.d.ts +93 -25
  203. package/dist/shared/flap/vault.js +126 -75
  204. package/dist/shared/four/tax-token.d.ts +1 -1
  205. package/dist/shared/four/tax-token.js +7 -27
  206. package/dist/shared/index.d.ts +0 -6
  207. package/dist/shared/index.js +0 -4
  208. package/dist/utils/airdrop-sweep.d.ts +76 -4
  209. package/dist/utils/airdrop-sweep.js +55 -42
  210. package/dist/utils/bundle-helpers.d.ts +243 -9
  211. package/dist/utils/bundle-helpers.js +584 -10
  212. package/dist/utils/constants.d.ts +61 -5
  213. package/dist/utils/constants.js +80 -5
  214. package/dist/utils/contract-factory.d.ts +4 -2
  215. package/dist/utils/contract-factory.js +18 -25
  216. package/dist/utils/erc20.d.ts +89 -7
  217. package/dist/utils/erc20.js +125 -94
  218. package/dist/utils/errors.d.ts +1 -12
  219. package/dist/utils/errors.js +1 -60
  220. package/dist/utils/holders-maker.d.ts +138 -2
  221. package/dist/utils/holders-maker.js +661 -26
  222. package/dist/utils/lp-inspect.d.ts +112 -2
  223. package/dist/utils/lp-inspect.js +223 -73
  224. package/dist/utils/mpcExclusive.d.ts +5 -2
  225. package/dist/utils/mpcExclusive.js +3 -4
  226. package/dist/utils/private-sale.d.ts +58 -2
  227. package/dist/utils/private-sale.js +15 -4
  228. package/dist/utils/provider-factory.d.ts +0 -4
  229. package/dist/utils/provider-factory.js +0 -10
  230. package/dist/utils/quote-helpers.d.ts +45 -4
  231. package/dist/utils/quote-helpers.js +74 -17
  232. package/dist/utils/stealth-transfer.d.ts +28 -2
  233. package/dist/utils/stealth-transfer.js +15 -31
  234. package/dist/utils/swap-helpers.d.ts +15 -2
  235. package/dist/utils/swap-helpers.js +11 -6
  236. package/dist/utils/wallet.d.ts +25 -2
  237. package/dist/utils/wallet.js +10 -13
  238. package/package.json +4 -160
  239. package/dist/__tests__/subpath-exports.test.d.ts +0 -1
  240. package/dist/__tests__/subpath-exports.test.js +0 -64
  241. package/dist/abis/common.d.ts +0 -85
  242. package/dist/abis/common.js +0 -264
  243. package/dist/abis/contracts/TaxToken.json +0 -969
  244. package/dist/abis/contracts/TokenManager2.json +0 -136
  245. package/dist/abis/contracts/index.d.ts +0 -5
  246. package/dist/abis/contracts/index.js +0 -5
  247. package/dist/abis/flap/index.d.ts +0 -3
  248. package/dist/abis/flap/index.js +0 -3
  249. package/dist/abis/flap/portal-events.d.ts +0 -6
  250. package/dist/abis/flap/portal-events.js +0 -17
  251. package/dist/abis/flap/portal.d.ts +0 -6
  252. package/dist/abis/flap/portal.js +0 -37
  253. package/dist/abis/flap/vault.d.ts +0 -171
  254. package/dist/abis/flap/vault.js +0 -91
  255. package/dist/abis/index.d.ts +0 -8
  256. package/dist/abis/index.js +0 -11
  257. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +0 -1
  258. package/dist/bundle-core/__tests__/config-helpers.test.js +0 -28
  259. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +0 -1
  260. package/dist/bundle-core/__tests__/facade-parity.test.js +0 -33
  261. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +0 -1
  262. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +0 -60
  263. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +0 -1
  264. package/dist/bundle-core/__tests__/sign-fixture.test.js +0 -220
  265. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +0 -10
  266. package/dist/bundle-core/__tests__/sign-fixtures.js +0 -16
  267. package/dist/bundle-core/config-helpers.d.ts +0 -36
  268. package/dist/bundle-core/config-helpers.js +0 -57
  269. package/dist/bundle-core/errors.d.ts +0 -50
  270. package/dist/bundle-core/errors.js +0 -35
  271. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +0 -7
  272. package/dist/bundle-core/four-meme/approve-tokenmanager.js +0 -99
  273. package/dist/bundle-core/four-meme/core-helpers.d.ts +0 -8
  274. package/dist/bundle-core/four-meme/core-helpers.js +0 -40
  275. package/dist/bundle-core/four-meme/core.d.ts +0 -4
  276. package/dist/bundle-core/four-meme/core.js +0 -515
  277. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +0 -28
  278. package/dist/bundle-core/four-meme/pancake-proxy.js +0 -679
  279. package/dist/bundle-core/four-meme/private.d.ts +0 -27
  280. package/dist/bundle-core/four-meme/private.js +0 -465
  281. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +0 -2
  282. package/dist/bundle-core/four-meme/sign-context-helpers.js +0 -2
  283. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +0 -8
  284. package/dist/bundle-core/four-meme/swap-buy-first.js +0 -493
  285. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +0 -6
  286. package/dist/bundle-core/four-meme/swap-hop-helpers.js +0 -63
  287. package/dist/bundle-core/four-meme/swap-internal.d.ts +0 -3
  288. package/dist/bundle-core/four-meme/swap-internal.js +0 -18
  289. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +0 -27
  290. package/dist/bundle-core/four-meme/swap-sign-helpers.js +0 -105
  291. package/dist/bundle-core/four-meme/swap.d.ts +0 -17
  292. package/dist/bundle-core/four-meme/swap.js +0 -505
  293. package/dist/bundle-core/four-meme/types/buy-first.d.ts +0 -50
  294. package/dist/bundle-core/four-meme/types/buy-first.js +0 -1
  295. package/dist/bundle-core/four-meme/types/core-flow.d.ts +0 -63
  296. package/dist/bundle-core/four-meme/types/core-flow.js +0 -1
  297. package/dist/bundle-core/four-meme/types/index.d.ts +0 -600
  298. package/dist/bundle-core/four-meme/types/index.js +0 -1
  299. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +0 -19
  300. package/dist/bundle-core/four-meme/types/swap-internal.js +0 -1
  301. package/dist/bundle-core/four-meme/types.d.ts +0 -1
  302. package/dist/bundle-core/four-meme/types.js +0 -1
  303. package/dist/bundle-core/four-meme/utils-disperse.d.ts +0 -7
  304. package/dist/bundle-core/four-meme/utils-disperse.js +0 -396
  305. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +0 -8
  306. package/dist/bundle-core/four-meme/utils-pairwise.js +0 -328
  307. package/dist/bundle-core/four-meme/utils-sweep.d.ts +0 -8
  308. package/dist/bundle-core/four-meme/utils-sweep.js +0 -744
  309. package/dist/bundle-core/index.d.ts +0 -8
  310. package/dist/bundle-core/index.js +0 -8
  311. package/dist/bundle-core/internal.d.ts +0 -21
  312. package/dist/bundle-core/internal.js +0 -182
  313. package/dist/bundle-core/sign-context-helpers.d.ts +0 -25
  314. package/dist/bundle-core/sign-context-helpers.js +0 -67
  315. package/dist/bundle-core/submit.d.ts +0 -293
  316. package/dist/bundle-core/submit.js +0 -727
  317. package/dist/bundle-core/types/index.d.ts +0 -8
  318. package/dist/bundle-core/types/index.js +0 -1
  319. package/dist/bundle-core/types.d.ts +0 -1
  320. package/dist/bundle-core/types.js +0 -1
  321. package/dist/chains/bsc/four/utils-disperse.d.ts +0 -1
  322. package/dist/chains/bsc/four/utils-disperse.js +0 -1
  323. package/dist/chains/bsc/four/utils-pairwise.d.ts +0 -1
  324. package/dist/chains/bsc/four/utils-pairwise.js +0 -1
  325. package/dist/chains/bsc/four/utils-sweep.d.ts +0 -1
  326. package/dist/chains/bsc/four/utils-sweep.js +0 -1
  327. package/dist/chains/bsc/iro.d.ts +0 -5
  328. package/dist/chains/bsc/iro.js +0 -4
  329. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +0 -159
  330. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +0 -117
  331. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +0 -241
  332. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +0 -565
  333. package/dist/chains/eni/flat-aliases.d.ts +0 -10
  334. package/dist/chains/eni/flat-aliases.js +0 -8
  335. package/dist/chains/eni/submit.d.ts +0 -43
  336. package/dist/chains/eni/submit.js +0 -286
  337. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +0 -13
  338. package/dist/chains/xlayer/eip7702/flat-aliases.js +0 -10
  339. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +0 -79
  340. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +0 -1
  341. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +0 -26
  342. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +0 -57
  343. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +0 -148
  344. package/dist/chains/xlayer/eip7702/volume-helpers.js +0 -48
  345. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +0 -126
  346. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +0 -228
  347. package/dist/contracts/tm-bundle-helpers.d.ts +0 -88
  348. package/dist/contracts/tm-bundle-helpers.js +0 -72
  349. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +0 -1
  350. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +0 -1
  351. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +0 -1
  352. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +0 -1
  353. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +0 -1
  354. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +0 -1
  355. package/dist/dex/direct-router-helpers.d.ts +0 -264
  356. package/dist/dex/direct-router-helpers.js +0 -539
  357. package/dist/dex/types.d.ts +0 -81
  358. package/dist/dex/types.js +0 -1
  359. package/dist/exports/root-bundle-and-tooling.d.ts +0 -27
  360. package/dist/exports/root-bundle-and-tooling.js +0 -30
  361. package/dist/exports/root-eni-and-bsc-iro.d.ts +0 -26
  362. package/dist/exports/root-eni-and-bsc-iro.js +0 -66
  363. package/dist/exports/root-foundations.d.ts +0 -35
  364. package/dist/exports/root-foundations.js +0 -70
  365. package/dist/exports/root-swap-dex-and-xlayer.d.ts +0 -30
  366. package/dist/exports/root-swap-dex-and-xlayer.js +0 -78
  367. package/dist/flap/index.d.ts +0 -10
  368. package/dist/flap/index.js +0 -8
  369. package/dist/flows/index.d.ts +0 -1
  370. package/dist/flows/index.js +0 -1
  371. package/dist/merkle/index.d.ts +0 -12
  372. package/dist/merkle/index.js +0 -11
  373. package/dist/shared/clients/index.d.ts +0 -8
  374. package/dist/shared/clients/index.js +0 -8
  375. package/dist/shared/constants/quote.d.ts +0 -30
  376. package/dist/shared/constants/quote.js +0 -37
  377. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +0 -32
  378. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +0 -83
  379. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +0 -125
  380. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +0 -113
  381. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +0 -149
  382. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +0 -259
  383. package/dist/shared/flap/portal-create-token.d.ts +0 -81
  384. package/dist/shared/flap/portal-create-token.js +0 -255
  385. package/dist/shared/foundation/dex/v3-path.d.ts +0 -6
  386. package/dist/shared/foundation/dex/v3-path.js +0 -35
  387. package/dist/shared/foundation/gas/bundle-gas.d.ts +0 -49
  388. package/dist/shared/foundation/gas/bundle-gas.js +0 -93
  389. package/dist/shared/foundation/gas/profit-hop.d.ts +0 -20
  390. package/dist/shared/foundation/gas/profit-hop.js +0 -72
  391. package/dist/shared/foundation/index.d.ts +0 -13
  392. package/dist/shared/foundation/index.js +0 -12
  393. package/dist/shared/foundation/nonce/nonce-manager.d.ts +0 -17
  394. package/dist/shared/foundation/nonce/nonce-manager.js +0 -183
  395. package/dist/shared/foundation/normalize-unknown.d.ts +0 -9
  396. package/dist/shared/foundation/normalize-unknown.js +0 -29
  397. package/dist/shared/foundation/sdk-logger.d.ts +0 -13
  398. package/dist/shared/foundation/sdk-logger.js +0 -12
  399. package/dist/shared/foundation/tx/build-request.d.ts +0 -17
  400. package/dist/shared/foundation/tx/build-request.js +0 -25
  401. package/dist/shared/foundation/tx/sign-batch.d.ts +0 -5
  402. package/dist/shared/foundation/tx/sign-batch.js +0 -26
  403. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +0 -1
  404. package/dist/shared/foundation/tx/wallet-sign-patch.js +0 -18
  405. package/dist/shared/foundation/types/airdrop-sweep.d.ts +0 -79
  406. package/dist/shared/foundation/types/airdrop-sweep.js +0 -1
  407. package/dist/shared/foundation/types/erc20.d.ts +0 -65
  408. package/dist/shared/foundation/types/erc20.js +0 -1
  409. package/dist/shared/foundation/types/holders-maker.d.ts +0 -64
  410. package/dist/shared/foundation/types/holders-maker.js +0 -1
  411. package/dist/shared/foundation/types/index.d.ts +0 -7
  412. package/dist/shared/foundation/types/index.js +0 -1
  413. package/dist/shared/foundation/types/lp-inspect.d.ts +0 -102
  414. package/dist/shared/foundation/types/lp-inspect.js +0 -1
  415. package/dist/shared/foundation/types/multicall.d.ts +0 -5
  416. package/dist/shared/foundation/types/multicall.js +0 -1
  417. package/dist/shared/foundation/types/private-sale.d.ts +0 -35
  418. package/dist/shared/foundation/types/private-sale.js +0 -1
  419. package/dist/shared/foundation/types/quote-helpers.d.ts +0 -17
  420. package/dist/shared/foundation/types/quote-helpers.js +0 -1
  421. package/dist/types/errors.d.ts +0 -27
  422. package/dist/types/errors.js +0 -34
  423. package/dist/utils/holders-maker/addresses.d.ts +0 -12
  424. package/dist/utils/holders-maker/addresses.js +0 -15
  425. package/dist/utils/holders-maker/buy-tx.d.ts +0 -44
  426. package/dist/utils/holders-maker/buy-tx.js +0 -278
  427. package/dist/utils/holders-maker/constants.d.ts +0 -6
  428. package/dist/utils/holders-maker/constants.js +0 -7
  429. package/dist/utils/holders-maker/disperse.d.ts +0 -18
  430. package/dist/utils/holders-maker/disperse.js +0 -90
  431. package/dist/utils/holders-maker/routing.d.ts +0 -4
  432. package/dist/utils/holders-maker/routing.js +0 -45
  433. package/dist/utils/holders-maker/transfer-tx.d.ts +0 -4
  434. package/dist/utils/holders-maker/transfer-tx.js +0 -67
  435. package/dist/utils/holders-maker-helpers.d.ts +0 -9
  436. package/dist/utils/holders-maker-helpers.js +0 -9
  437. package/dist/utils/hop-chains.d.ts +0 -35
  438. package/dist/utils/hop-chains.js +0 -215
  439. package/dist/utils/lp-inspect-helpers.d.ts +0 -9
  440. package/dist/utils/lp-inspect-helpers.js +0 -109
  441. package/dist/utils/types/airdrop-sweep.d.ts +0 -1
  442. package/dist/utils/types/airdrop-sweep.js +0 -1
  443. package/dist/utils/types/contract-factory.d.ts +0 -1
  444. package/dist/utils/types/contract-factory.js +0 -1
  445. package/dist/utils/types/erc20.d.ts +0 -1
  446. package/dist/utils/types/erc20.js +0 -1
  447. package/dist/utils/types/errors.d.ts +0 -1
  448. package/dist/utils/types/errors.js +0 -1
  449. package/dist/utils/types/holders-maker.d.ts +0 -1
  450. package/dist/utils/types/holders-maker.js +0 -1
  451. package/dist/utils/types/hop-chains.d.ts +0 -8
  452. package/dist/utils/types/hop-chains.js +0 -1
  453. package/dist/utils/types/index.d.ts +0 -13
  454. package/dist/utils/types/index.js +0 -1
  455. package/dist/utils/types/lp-inspect.d.ts +0 -1
  456. package/dist/utils/types/lp-inspect.js +0 -1
  457. package/dist/utils/types/mpc-exclusive.d.ts +0 -5
  458. package/dist/utils/types/mpc-exclusive.js +0 -1
  459. package/dist/utils/types/private-sale.d.ts +0 -1
  460. package/dist/utils/types/private-sale.js +0 -1
  461. package/dist/utils/types/quote-helpers.d.ts +0 -1
  462. package/dist/utils/types/quote-helpers.js +0 -1
  463. package/dist/utils/types/stealth-transfer.d.ts +0 -44
  464. package/dist/utils/types/stealth-transfer.js +0 -1
  465. package/dist/utils/types/wallet.d.ts +0 -25
  466. package/dist/utils/types/wallet.js +0 -1
  467. package/dist/vanity/index.d.ts +0 -5
  468. package/dist/vanity/index.js +0 -5
  469. package/src/abis/contracts/TaxToken.json +0 -969
  470. package/src/abis/contracts/TokenManager.json +0 -836
  471. package/src/abis/contracts/TokenManager2.json +0 -136
  472. package/src/abis/contracts/TokenManagerHelper3.json +0 -993
  473. /package/dist/{abis/contracts → shared/abis}/TokenManager.json +0 -0
  474. /package/dist/{abis/contracts → shared/abis}/TokenManagerHelper3.json +0 -0
@@ -1,10 +1,10 @@
1
- import { ethers, Wallet, JsonRpcProvider } from 'ethers';
1
+ import { ethers, Wallet } from 'ethers';
2
2
  import { MerkleClient } from '../../clients/merkle.js';
3
3
  import { getOptimizedGasPrice, buildProfitHopTransactions, PROFIT_HOP_COUNT } from '../../../utils/bundle-helpers.js';
4
4
  import { FLAP_PORTAL_ADDRESSES } from '../constants.js';
5
- import { ZERO_ADDRESS } from '../../../shared/constants/index.js';
5
+ import { ZERO_ADDRESS } from '../../../utils/constants.js';
6
6
  import { GAS_LIMITS, CHAINS } from '../../constants/index.js';
7
- import { CHAIN_ID_MAP, PORTAL_ABI, getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, calculateBatchProfit, getProfitRecipient, getBribeAmount, BLOCKRAZOR_BUILDER_EOA, } from './config.js';
7
+ import { CHAIN_ID_MAP, PORTAL_ABI, getTxType, getGasPriceConfig, shouldExtractProfit, calculateProfit, calculateBatchProfit, getProfitRecipient, getBribeAmount, BLOCKRAZOR_BUILDER_EOA } from './config.js';
8
8
  const DEFAULT_GAS_LIMIT = 800000;
9
9
  /**
10
10
  * 私有购买(单笔)(Merkle 版本)
@@ -16,8 +16,8 @@ export async function flapPrivateBuyMerkle(params) {
16
16
  const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
17
17
  const originalAmountWei = ethers.parseEther(amountIn);
18
18
  // ✅ 利润提取配置
19
- const extractProfit = shouldExtractProfit();
20
- const { actualAmountWei, profitWei } = splitBuyAmount(originalAmountWei, extractProfit);
19
+ const extractProfit = shouldExtractProfit(config);
20
+ const { actualAmountWei, profitWei } = splitBuyAmount(originalAmountWei, extractProfit, config);
21
21
  const minAmountOut = parseMinOutput(minOutputAmount);
22
22
  const portal = new ethers.Contract(portalAddr, PORTAL_ABI, wallet);
23
23
  // ✅ 并行获取 gasPrice、nonce 和构建未签名交易
@@ -31,7 +31,7 @@ export async function flapPrivateBuyMerkle(params) {
31
31
  inputAmount: actualAmountWei,
32
32
  minOutputAmount: minAmountOut,
33
33
  permitData: '0x',
34
- }, { value: actualAmountWei }),
34
+ }, { value: actualAmountWei })
35
35
  ]);
36
36
  const gasLimit = resolveGasLimit(config.gasLimitMultiplier);
37
37
  // ✅ 获取贿赂金额
@@ -55,7 +55,7 @@ export async function flapPrivateBuyMerkle(params) {
55
55
  gasPrice,
56
56
  gasLimit: GAS_LIMITS.BRIBE,
57
57
  chainId,
58
- type: txType,
58
+ type: txType
59
59
  }));
60
60
  }
61
61
  // 买入交易
@@ -67,7 +67,7 @@ export async function flapPrivateBuyMerkle(params) {
67
67
  gasPrice,
68
68
  chainId,
69
69
  type: txType,
70
- value: actualAmountWei,
70
+ value: actualAmountWei
71
71
  }));
72
72
  // ✅ 并行签名完成后按顺序返回
73
73
  const signedTxs = await Promise.all(signPromises);
@@ -83,7 +83,7 @@ export async function flapPrivateBuyMerkle(params) {
83
83
  gasPrice,
84
84
  chainId,
85
85
  txType,
86
- startNonce: profitNonce,
86
+ startNonce: profitNonce
87
87
  });
88
88
  signedTxs.push(...profitHopResult.signedTransactions);
89
89
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -112,7 +112,7 @@ export async function flapPrivateSellMerkle(params) {
112
112
  inputAmount: amountWei,
113
113
  minOutputAmount: 0n, // ✅ 已移除滑点保护
114
114
  permitData: '0x',
115
- }),
115
+ })
116
116
  ]);
117
117
  const gasLimit = resolveGasLimit(config.gasLimitMultiplier);
118
118
  const txType = getTxType(config);
@@ -120,8 +120,10 @@ export async function flapPrivateSellMerkle(params) {
120
120
  const bribeAmount = getBribeAmount(config);
121
121
  const needBribeTx = bribeAmount > 0n;
122
122
  // ✅ 利润计算
123
- const extractProfit = shouldExtractProfit();
124
- const { profit: profitWei } = extractProfit && quotedOutput > 0n ? calculateProfit(quotedOutput) : { profit: 0n };
123
+ const extractProfit = shouldExtractProfit(config);
124
+ const { profit: profitWei } = extractProfit && quotedOutput > 0n
125
+ ? calculateProfit(quotedOutput, config)
126
+ : { profit: 0n };
125
127
  const needProfitTx = extractProfit && profitWei > 0n;
126
128
  // ✅ 分配 nonces:贿赂 → 卖出 → 利润
127
129
  let nonceIdx = 0;
@@ -139,7 +141,7 @@ export async function flapPrivateSellMerkle(params) {
139
141
  gasPrice,
140
142
  gasLimit: GAS_LIMITS.BRIBE,
141
143
  chainId,
142
- type: txType,
144
+ type: txType
143
145
  }));
144
146
  }
145
147
  // 卖出交易
@@ -150,7 +152,7 @@ export async function flapPrivateSellMerkle(params) {
150
152
  gasLimit,
151
153
  gasPrice,
152
154
  chainId,
153
- type: txType,
155
+ type: txType
154
156
  }));
155
157
  // ✅ 并行签名完成后按顺序返回
156
158
  const signedTxs = await Promise.all(signPromises);
@@ -166,7 +168,7 @@ export async function flapPrivateSellMerkle(params) {
166
168
  gasPrice,
167
169
  chainId,
168
170
  txType,
169
- startNonce: profitNonce,
171
+ startNonce: profitNonce
170
172
  });
171
173
  signedTxs.push(...profitHopResult.signedTransactions);
172
174
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -183,15 +185,15 @@ export async function flapBatchPrivateBuyMerkle(params) {
183
185
  }
184
186
  const { chainId, provider } = createMerkleContext(chain, config);
185
187
  const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
186
- const wallets = privateKeys.map((k) => new Wallet(k, provider));
187
- const originalAmountsWei = amountsIn.map((a) => ethers.parseEther(a));
188
+ const wallets = privateKeys.map(k => new Wallet(k, provider));
189
+ const originalAmountsWei = amountsIn.map(a => ethers.parseEther(a));
188
190
  // ✅ 利润提取配置
189
- const extractProfit = shouldExtractProfit();
190
- const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei);
191
+ const extractProfit = shouldExtractProfit(config);
192
+ const { totalProfit, remainingAmounts } = calculateBatchProfit(originalAmountsWei, config);
191
193
  const actualAmountsWei = remainingAmounts;
192
194
  const maxFundsIndex = findMaxIndex(originalAmountsWei);
193
195
  const minOuts = resolveBatchMinOutputs(minOutputAmounts, wallets.length);
194
- const portals = wallets.map((w) => new ethers.Contract(portalAddr, PORTAL_ABI, w));
196
+ const portals = wallets.map(w => new ethers.Contract(portalAddr, PORTAL_ABI, w));
195
197
  // ✅ 获取贿赂金额
196
198
  const bribeAmount = getBribeAmount(config);
197
199
  const needBribeTx = bribeAmount > 0n;
@@ -200,14 +202,14 @@ export async function flapBatchPrivateBuyMerkle(params) {
200
202
  const [gasPrice, initialNonces, unsignedList] = await Promise.all([
201
203
  getOptimizedGasPrice(provider, getGasPriceConfig(config)),
202
204
  // ✅ 使用 pending nonce,避免 xLayer 等链上“已有 pending 交易”导致 nonce too low
203
- Promise.all(wallets.map((w) => provider.getTransactionCount(w.address, 'pending'))),
205
+ Promise.all(wallets.map(w => provider.getTransactionCount(w.address, 'pending'))),
204
206
  Promise.all(portals.map((portal, i) => portal.swapExactInput.populateTransaction({
205
207
  inputToken: ZERO_ADDRESS,
206
208
  outputToken: tokenAddress,
207
209
  inputAmount: actualAmountsWei[i],
208
210
  minOutputAmount: minOuts[i],
209
211
  permitData: '0x',
210
- }, { value: actualAmountsWei[i] }))),
212
+ }, { value: actualAmountsWei[i] })))
211
213
  ]);
212
214
  // ✅ 分配 nonces:贿赂(可选) → 买入 → 利润(可选)
213
215
  let payerNonceOffset = 0;
@@ -222,7 +224,9 @@ export async function flapBatchPrivateBuyMerkle(params) {
222
224
  }
223
225
  return n;
224
226
  });
225
- const profitNonce = needProfitTx && maxFundsIndex >= 0 ? initialNonces[maxFundsIndex] + payerNonceOffset + 1 : undefined;
227
+ const profitNonce = needProfitTx && maxFundsIndex >= 0
228
+ ? initialNonces[maxFundsIndex] + payerNonceOffset + 1
229
+ : undefined;
226
230
  const gasLimit = resolveGasLimit(config.gasLimitMultiplier);
227
231
  const gasLimits = new Array(wallets.length).fill(gasLimit);
228
232
  const signedTxs = [];
@@ -235,7 +239,7 @@ export async function flapBatchPrivateBuyMerkle(params) {
235
239
  gasPrice,
236
240
  gasLimit: GAS_LIMITS.BRIBE,
237
241
  chainId,
238
- type: getTxType(config),
242
+ type: getTxType(config)
239
243
  });
240
244
  signedTxs.push(bribeTx);
241
245
  }
@@ -248,7 +252,7 @@ export async function flapBatchPrivateBuyMerkle(params) {
248
252
  gasPrice,
249
253
  chainId,
250
254
  config,
251
- values: actualAmountsWei,
255
+ values: actualAmountsWei
252
256
  });
253
257
  signedTxs.push(...signedList);
254
258
  // ✅ 利润多跳转账(强制 2 跳中转)
@@ -263,7 +267,7 @@ export async function flapBatchPrivateBuyMerkle(params) {
263
267
  gasPrice,
264
268
  chainId,
265
269
  txType: getTxType(config),
266
- startNonce: profitNonce,
270
+ startNonce: profitNonce
267
271
  });
268
272
  signedTxs.push(...profitHopResult.signedTransactions);
269
273
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -274,39 +278,37 @@ export async function flapBatchPrivateBuyMerkle(params) {
274
278
  * 批量私有卖出(Merkle 版本)
275
279
  */
276
280
  export async function flapBatchPrivateSellMerkle(params) {
277
- const { chain, privateKeys, amounts, tokenAddress, config } = params;
281
+ const { chain, privateKeys, amounts, tokenAddress, minOutputAmounts, config } = params;
278
282
  if (privateKeys.length !== amounts.length) {
279
283
  throw new Error('privateKeys and amounts length mismatch');
280
284
  }
281
285
  const { chainId, provider } = createMerkleContext(chain, config);
282
286
  const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
283
- const wallets = privateKeys.map((k) => new Wallet(k, provider));
284
- const amountsWei = amounts.map((a) => ethers.parseUnits(a, 18));
287
+ const wallets = privateKeys.map(k => new Wallet(k, provider));
288
+ const amountsWei = amounts.map(a => ethers.parseUnits(a, 18));
285
289
  const portal = new ethers.Contract(portalAddr, PORTAL_ABI, provider);
286
- const portals = wallets.map((w) => new ethers.Contract(portalAddr, PORTAL_ABI, w));
290
+ const portals = wallets.map(w => new ethers.Contract(portalAddr, PORTAL_ABI, w));
287
291
  // ✅ 并行获取 gasPrice、所有 nonces、所有报价和构建未签名交易
288
292
  const [gasPrice, initialNonces, quotedOutputs, unsignedList] = await Promise.all([
289
293
  getOptimizedGasPrice(provider, getGasPriceConfig(config)),
290
294
  // ✅ 使用 pending nonce,避免 xLayer 等链上“已有 pending 交易”导致 nonce too low
291
- Promise.all(wallets.map((w) => provider.getTransactionCount(w.address, 'pending'))),
292
- Promise.all(amountsWei.map((amount) => portal.quoteExactInput
293
- .staticCall({
295
+ Promise.all(wallets.map(w => provider.getTransactionCount(w.address, 'pending'))),
296
+ Promise.all(amountsWei.map(amount => portal.quoteExactInput.staticCall({
294
297
  inputToken: tokenAddress,
295
298
  outputToken: ZERO_ADDRESS,
296
- inputAmount: amount,
297
- })
298
- .catch(() => 0n))),
299
+ inputAmount: amount
300
+ }).catch(() => 0n))),
299
301
  // ✅ 并行构建未签名交易(已移除滑点保护:minOuts 固定为 0)
300
302
  Promise.all(portals.map((p, i) => p.swapExactInput.populateTransaction({
301
303
  inputToken: tokenAddress,
302
304
  outputToken: ZERO_ADDRESS,
303
305
  inputAmount: amountsWei[i],
304
306
  minOutputAmount: 0n,
305
- permitData: '0x',
306
- }))),
307
+ permitData: '0x'
308
+ })))
307
309
  ]);
308
- const extractProfit = shouldExtractProfit();
309
- const { totalProfit, maxRevenueIndex } = summarizeSellProfits(quotedOutputs, extractProfit);
310
+ const extractProfit = shouldExtractProfit(config);
311
+ const { totalProfit, maxRevenueIndex } = summarizeSellProfits(quotedOutputs, extractProfit, config);
310
312
  // ✅ 获取贿赂金额
311
313
  const bribeAmount = getBribeAmount(config);
312
314
  const needBribeTx = bribeAmount > 0n;
@@ -324,7 +326,9 @@ export async function flapBatchPrivateSellMerkle(params) {
324
326
  }
325
327
  return n;
326
328
  });
327
- const profitNonce = needProfitTx && maxRevenueIndex >= 0 ? initialNonces[maxRevenueIndex] + payerNonceOffset + 1 : undefined;
329
+ const profitNonce = needProfitTx && maxRevenueIndex >= 0
330
+ ? initialNonces[maxRevenueIndex] + payerNonceOffset + 1
331
+ : undefined;
328
332
  const gasLimit = resolveGasLimit(config.gasLimitMultiplier);
329
333
  const gasLimits = new Array(wallets.length).fill(gasLimit);
330
334
  const signedTxs = [];
@@ -337,7 +341,7 @@ export async function flapBatchPrivateSellMerkle(params) {
337
341
  gasPrice,
338
342
  gasLimit: GAS_LIMITS.BRIBE,
339
343
  chainId,
340
- type: getTxType(config),
344
+ type: getTxType(config)
341
345
  });
342
346
  signedTxs.push(bribeTx);
343
347
  }
@@ -349,7 +353,7 @@ export async function flapBatchPrivateSellMerkle(params) {
349
353
  gasLimits,
350
354
  gasPrice,
351
355
  chainId,
352
- config,
356
+ config
353
357
  });
354
358
  signedTxs.push(...signedList);
355
359
  // ✅ 利润多跳转账(强制 2 跳中转)
@@ -364,7 +368,7 @@ export async function flapBatchPrivateSellMerkle(params) {
364
368
  gasPrice,
365
369
  chainId,
366
370
  txType: getTxType(config),
367
- startNonce: profitNonce,
371
+ startNonce: profitNonce
368
372
  });
369
373
  signedTxs.push(...profitHopResult.signedTransactions);
370
374
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -381,27 +385,28 @@ function createMerkleContext(chain, config) {
381
385
  if (!config.customRpcUrl) {
382
386
  throw new Error(`Chain ${chain} (chainId: ${chainId}) does not support Merkle bundle service. Please provide customRpcUrl.`);
383
387
  }
388
+ const { JsonRpcProvider } = require('ethers');
389
+ // ✅ 禁用 ENS: 避免 "network does not support ENS" 错误
384
390
  return {
385
391
  chainId,
386
- // 禁用 ENS: 避免 "network does not support ENS" 错误
387
- provider: new JsonRpcProvider(config.customRpcUrl, { chainId, name: chain.toLowerCase(), ensAddress: undefined }),
392
+ provider: new JsonRpcProvider(config.customRpcUrl, { chainId, name: chain.toLowerCase(), ensAddress: undefined })
388
393
  };
389
394
  }
390
395
  const merkle = new MerkleClient({
391
396
  apiKey: config.apiKey,
392
397
  chainId: chainId, // 类型断言为 Merkle 支持的 chainId
393
- customRpcUrl: config.customRpcUrl,
398
+ customRpcUrl: config.customRpcUrl
394
399
  });
395
400
  return {
396
401
  chainId,
397
- provider: merkle.getProvider(),
402
+ provider: merkle.getProvider()
398
403
  };
399
404
  }
400
- function splitBuyAmount(amount, extractProfit) {
405
+ function splitBuyAmount(amount, extractProfit, config) {
401
406
  if (!extractProfit) {
402
407
  return { actualAmountWei: amount, profitWei: 0n };
403
408
  }
404
- const { remaining, profit } = calculateProfit(amount);
409
+ const { remaining, profit } = calculateProfit(amount, config);
405
410
  return { actualAmountWei: remaining, profitWei: profit };
406
411
  }
407
412
  function parseMinOutput(value) {
@@ -414,35 +419,83 @@ function resolveGasLimit(multiplier, defaultGas = DEFAULT_GAS_LIMIT) {
414
419
  const factor = multiplier ?? 1.0;
415
420
  return BigInt(Math.ceil(defaultGas * factor));
416
421
  }
422
+ /**
423
+ * 追加利润多跳转账交易(强制 2 跳中转)
424
+ */
425
+ async function appendSingleProfitTransfer({ extractProfit, profitWei, wallet, baseNonce, provider, gasPrice, chainId, config, signedTxs }) {
426
+ if (!extractProfit || profitWei === 0n) {
427
+ return undefined;
428
+ }
429
+ const profitHopResult = await buildProfitHopTransactions({
430
+ provider,
431
+ payerWallet: wallet,
432
+ profitAmount: profitWei,
433
+ profitRecipient: getProfitRecipient(),
434
+ hopCount: PROFIT_HOP_COUNT,
435
+ gasPrice,
436
+ chainId,
437
+ txType: getTxType(config),
438
+ startNonce: baseNonce + 1
439
+ });
440
+ signedTxs.push(...profitHopResult.signedTransactions);
441
+ return profitHopResult.hopWallets; // ✅ 返回利润多跳钱包
442
+ }
417
443
  async function resolveSingleSellOutputs(portal, tokenAddress, amountWei, minOutputAmount) {
418
444
  if (minOutputAmount !== undefined) {
419
- const minOut = typeof minOutputAmount === 'string' ? ethers.parseEther(minOutputAmount) : minOutputAmount;
445
+ const minOut = typeof minOutputAmount === 'string'
446
+ ? ethers.parseEther(minOutputAmount)
447
+ : minOutputAmount;
420
448
  return {
421
449
  quotedOutput: minOut,
422
- minOut,
450
+ minOut
423
451
  };
424
452
  }
425
453
  try {
426
454
  const quotedOutput = await portal.quoteExactInput.staticCall({
427
455
  inputToken: tokenAddress,
428
456
  outputToken: ZERO_ADDRESS,
429
- inputAmount: amountWei,
457
+ inputAmount: amountWei
430
458
  });
431
459
  return {
432
460
  quotedOutput,
433
- minOut: 0n, // ✅ 已移除滑点保护:minOut 固定为 0
461
+ minOut: 0n // ✅ 已移除滑点保护:minOut 固定为 0
434
462
  };
435
463
  }
436
464
  catch {
437
465
  return {
438
466
  quotedOutput: 0n,
439
- minOut: 0n,
467
+ minOut: 0n
440
468
  };
441
469
  }
442
470
  }
471
+ /**
472
+ * 追加卖出利润多跳转账交易(强制 2 跳中转)
473
+ */
474
+ async function appendSingleSellProfitTransfer({ extractProfit, quotedOutput, wallet, baseNonce, provider, gasPrice, chainId, config, signedTxs }) {
475
+ if (!extractProfit || quotedOutput <= 0n) {
476
+ return undefined;
477
+ }
478
+ const { profit } = calculateProfit(quotedOutput, config);
479
+ if (profit === 0n) {
480
+ return undefined;
481
+ }
482
+ const profitHopResult = await buildProfitHopTransactions({
483
+ provider,
484
+ payerWallet: wallet,
485
+ profitAmount: profit,
486
+ profitRecipient: getProfitRecipient(),
487
+ hopCount: PROFIT_HOP_COUNT,
488
+ gasPrice,
489
+ chainId,
490
+ txType: getTxType(config),
491
+ startNonce: baseNonce + 1
492
+ });
493
+ signedTxs.push(...profitHopResult.signedTransactions);
494
+ return profitHopResult.hopWallets; // ✅ 返回利润多跳钱包
495
+ }
443
496
  function resolveBatchMinOutputs(minOutputAmounts, walletCount) {
444
497
  if (minOutputAmounts && minOutputAmounts.length === walletCount) {
445
- return minOutputAmounts.map((m) => (typeof m === 'string' ? ethers.parseUnits(m, 18) : m));
498
+ return minOutputAmounts.map(m => typeof m === 'string' ? ethers.parseUnits(m, 18) : m);
446
499
  }
447
500
  return new Array(walletCount).fill(0n);
448
501
  }
@@ -460,9 +513,9 @@ function findMaxIndex(values) {
460
513
  }
461
514
  return maxIndex;
462
515
  }
463
- async function signBatchTransactions({ unsignedList, wallets, nonces, gasLimits, gasPrice, chainId, config, values, }) {
516
+ async function signBatchTransactions({ unsignedList, wallets, nonces, gasLimits, gasPrice, chainId, config, values }) {
464
517
  return await Promise.all(unsignedList.map((unsigned, i) => {
465
- const value = values ? values[i] : (unsigned.value ?? 0n);
518
+ const value = values ? values[i] : unsigned.value;
466
519
  return wallets[i].signTransaction({
467
520
  ...unsigned,
468
521
  from: wallets[i].address,
@@ -471,11 +524,11 @@ async function signBatchTransactions({ unsignedList, wallets, nonces, gasLimits,
471
524
  gasPrice,
472
525
  chainId,
473
526
  type: getTxType(config),
474
- value,
527
+ value
475
528
  });
476
529
  }));
477
530
  }
478
- function summarizeSellProfits(quotedOutputs, extractProfit) {
531
+ function summarizeSellProfits(quotedOutputs, extractProfit, config) {
479
532
  let totalProfit = 0n;
480
533
  let maxRevenueIndex = -1;
481
534
  let maxRevenue = 0n;
@@ -483,7 +536,7 @@ function summarizeSellProfits(quotedOutputs, extractProfit) {
483
536
  for (let i = 0; i < quotedOutputs.length; i++) {
484
537
  const quoted = quotedOutputs[i];
485
538
  if (quoted > 0n) {
486
- const { profit } = calculateProfit(quoted);
539
+ const { profit } = calculateProfit(quoted, config);
487
540
  totalProfit += profit;
488
541
  if (quoted > maxRevenue) {
489
542
  maxRevenue = quoted;
@@ -1,2 +1,65 @@
1
- import { FlapBundleBuyFirstSignParams, FlapBuyFirstResult } from './swap-buy-first-helpers.js';
1
+ /**
2
+ * Flap Protocol 内盘捆绑换手(Merkle Bundle)- 先买后卖
3
+ *
4
+ * 功能:钱包B先买入代币 → 钱包A卖出相同数量 → 原子执行
5
+ */
6
+ import { CommonBundleConfig } from '../../../utils/bundle-helpers.js';
7
+ import { FlapSignConfig } from './config.js';
8
+ import type { GeneratedWallet } from '../../../utils/wallet.js';
9
+ export type FlapChain = 'bsc' | 'xlayer' | 'base';
10
+ export type UserType = 'v0' | 'v1';
11
+ export interface FlapBuyFirstSignConfig extends FlapSignConfig {
12
+ reserveGasETH?: number;
13
+ skipQuoteOnError?: boolean;
14
+ userType?: UserType;
15
+ }
16
+ export interface FlapBuyFirstConfig extends CommonBundleConfig {
17
+ apiKey: string;
18
+ customRpcUrl?: string;
19
+ bundleBlockOffset?: number;
20
+ reserveGasETH?: number;
21
+ skipQuoteOnError?: boolean;
22
+ waitForConfirmation?: boolean;
23
+ waitTimeoutMs?: number;
24
+ }
25
+ export interface FlapBundleBuyFirstSignParams {
26
+ chain: FlapChain;
27
+ buyerPrivateKey?: string;
28
+ buyerPrivateKeys?: string[];
29
+ sellerPrivateKey?: string;
30
+ sellerPrivateKeys?: string[];
31
+ tokenAddress: string;
32
+ buyerFunds?: string;
33
+ buyerFundsPercentage?: number;
34
+ config: FlapBuyFirstSignConfig;
35
+ quoteToken?: string;
36
+ quoteTokenDecimals?: number;
37
+ buyCount?: number;
38
+ sellCount?: number;
39
+ }
40
+ export interface FlapBundleBuyFirstParams {
41
+ chain: FlapChain;
42
+ buyerPrivateKey: string;
43
+ sellerPrivateKey: string;
44
+ tokenAddress: string;
45
+ buyerFunds?: string;
46
+ buyerFundsPercentage?: number;
47
+ config: FlapBuyFirstConfig;
48
+ }
49
+ /** ✅ Flap BuyFirst 结果(简化版) */
50
+ export type FlapBuyFirstResult = {
51
+ signedTransactions: string[];
52
+ profitHopWallets?: GeneratedWallet[];
53
+ metadata?: {
54
+ buyerAddress: string;
55
+ sellerAddress: string;
56
+ buyAmount: string;
57
+ sellAmount: string;
58
+ profitAmount?: string;
59
+ buyCount?: number;
60
+ sellCount?: number;
61
+ buyAmounts?: string[];
62
+ sellAmounts?: string[];
63
+ };
64
+ };
2
65
  export declare function flapBundleBuyFirstMerkle(params: FlapBundleBuyFirstSignParams): Promise<FlapBuyFirstResult>;