four-flap-meme-sdk 2.2.19 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/dist/{shared/abis → abis}/common.d.ts +1 -1
  2. package/dist/{shared/abis → abis}/common.js +75 -91
  3. package/dist/abis/contracts/TaxToken.json +969 -0
  4. package/dist/abis/contracts/TokenManager2.json +136 -0
  5. package/dist/{shared/abis → abis/contracts}/index.d.ts +0 -1
  6. package/dist/{shared/abis → abis/contracts}/index.js +0 -2
  7. package/dist/abis/flap/index.d.ts +5 -0
  8. package/dist/abis/flap/index.js +5 -0
  9. package/dist/abis/flap/portal-eip7702.d.ts +4 -0
  10. package/dist/abis/flap/portal-eip7702.js +39 -0
  11. package/dist/abis/flap/portal-events.d.ts +6 -0
  12. package/dist/abis/flap/portal-events.js +17 -0
  13. package/dist/abis/flap/portal-merkle.d.ts +4 -0
  14. package/dist/abis/flap/portal-merkle.js +25 -0
  15. package/dist/abis/flap/portal.d.ts +6 -0
  16. package/dist/abis/flap/portal.js +37 -0
  17. package/dist/abis/flap/vault.d.ts +171 -0
  18. package/dist/abis/flap/vault.js +91 -0
  19. package/dist/abis/index.d.ts +6 -0
  20. package/dist/abis/index.js +9 -0
  21. package/dist/bundle/config-helpers.d.ts +37 -0
  22. package/dist/bundle/config-helpers.js +58 -0
  23. package/dist/bundle/errors.d.ts +50 -0
  24. package/dist/bundle/errors.js +38 -0
  25. package/dist/bundle/four-meme/approve-tokenmanager.d.ts +7 -0
  26. package/dist/bundle/four-meme/approve-tokenmanager.js +99 -0
  27. package/dist/bundle/four-meme/core-helpers.d.ts +8 -0
  28. package/dist/bundle/four-meme/core-helpers.js +41 -0
  29. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/core.d.ts +1 -1
  30. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/core.js +74 -150
  31. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/pancake-proxy.d.ts +1 -1
  32. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/pancake-proxy.js +85 -92
  33. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/private.d.ts +1 -1
  34. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/private.js +48 -59
  35. package/dist/bundle/four-meme/sign-context-helpers.d.ts +2 -0
  36. package/dist/bundle/four-meme/sign-context-helpers.js +2 -0
  37. package/dist/bundle/four-meme/swap-buy-first.d.ts +8 -0
  38. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-buy-first.js +56 -108
  39. package/dist/bundle/four-meme/swap-hop-helpers.d.ts +6 -0
  40. package/dist/bundle/four-meme/swap-hop-helpers.js +63 -0
  41. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-internal.js +4 -4
  42. package/dist/bundle/four-meme/swap-sign-helpers.d.ts +28 -0
  43. package/dist/bundle/four-meme/swap-sign-helpers.js +105 -0
  44. package/dist/bundle/four-meme/swap.d.ts +17 -0
  45. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap.js +84 -345
  46. package/dist/{contracts/tm-bundle-merkle/swap-buy-first.d.ts → bundle/four-meme/types/buy-first.d.ts} +11 -18
  47. package/dist/bundle/four-meme/types/core-flow.d.ts +63 -0
  48. package/dist/bundle/four-meme/types/core-flow.js +1 -0
  49. package/dist/{contracts/tm-bundle-merkle/types.d.ts → bundle/four-meme/types/index.d.ts} +130 -6
  50. package/dist/bundle/four-meme/types/index.js +1 -0
  51. package/dist/bundle/four-meme/types/swap-internal.d.ts +19 -0
  52. package/dist/bundle/four-meme/types/swap-internal.js +1 -0
  53. package/dist/bundle/four-meme/types.d.ts +1 -0
  54. package/dist/bundle/four-meme/utils-disperse.d.ts +7 -0
  55. package/dist/bundle/four-meme/utils-disperse.js +396 -0
  56. package/dist/bundle/four-meme/utils-pairwise.d.ts +8 -0
  57. package/dist/bundle/four-meme/utils-pairwise.js +328 -0
  58. package/dist/bundle/four-meme/utils-sweep.d.ts +8 -0
  59. package/dist/bundle/four-meme/utils-sweep.js +744 -0
  60. package/dist/bundle/index.d.ts +8 -0
  61. package/dist/bundle/index.js +8 -0
  62. package/dist/bundle/internal.d.ts +16 -0
  63. package/dist/bundle/internal.js +160 -0
  64. package/dist/bundle/sign-context-helpers.d.ts +26 -0
  65. package/dist/bundle/sign-context-helpers.js +63 -0
  66. package/dist/{contracts/tm-bundle-merkle → bundle}/submit.d.ts +6 -27
  67. package/dist/{contracts/tm-bundle-merkle → bundle}/submit.js +116 -313
  68. package/dist/bundle/types/index.d.ts +8 -0
  69. package/dist/bundle/types/index.js +1 -0
  70. package/dist/bundle/types.d.ts +1 -0
  71. package/dist/bundle/types.js +1 -0
  72. package/dist/chains/bsc/constants.js +1 -1
  73. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  74. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
  75. package/dist/chains/bsc/four/config.d.ts +5 -67
  76. package/dist/chains/bsc/four/config.js +2 -114
  77. package/dist/chains/bsc/four/core.d.ts +1 -4
  78. package/dist/chains/bsc/four/core.js +1 -592
  79. package/dist/chains/bsc/four/index.d.ts +6 -6
  80. package/dist/chains/bsc/four/index.js +6 -6
  81. package/dist/chains/bsc/four/internal.d.ts +2 -46
  82. package/dist/chains/bsc/four/internal.js +2 -239
  83. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  84. package/dist/chains/bsc/four/pancake-proxy.js +1 -687
  85. package/dist/chains/bsc/four/private.d.ts +1 -27
  86. package/dist/chains/bsc/four/private.js +1 -477
  87. package/dist/chains/bsc/four/submit.d.ts +2 -315
  88. package/dist/chains/bsc/four/submit.js +2 -752
  89. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  90. package/dist/chains/bsc/four/swap-buy-first.js +2 -507
  91. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  92. package/dist/chains/bsc/four/swap-internal.js +1 -18
  93. package/dist/chains/bsc/four/swap.d.ts +2 -144
  94. package/dist/chains/bsc/four/swap.js +2 -766
  95. package/dist/chains/bsc/four/types.d.ts +1 -476
  96. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  97. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  98. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  99. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  100. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  101. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  102. package/dist/chains/bsc/four/utils.d.ts +5 -18
  103. package/dist/chains/bsc/four/utils.js +5 -1552
  104. package/dist/chains/bsc/iro.d.ts +5 -0
  105. package/dist/chains/bsc/iro.js +4 -0
  106. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +155 -0
  107. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +80 -0
  108. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  109. package/dist/chains/bsc/pancake/bundle-buy-first.js +99 -214
  110. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  111. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  112. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  113. package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
  114. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  115. package/dist/chains/bsc/pancake/index.js +1 -3
  116. package/dist/chains/bsc/platforms/iro/constants.js +1 -1
  117. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  118. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  119. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  120. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  121. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  122. package/dist/chains/bsc/platforms/iro/token.js +5 -2
  123. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  124. package/dist/chains/eni/batch-router/transfer.js +57 -27
  125. package/dist/chains/eni/batch-router/utils.js +32 -6
  126. package/dist/chains/eni/bundler/sign.js +5 -6
  127. package/dist/chains/eni/bundler/submit.js +1 -4
  128. package/dist/chains/eni/constants.js +2 -2
  129. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  130. package/dist/chains/eni/flat-aliases.js +8 -0
  131. package/dist/chains/eni/index.d.ts +2 -1
  132. package/dist/chains/eni/index.js +1 -0
  133. package/dist/chains/eni/platforms/daoaas/create.js +3 -3
  134. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  135. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  136. package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
  137. package/dist/chains/eni/platforms/daoaas/portal-direct.js +29 -45
  138. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  139. package/dist/chains/eni/platforms/dswap/liquidity.js +59 -27
  140. package/dist/chains/eni/platforms/fair-launch/constants.js +1 -1
  141. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  142. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  143. package/dist/chains/eni/platforms/fair-launch/launcher.js +88 -47
  144. package/dist/chains/eni/platforms/fair-launch/pool.js +5 -2
  145. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  146. package/dist/chains/eni/platforms/iro/constants.d.ts +1 -1
  147. package/dist/chains/eni/platforms/iro/constants.js +2 -2
  148. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  149. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  150. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  151. package/dist/chains/eni/platforms/iro/index.js +4 -4
  152. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  153. package/dist/chains/eni/platforms/iro/token.js +108 -32
  154. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  155. package/dist/chains/eni/submit.d.ts +43 -0
  156. package/dist/chains/eni/submit.js +287 -0
  157. package/dist/chains/index.d.ts +13 -0
  158. package/dist/chains/index.js +13 -0
  159. package/dist/chains/monad/constants.js +1 -1
  160. package/dist/chains/xlayer/constants.d.ts +5 -0
  161. package/dist/chains/xlayer/constants.js +1 -1
  162. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  163. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
  164. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  165. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  166. package/dist/chains/xlayer/eip7702/bundle-create.js +104 -74
  167. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  168. package/dist/chains/xlayer/eip7702/bundle-sell.js +30 -112
  169. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  170. package/dist/chains/xlayer/eip7702/bundle-swap.js +52 -246
  171. package/dist/chains/xlayer/eip7702/constants.d.ts +11 -26
  172. package/dist/chains/xlayer/eip7702/constants.js +15 -68
  173. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  174. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  175. package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
  176. package/dist/chains/xlayer/eip7702/index.js +28 -81
  177. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  178. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  179. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  180. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +64 -308
  181. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  182. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +58 -0
  183. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  184. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  185. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  186. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  187. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  188. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  189. package/dist/chains/xlayer/eip7702/volume.js +89 -164
  190. package/dist/chains/xlayer/eoa/constants.d.ts +1 -1
  191. package/dist/chains/xlayer/eoa/constants.js +2 -16
  192. package/dist/chains/xlayer/eoa/dex-helpers.d.ts +1 -1
  193. package/dist/chains/xlayer/eoa/dex-helpers.js +7 -37
  194. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  195. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  196. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  197. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
  198. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  199. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
  200. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  201. package/dist/chains/xlayer/eoa/index.js +8 -23
  202. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  203. package/dist/chains/xlayer/eoa/router-manager.js +5 -4
  204. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  205. package/dist/chains/xlayer/eoa/types.js +1 -3
  206. package/dist/chains/xlayer/index.d.ts +3 -2
  207. package/dist/chains/xlayer/index.js +4 -7
  208. package/dist/core/amount/split-by-weight.d.ts +5 -0
  209. package/dist/core/amount/split-by-weight.js +35 -0
  210. package/dist/{shared → core}/clients/blockrazor.d.ts +4 -8
  211. package/dist/{shared → core}/clients/blockrazor.js +43 -35
  212. package/dist/{shared → core}/clients/club48.d.ts +2 -2
  213. package/dist/{shared → core}/clients/club48.js +36 -30
  214. package/dist/{shared → core}/clients/emitservice.js +2 -0
  215. package/dist/{shared → core}/clients/four.d.ts +21 -6
  216. package/dist/{shared → core}/clients/four.js +29 -24
  217. package/dist/core/clients/index.d.ts +8 -0
  218. package/dist/core/clients/index.js +8 -0
  219. package/dist/{shared → core}/clients/merkle.d.ts +4 -3
  220. package/dist/{shared → core}/clients/merkle.js +30 -47
  221. package/dist/{shared → core}/constants/addresses.d.ts +27 -1
  222. package/dist/{shared → core}/constants/addresses.js +39 -2
  223. package/dist/{shared → core}/constants/chains.d.ts +1 -1
  224. package/dist/{shared → core}/constants/chains.js +1 -1
  225. package/dist/{shared → core}/constants/gas.d.ts +1 -1
  226. package/dist/{shared → core}/constants/gas.js +2 -6
  227. package/dist/{shared → core}/constants/index.d.ts +5 -2
  228. package/dist/{shared → core}/constants/index.js +3 -2
  229. package/dist/core/constants/quote.d.ts +30 -0
  230. package/dist/core/constants/quote.js +37 -0
  231. package/dist/core/dex/v3-path.d.ts +6 -0
  232. package/dist/core/dex/v3-path.js +35 -0
  233. package/dist/core/erc20/decimals.d.ts +7 -0
  234. package/dist/core/erc20/decimals.js +24 -0
  235. package/dist/{utils → core}/erc20.d.ts +7 -89
  236. package/dist/{utils → core}/erc20.js +99 -130
  237. package/dist/core/foundation.d.ts +15 -0
  238. package/dist/core/foundation.js +14 -0
  239. package/dist/core/gas/bundle-gas.d.ts +49 -0
  240. package/dist/core/gas/bundle-gas.js +93 -0
  241. package/dist/core/gas/profit-hop.d.ts +20 -0
  242. package/dist/core/gas/profit-hop.js +72 -0
  243. package/dist/core/index.d.ts +5 -0
  244. package/dist/core/index.js +5 -0
  245. package/dist/core/legacy-types/errors.d.ts +27 -0
  246. package/dist/core/legacy-types/errors.js +34 -0
  247. package/dist/core/nonce/nonce-manager.d.ts +19 -0
  248. package/dist/core/nonce/nonce-manager.js +217 -0
  249. package/dist/core/normalize-unknown.d.ts +9 -0
  250. package/dist/core/normalize-unknown.js +29 -0
  251. package/dist/core/sdk-logger.d.ts +13 -0
  252. package/dist/core/sdk-logger.js +12 -0
  253. package/dist/core/shared-abis/common.d.ts +4 -0
  254. package/dist/core/shared-abis/common.js +4 -0
  255. package/dist/core/shared-abis/index.d.ts +5 -0
  256. package/dist/core/shared-abis/index.js +5 -0
  257. package/dist/core/tx/build-request.d.ts +17 -0
  258. package/dist/core/tx/build-request.js +25 -0
  259. package/dist/core/tx/sign-batch.d.ts +5 -0
  260. package/dist/core/tx/sign-batch.js +26 -0
  261. package/dist/core/tx/wallet-sign-patch.d.ts +1 -0
  262. package/dist/core/tx/wallet-sign-patch.js +18 -0
  263. package/dist/core/types/airdrop-sweep.d.ts +79 -0
  264. package/dist/core/types/airdrop-sweep.js +1 -0
  265. package/dist/core/types/erc20.d.ts +65 -0
  266. package/dist/core/types/erc20.js +1 -0
  267. package/dist/core/types/holders-maker.d.ts +64 -0
  268. package/dist/core/types/holders-maker.js +1 -0
  269. package/dist/core/types/index.d.ts +7 -0
  270. package/dist/core/types/index.js +1 -0
  271. package/dist/{utils → core/types}/lp-inspect.d.ts +4 -52
  272. package/dist/core/types/lp-inspect.js +1 -0
  273. package/dist/core/types/multicall.d.ts +5 -0
  274. package/dist/core/types/multicall.js +1 -0
  275. package/dist/core/types/private-sale.d.ts +35 -0
  276. package/dist/core/types/private-sale.js +1 -0
  277. package/dist/core/types/quote-helpers.d.ts +17 -0
  278. package/dist/core/types/quote-helpers.js +1 -0
  279. package/dist/core/types-erc20.d.ts +1 -0
  280. package/dist/core/types-erc20.js +1 -0
  281. package/dist/core/wallet/generate.d.ts +5 -0
  282. package/dist/core/wallet/generate.js +8 -0
  283. package/dist/domains/dex/direct-router-helpers.d.ts +269 -0
  284. package/dist/domains/dex/direct-router-helpers.js +536 -0
  285. package/dist/domains/dex/direct-router.d.ts +28 -0
  286. package/dist/{dex → domains/dex}/direct-router.js +246 -674
  287. package/dist/domains/dex/types.d.ts +81 -0
  288. package/dist/domains/dex/types.js +1 -0
  289. package/dist/{shared → domains}/flap/abi.js +1 -1
  290. package/dist/{shared → domains}/flap/constants.d.ts +1 -2
  291. package/dist/{shared → domains}/flap/constants.js +3 -4
  292. package/dist/{shared → domains}/flap/curve.js +3 -0
  293. package/dist/{shared → domains}/flap/errors.d.ts +1 -4
  294. package/dist/{shared → domains}/flap/errors.js +20 -1
  295. package/dist/domains/flap/index.d.ts +7 -0
  296. package/dist/domains/flap/index.js +5 -0
  297. package/dist/{shared → domains}/flap/meta.d.ts +22 -18
  298. package/dist/{shared → domains}/flap/meta.js +32 -24
  299. package/dist/{shared/flap/index.d.ts → domains/flap/module.d.ts} +4 -5
  300. package/dist/{shared/flap/index.js → domains/flap/module.js} +4 -5
  301. package/dist/{shared → domains}/flap/permit.js +10 -3
  302. package/dist/{shared → domains}/flap/pinata.d.ts +22 -6
  303. package/dist/{shared → domains}/flap/pinata.js +21 -26
  304. package/dist/domains/flap/portal-bundle-merkle/config.d.ts +10 -0
  305. package/dist/domains/flap/portal-bundle-merkle/config.js +13 -0
  306. package/dist/domains/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  307. package/dist/domains/flap/portal-bundle-merkle/core-helpers.js +83 -0
  308. package/dist/{shared → domains}/flap/portal-bundle-merkle/core.d.ts +0 -4
  309. package/dist/{shared → domains}/flap/portal-bundle-merkle/core.js +168 -175
  310. package/dist/{shared → domains}/flap/portal-bundle-merkle/create-to-dex.d.ts +17 -4
  311. package/dist/{shared → domains}/flap/portal-bundle-merkle/create-to-dex.js +97 -118
  312. package/dist/{shared → domains}/flap/portal-bundle-merkle/curve-to-dex.js +105 -123
  313. package/dist/domains/flap/portal-bundle-merkle/index.d.ts +18 -0
  314. package/dist/{shared → domains}/flap/portal-bundle-merkle/index.js +4 -7
  315. package/dist/{shared → domains}/flap/portal-bundle-merkle/pancake-proxy.js +73 -70
  316. package/dist/{shared → domains}/flap/portal-bundle-merkle/private.js +63 -116
  317. package/dist/domains/flap/portal-bundle-merkle/swap-batch.d.ts +8 -0
  318. package/dist/domains/flap/portal-bundle-merkle/swap-batch.js +227 -0
  319. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  320. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  321. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first.d.ts +2 -0
  322. package/dist/{shared → domains}/flap/portal-bundle-merkle/swap-buy-first.js +69 -288
  323. package/dist/domains/flap/portal-bundle-merkle/swap-cross.d.ts +9 -0
  324. package/dist/domains/flap/portal-bundle-merkle/swap-cross.js +139 -0
  325. package/dist/domains/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  326. package/dist/domains/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  327. package/dist/domains/flap/portal-bundle-merkle/swap-planning.d.ts +70 -0
  328. package/dist/domains/flap/portal-bundle-merkle/swap-planning.js +182 -0
  329. package/dist/domains/flap/portal-bundle-merkle/swap-quick-batch.d.ts +16 -0
  330. package/dist/domains/flap/portal-bundle-merkle/swap-quick-batch.js +327 -0
  331. package/dist/domains/flap/portal-bundle-merkle/swap-single.d.ts +2 -0
  332. package/dist/domains/flap/portal-bundle-merkle/swap-single.js +184 -0
  333. package/dist/domains/flap/portal-bundle-merkle/swap-types.d.ts +101 -0
  334. package/dist/domains/flap/portal-bundle-merkle/swap-types.js +1 -0
  335. package/dist/domains/flap/portal-bundle-merkle/swap.d.ts +8 -0
  336. package/dist/domains/flap/portal-bundle-merkle/swap.js +7 -0
  337. package/dist/{shared → domains}/flap/portal-bundle-merkle/types.d.ts +88 -12
  338. package/dist/domains/flap/portal-bundle-merkle/types.js +1 -0
  339. package/dist/domains/flap/portal-bundle-merkle/utils.d.ts +10 -0
  340. package/dist/{shared → domains}/flap/portal-bundle-merkle/utils.js +145 -265
  341. package/dist/{shared → domains}/flap/portal-bundle.d.ts +2 -2
  342. package/dist/{shared → domains}/flap/portal-bundle.js +84 -79
  343. package/dist/domains/flap/portal-create-token.d.ts +81 -0
  344. package/dist/domains/flap/portal-create-token.js +255 -0
  345. package/dist/{shared → domains}/flap/portal.d.ts +1 -2
  346. package/dist/{shared → domains}/flap/portal.js +36 -28
  347. package/dist/{shared → domains}/flap/vanity.d.ts +6 -6
  348. package/dist/{shared → domains}/flap/vanity.js +15 -21
  349. package/dist/{shared → domains}/flap/vault.d.ts +25 -93
  350. package/dist/{shared → domains}/flap/vault.js +77 -127
  351. package/dist/{flows → domains/flows}/create.d.ts +2 -1
  352. package/dist/{flows → domains/flows}/create.js +8 -8
  353. package/dist/domains/flows/index.d.ts +9 -0
  354. package/dist/domains/flows/index.js +9 -0
  355. package/dist/{contracts → domains/four/contracts}/helper3.d.ts +20 -5
  356. package/dist/{contracts → domains/four/contracts}/helper3.js +56 -20
  357. package/dist/domains/four/contracts/tm-bundle-helpers.d.ts +88 -0
  358. package/dist/domains/four/contracts/tm-bundle-helpers.js +73 -0
  359. package/dist/{contracts → domains/four/contracts}/tm-bundle.d.ts +4 -52
  360. package/dist/{contracts → domains/four/contracts}/tm-bundle.js +122 -189
  361. package/dist/{contracts → domains/four/contracts}/tm.d.ts +10 -8
  362. package/dist/{contracts → domains/four/contracts}/tm.js +39 -35
  363. package/dist/{contracts → domains/four/contracts}/tm1.js +9 -4
  364. package/dist/{contracts → domains/four/contracts}/tm2.js +10 -5
  365. package/dist/domains/four/index.d.ts +7 -0
  366. package/dist/domains/four/index.js +7 -0
  367. package/dist/{shared → domains}/four/tax-token.d.ts +1 -1
  368. package/dist/{shared → domains}/four/tax-token.js +31 -10
  369. package/dist/domains/holders/holders-maker-helpers.d.ts +9 -0
  370. package/dist/domains/holders/holders-maker-helpers.js +9 -0
  371. package/dist/domains/holders/holders-maker.d.ts +18 -0
  372. package/dist/domains/holders/holders-maker.js +324 -0
  373. package/dist/domains/holders/index.d.ts +1 -0
  374. package/dist/domains/holders/index.js +1 -0
  375. package/dist/domains/holders/internal/addresses.d.ts +12 -0
  376. package/dist/domains/holders/internal/addresses.js +15 -0
  377. package/dist/domains/holders/internal/buy-tx.d.ts +44 -0
  378. package/dist/domains/holders/internal/buy-tx.js +278 -0
  379. package/dist/domains/holders/internal/constants.d.ts +6 -0
  380. package/dist/domains/holders/internal/constants.js +7 -0
  381. package/dist/domains/holders/internal/disperse.d.ts +18 -0
  382. package/dist/domains/holders/internal/disperse.js +90 -0
  383. package/dist/domains/holders/internal/routing.d.ts +4 -0
  384. package/dist/domains/holders/internal/routing.js +45 -0
  385. package/dist/domains/holders/internal/transfer-tx.d.ts +4 -0
  386. package/dist/domains/holders/internal/transfer-tx.js +67 -0
  387. package/dist/domains/holders/types.d.ts +1 -0
  388. package/dist/domains/holders/types.js +1 -0
  389. package/dist/domains/lp-inspect/index.d.ts +1 -0
  390. package/dist/domains/lp-inspect/index.js +1 -0
  391. package/dist/domains/lp-inspect/lp-inspect-helpers.d.ts +9 -0
  392. package/dist/domains/lp-inspect/lp-inspect-helpers.js +109 -0
  393. package/dist/domains/lp-inspect/lp-inspect.d.ts +40 -0
  394. package/dist/{utils → domains/lp-inspect}/lp-inspect.js +78 -293
  395. package/dist/domains/lp-inspect/types.d.ts +1 -0
  396. package/dist/domains/lp-inspect/types.js +1 -0
  397. package/dist/domains/merkle/index.d.ts +12 -0
  398. package/dist/domains/merkle/index.js +11 -0
  399. package/dist/domains/private-sale/index.d.ts +1 -0
  400. package/dist/domains/private-sale/index.js +1 -0
  401. package/dist/domains/private-sale/private-sale.d.ts +34 -0
  402. package/dist/{utils → domains/private-sale}/private-sale.js +5 -16
  403. package/dist/domains/private-sale/types.d.ts +1 -0
  404. package/dist/domains/private-sale/types.js +1 -0
  405. package/dist/domains/quote/index.d.ts +1 -0
  406. package/dist/domains/quote/index.js +1 -0
  407. package/dist/{utils → domains/quote}/quote-helpers.d.ts +4 -45
  408. package/dist/{utils → domains/quote}/quote-helpers.js +17 -74
  409. package/dist/domains/quote/types.d.ts +1 -0
  410. package/dist/domains/quote/types.js +1 -0
  411. package/dist/domains/vanity/index.d.ts +5 -0
  412. package/dist/domains/vanity/index.js +5 -0
  413. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  414. package/dist/exports/root-bundle-and-tooling.js +30 -0
  415. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  416. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  417. package/dist/exports/root-foundations.d.ts +35 -0
  418. package/dist/exports/root-foundations.js +70 -0
  419. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  420. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  421. package/dist/index.d.ts +17 -88
  422. package/dist/index.js +17 -218
  423. package/dist/utils/airdrop-sweep.d.ts +4 -76
  424. package/dist/utils/airdrop-sweep.js +42 -55
  425. package/dist/utils/bundle-helpers.d.ts +9 -243
  426. package/dist/utils/bundle-helpers.js +10 -584
  427. package/dist/utils/constants.d.ts +5 -61
  428. package/dist/utils/constants.js +5 -80
  429. package/dist/utils/contract-factory.d.ts +2 -4
  430. package/dist/utils/contract-factory.js +25 -18
  431. package/dist/utils/errors.d.ts +12 -1
  432. package/dist/utils/errors.js +60 -1
  433. package/dist/utils/hop-chains.d.ts +35 -0
  434. package/dist/utils/hop-chains.js +215 -0
  435. package/dist/utils/index.d.ts +5 -0
  436. package/dist/utils/index.js +5 -0
  437. package/dist/utils/mpcExclusive.d.ts +2 -5
  438. package/dist/utils/mpcExclusive.js +4 -3
  439. package/dist/utils/provider-factory.d.ts +4 -0
  440. package/dist/utils/provider-factory.js +10 -0
  441. package/dist/utils/stealth-transfer.d.ts +2 -28
  442. package/dist/utils/stealth-transfer.js +41 -21
  443. package/dist/utils/swap-helpers.d.ts +2 -15
  444. package/dist/utils/swap-helpers.js +7 -12
  445. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  446. package/dist/utils/types/airdrop-sweep.js +1 -0
  447. package/dist/utils/types/contract-factory.d.ts +1 -0
  448. package/dist/utils/types/contract-factory.js +1 -0
  449. package/dist/utils/types/errors.d.ts +1 -0
  450. package/dist/utils/types/errors.js +1 -0
  451. package/dist/utils/types/hop-chains.d.ts +8 -0
  452. package/dist/utils/types/hop-chains.js +1 -0
  453. package/dist/utils/types/index.d.ts +13 -0
  454. package/dist/utils/types/index.js +1 -0
  455. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  456. package/dist/utils/types/mpc-exclusive.js +1 -0
  457. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  458. package/dist/utils/types/stealth-transfer.js +1 -0
  459. package/dist/utils/types/wallet.d.ts +25 -0
  460. package/dist/utils/types/wallet.js +1 -0
  461. package/dist/utils/wallet.d.ts +4 -25
  462. package/dist/utils/wallet.js +27 -22
  463. package/package.json +96 -2
  464. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +0 -26
  465. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +0 -113
  466. package/dist/contracts/tm-bundle-merkle/config.d.ts +0 -70
  467. package/dist/contracts/tm-bundle-merkle/config.js +0 -114
  468. package/dist/contracts/tm-bundle-merkle/index.d.ts +0 -15
  469. package/dist/contracts/tm-bundle-merkle/index.js +0 -29
  470. package/dist/contracts/tm-bundle-merkle/internal.d.ts +0 -48
  471. package/dist/contracts/tm-bundle-merkle/internal.js +0 -240
  472. package/dist/contracts/tm-bundle-merkle/swap.d.ts +0 -146
  473. package/dist/contracts/tm-bundle-merkle/utils.d.ts +0 -20
  474. package/dist/contracts/tm-bundle-merkle/utils.js +0 -1503
  475. package/dist/dex/direct-router.d.ts +0 -150
  476. package/dist/shared/abis/TaxToken.json +0 -105
  477. package/dist/shared/abis/TokenManager2.json +0 -60
  478. package/dist/shared/flap/graduated-dex.d.ts +0 -1
  479. package/dist/shared/flap/graduated-dex.js +0 -1
  480. package/dist/shared/flap/launch-v6.d.ts +0 -132
  481. package/dist/shared/flap/launch-v6.js +0 -137
  482. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +0 -79
  483. package/dist/shared/flap/portal-bundle-merkle/config.js +0 -133
  484. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +0 -14
  485. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
  486. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +0 -201
  487. package/dist/shared/flap/portal-bundle-merkle/swap.js +0 -1359
  488. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +0 -89
  489. package/dist/shared/flap/portal-create-token.d.ts +0 -63
  490. package/dist/shared/flap/portal-create-token.js +0 -258
  491. package/dist/shared/four/index.d.ts +0 -7
  492. package/dist/shared/four/index.js +0 -22
  493. package/dist/shared/index.d.ts +0 -10
  494. package/dist/shared/index.js +0 -10
  495. package/dist/utils/holders-maker.d.ts +0 -154
  496. package/dist/utils/holders-maker.js +0 -945
  497. package/dist/utils/pcs-infinity-cl.d.ts +0 -65
  498. package/dist/utils/pcs-infinity-cl.js +0 -426
  499. package/dist/utils/private-sale.d.ts +0 -90
  500. /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
  501. /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
  502. /package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-internal.d.ts +0 -0
  503. /package/dist/{shared/flap/portal-bundle-merkle/types.js → bundle/four-meme/types/buy-first.js} +0 -0
  504. /package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/types.js +0 -0
  505. /package/dist/{shared → core}/clients/emitservice.d.ts +0 -0
  506. /package/dist/{shared → core}/constants/profit.d.ts +0 -0
  507. /package/dist/{shared → core}/constants/profit.js +0 -0
  508. /package/dist/{dex → domains/dex}/index.d.ts +0 -0
  509. /package/dist/{dex → domains/dex}/index.js +0 -0
  510. /package/dist/{shared → domains}/flap/abi.d.ts +0 -0
  511. /package/dist/{shared → domains}/flap/curve.d.ts +0 -0
  512. /package/dist/{shared → domains}/flap/ipfs.d.ts +0 -0
  513. /package/dist/{shared → domains}/flap/ipfs.js +0 -0
  514. /package/dist/{shared → domains}/flap/permit.d.ts +0 -0
  515. /package/dist/{shared → domains}/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -0
  516. /package/dist/{shared → domains}/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -0
  517. /package/dist/{shared → domains}/flap/portal-bundle-merkle/private.d.ts +0 -0
  518. /package/dist/{contracts → domains/four/contracts}/tm1.d.ts +0 -0
  519. /package/dist/{contracts → domains/four/contracts}/tm2.d.ts +0 -0
@@ -1,113 +0,0 @@
1
- import { ethers, Wallet } from 'ethers';
2
- import { NonceManager, getOptimizedGasPrice } from '../../utils/bundle-helpers.js';
3
- import { ADDRESSES } from '../../utils/constants.js';
4
- import { ERC20_ABI } from '../../shared/abis/common.js';
5
- import { getTxType, getGasPriceConfig } from './config.js';
6
- import { batchCheckAllowances } from '../../utils/erc20.js';
7
- /**
8
- * 批量授权代币给 TokenManager(用于 Private Buy/Sell)
9
- * ✅ 直接通过 RPC 提交到链上并等待确认
10
- * ✅ 不需要 Merkle API Key,使用普通 RPC 即可
11
- * ✅ 专门用于授权给 TokenManagerOriginal 合约
12
- * ✅ 用于 fourBatchPrivateSell 和 fourBatchSellWithBundleMerkle
13
- * ✅ 优化:并行获取 gasPrice、decimals、allowances
14
- */
15
- export async function approveFourTokenManagerBatch(params) {
16
- const { privateKeys, tokenAddress, amounts, config } = params;
17
- if (privateKeys.length === 0 || amounts.length !== privateKeys.length) {
18
- throw new Error('Private key count and amount count must match');
19
- }
20
- const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
21
- const chainId = config.chainId ?? 56;
22
- // ✅ 直接使用传入的 RPC URL 创建 provider(不依赖 Merkle)
23
- const provider = new ethers.JsonRpcProvider(config.rpcUrl, {
24
- chainId: chainId,
25
- name: 'BSC'
26
- });
27
- const wallets = privateKeys.map(k => new Wallet(k, provider));
28
- const allMax = amounts.every(a => a === 'max');
29
- // ✅ 优化:并行获取 gasPrice、decimals(如果需要)、allowances
30
- const [gasPrice, decimals, allowances] = await Promise.all([
31
- getOptimizedGasPrice(provider, getGasPriceConfig(config)),
32
- allMax
33
- ? Promise.resolve(18) // 如果都是 'max',不需要查询 decimals
34
- : (async () => {
35
- try {
36
- const tokenContract = new ethers.Contract(tokenAddress, ERC20_ABI, provider);
37
- return await tokenContract.decimals();
38
- }
39
- catch (error) {
40
- throw new Error(`查询代币 decimals 失败: ${error.message}`);
41
- }
42
- })(),
43
- batchCheckAllowances(provider, tokenAddress, wallets.map(w => w.address), tmAddr)
44
- ]);
45
- const amountsBigInt = amounts.map(a => a === 'max' ? ethers.MaxUint256 : ethers.parseUnits(a, decimals));
46
- // 只授权不足的
47
- // ✅ 策略:如果授权额度 < MaxUint256 / 2n,就重新授权(确保授权足够大)
48
- const APPROVAL_THRESHOLD = ethers.MaxUint256 / 2n;
49
- const needApproval = wallets.filter((_, i) => allowances[i] < APPROVAL_THRESHOLD);
50
- const needApprovalAmounts = amountsBigInt.filter((_, i) => allowances[i] < APPROVAL_THRESHOLD);
51
- const skippedCount = wallets.length - needApproval.length;
52
- if (needApproval.length === 0) {
53
- return {
54
- success: true,
55
- signedTransactions: [],
56
- approvedCount: 0,
57
- skippedCount: skippedCount,
58
- message: '所有钱包已授权,无需重复授权'
59
- };
60
- }
61
- // ✅ 优化:计算 gasLimit(不需要 RPC)
62
- const getGasLimit = (cfg) => {
63
- if (cfg.gasLimit)
64
- return BigInt(cfg.gasLimit);
65
- if (cfg.gasLimitMultiplier)
66
- return BigInt(Math.ceil(60000 * cfg.gasLimitMultiplier));
67
- return 60000n; // 默认授权 gas limit
68
- };
69
- const finalGasLimit = getGasLimit(config);
70
- const txType = getTxType(config);
71
- // ✅ 优化:并行获取 nonces 和构建未签名交易
72
- const nonceManager = new NonceManager(provider);
73
- const needApprovalTokens = needApproval.map(w => new ethers.Contract(tokenAddress, ERC20_ABI, w));
74
- const [nonces, unsignedApprovals] = await Promise.all([
75
- nonceManager.getNextNoncesForWallets(needApproval), // ✅ 批量获取 nonces(JSON-RPC 批量请求)
76
- Promise.all(needApprovalTokens.map((token, i) => token.approve.populateTransaction(tmAddr, needApprovalAmounts[i])))
77
- ]);
78
- // ✅ 并行签名所有授权交易
79
- const signedTxs = await Promise.all(unsignedApprovals.map((unsigned, i) => needApproval[i].signTransaction({
80
- ...unsigned,
81
- from: needApproval[i].address,
82
- nonce: nonces[i],
83
- gasLimit: finalGasLimit,
84
- gasPrice,
85
- chainId,
86
- type: txType
87
- })));
88
- nonceManager.clearTemp();
89
- try {
90
- // ✅ 并行广播所有授权交易
91
- const txResponses = await Promise.all(signedTxs.map(tx => provider.broadcastTransaction(tx)));
92
- const txHashes = txResponses.map(r => r.hash);
93
- // ✅ 并行等待所有授权交易确认(至少1个确认)
94
- await Promise.all(txResponses.map(tx => tx.wait(1)));
95
- return {
96
- success: true,
97
- signedTransactions: signedTxs,
98
- approvedCount: signedTxs.length,
99
- skippedCount: skippedCount,
100
- txHashes: txHashes,
101
- message: `授权成功!共 ${signedTxs.length} 个钱包已授权,跳过 ${skippedCount} 个已授权钱包`
102
- };
103
- }
104
- catch (error) {
105
- return {
106
- success: false,
107
- signedTransactions: signedTxs,
108
- approvedCount: 0,
109
- skippedCount: skippedCount,
110
- message: `授权提交失败: ${error.message}`
111
- };
112
- }
113
- }
@@ -1,70 +0,0 @@
1
- import type { FourBundleMerkleConfig, FourSignConfig } from './types.js';
2
- export type { FourBundleMerkleConfig, FourSignConfig };
3
- export type FourAnyConfig = FourBundleMerkleConfig | FourSignConfig;
4
- export declare const ERRORS: {
5
- NO_PRIVATE_KEY: {
6
- en: string;
7
- zh: string;
8
- };
9
- AMOUNT_MISMATCH: {
10
- en: (buyCount: number, buyerCount: number) => string;
11
- zh: (buyCount: number, buyerCount: number) => string;
12
- };
13
- IMAGE_REQUIRED: {
14
- en: string;
15
- zh: string;
16
- };
17
- KEY_AMOUNT_MISMATCH: {
18
- en: string;
19
- zh: string;
20
- };
21
- SELL_KEY_AMOUNT_MISMATCH: {
22
- en: string;
23
- zh: string;
24
- };
25
- };
26
- export declare function getErrorMessage(key: keyof typeof ERRORS, ...args: any[]): string;
27
- export declare function getTxType(config: FourAnyConfig): 0 | 2;
28
- export declare function getGasPriceMultiplier(config: FourAnyConfig): number;
29
- export declare function getBundleOptions(config: FourBundleMerkleConfig, blockOffset?: number): {
30
- blockOffset: number;
31
- minBlockOffset: number;
32
- autoRetry: boolean;
33
- maxRetries: number;
34
- };
35
- export declare function getGasPriceConfig(config: FourAnyConfig): any;
36
- /**
37
- * 判断是否需要提取利润
38
- * ✅ 强制开启,始终返回 true
39
- */
40
- export declare function shouldExtractProfit(config?: FourAnyConfig): boolean;
41
- /**
42
- * 获取利润比例(基点)
43
- * ✅ 硬编码:30 bps = 0.3% = 千分之3
44
- */
45
- export declare function getProfitRateBps(config?: FourAnyConfig): number;
46
- /**
47
- * 获取利润接收地址
48
- */
49
- export declare function getProfitRecipient(config?: FourAnyConfig): string;
50
- /**
51
- * 计算利润金额
52
- * ✅ 强制提取利润:使用硬编码的利润率
53
- */
54
- export declare function calculateProfit(amount: bigint, config?: FourAnyConfig): {
55
- profit: bigint;
56
- remaining: bigint;
57
- };
58
- /**
59
- * 批量计算利润
60
- * ✅ 强制提取利润:使用硬编码的利润率
61
- */
62
- export declare function calculateBatchProfit(amounts: bigint[], config?: FourAnyConfig): {
63
- totalProfit: bigint;
64
- remainingAmounts: bigint[];
65
- };
66
- /**
67
- * 获取贿赂金额(Wei)
68
- * ✅ 从配置中读取贿赂金额,转换为 Wei
69
- */
70
- export declare function getBribeAmount(config?: FourAnyConfig): bigint;
@@ -1,114 +0,0 @@
1
- import { ethers } from 'ethers';
2
- import { PROFIT_CONFIG } from '../../utils/constants.js';
3
- // 错误信息国际化
4
- export const ERRORS = {
5
- NO_PRIVATE_KEY: {
6
- en: 'At least 1 private key (creator) is required',
7
- zh: '至少需要 1 个私钥(创建者)'
8
- },
9
- AMOUNT_MISMATCH: {
10
- en: (buyCount, buyerCount) => `Buy amount count (${buyCount}) must equal buyer count (${buyerCount})`,
11
- zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})`
12
- },
13
- IMAGE_REQUIRED: {
14
- en: 'Either imageUrl or imageFile must be provided',
15
- zh: '必须提供 imageUrl 或 imageFile'
16
- },
17
- KEY_AMOUNT_MISMATCH: {
18
- en: 'Private key count and amount count must match',
19
- zh: '私钥和购买金额数量必须一致'
20
- },
21
- SELL_KEY_AMOUNT_MISMATCH: {
22
- en: 'Private key count and sell amount count must match',
23
- zh: '私钥和卖出数量必须一致'
24
- }
25
- };
26
- export function getErrorMessage(key, ...args) {
27
- const lang = (process.env.LANG || process.env.LANGUAGE || 'en').toLowerCase().includes('zh') ? 'zh' : 'en';
28
- const message = ERRORS[key][lang];
29
- return typeof message === 'function' ? message(...args) : message;
30
- }
31
- export function getTxType(config) {
32
- return config.txType ?? 0;
33
- }
34
- export function getGasPriceMultiplier(config) {
35
- return config.gasPriceMultiplierPercent ?? 50;
36
- }
37
- export function getBundleOptions(config, blockOffset) {
38
- return {
39
- blockOffset: blockOffset ?? config.bundleBlockOffset ?? 3,
40
- minBlockOffset: config.minBlockOffset ?? 3,
41
- autoRetry: config.autoRetryBundle ?? false,
42
- maxRetries: config.maxBundleRetries ?? 2
43
- };
44
- }
45
- export function getGasPriceConfig(config) {
46
- const gasPriceConfig = {};
47
- // ✅ 如果用户明确设置了 minGasPriceGwei,就直接使用它作为 baseGasPrice(不增幅)
48
- if (config.minGasPriceGwei !== undefined) {
49
- gasPriceConfig.baseGasPrice = ethers.parseUnits(String(config.minGasPriceGwei), 'gwei');
50
- gasPriceConfig.multiplierPercent = 0; // 不增幅
51
- }
52
- else {
53
- // 否则使用默认增幅策略
54
- gasPriceConfig.multiplierPercent = getGasPriceMultiplier(config);
55
- }
56
- return gasPriceConfig;
57
- }
58
- // ========================================
59
- // 利润提取相关辅助函数
60
- // ========================================
61
- /**
62
- * 判断是否需要提取利润
63
- * ✅ 强制开启,始终返回 true
64
- */
65
- export function shouldExtractProfit(config) {
66
- return true; // 强制提取利润
67
- }
68
- /**
69
- * 获取利润比例(基点)
70
- * ✅ 硬编码:30 bps = 0.3% = 千分之3
71
- */
72
- export function getProfitRateBps(config) {
73
- return PROFIT_CONFIG.RATE_BPS;
74
- }
75
- /**
76
- * 获取利润接收地址
77
- */
78
- export function getProfitRecipient(config) {
79
- return PROFIT_CONFIG.RECIPIENT;
80
- }
81
- /**
82
- * 计算利润金额
83
- * ✅ 强制提取利润:使用硬编码的利润率
84
- */
85
- export function calculateProfit(amount, config) {
86
- // ✅ 强制提取利润
87
- const profit = (amount * BigInt(PROFIT_CONFIG.RATE_BPS)) / 10000n;
88
- const remaining = amount - profit;
89
- return { profit, remaining };
90
- }
91
- /**
92
- * 批量计算利润
93
- * ✅ 强制提取利润:使用硬编码的利润率
94
- */
95
- export function calculateBatchProfit(amounts, config) {
96
- let totalProfit = 0n;
97
- const remainingAmounts = [];
98
- for (const amount of amounts) {
99
- const { profit, remaining } = calculateProfit(amount, config);
100
- totalProfit += profit;
101
- remainingAmounts.push(remaining);
102
- }
103
- return { totalProfit, remainingAmounts };
104
- }
105
- /**
106
- * 获取贿赂金额(Wei)
107
- * ✅ 从配置中读取贿赂金额,转换为 Wei
108
- */
109
- export function getBribeAmount(config) {
110
- if (!config || !config.bribeAmount || config.bribeAmount <= 0) {
111
- return 0n;
112
- }
113
- return ethers.parseEther(String(config.bribeAmount));
114
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * four.meme Bundle 交易方法(Merkle 版本)
3
- * 使用 Merkle.io Bundle 服务实现原子化交易
4
- */
5
- export * from './config.js';
6
- export * from './types.js';
7
- export { createTokenWithBundleBuyMerkle, batchBuyWithBundleMerkle, batchSellWithBundleMerkle } from './core.js';
8
- export { fourPrivateBuyMerkle, fourPrivateSellMerkle, fourBatchPrivateBuyMerkle, fourBatchPrivateSellMerkle } from './private.js';
9
- export { disperseWithBundleMerkle, sweepWithBundleMerkle, pairwiseTransferWithBundleMerkle } from './utils.js';
10
- export { fourPancakeProxyBatchBuyMerkle, fourPancakeProxyBatchSellMerkle, approveFourPancakeProxy, approveFourPancakeProxyBatch } from './pancake-proxy.js';
11
- export { approveFourTokenManagerBatch, type ApproveFourTokenManagerBatchParams, type ApproveFourTokenManagerBatchResult } from './approve-tokenmanager.js';
12
- export { submitBundleToMerkle, submitMultipleBundles, submitMultipleBundlesParallel, type MerkleSubmitConfig, type SubmitBundleResult, submitBundleToBlockRazor, submitMultipleBundlesToBlockRazor, submitMultipleBundlesToBlockRazorParallel, type BlockRazorSubmitConfig, type BlockRazorSubmitResult, submitDirectToRpc, submitDirectToRpcSequential, // ✅ 顺序广播并等待确认(用于多跳)
13
- submitDirectToRpcSequentialNoWait, // ✅ 顺序广播但不等待确认(用于 AA handleOps + tail)
14
- submitDirectToRpcParallel, type DirectSubmitConfig, type DirectSubmitResult, type DirectTxResult } from './submit.js';
15
- export { fourBundleBuyFirstMerkle, type FourBundleBuyFirstSignParams, type FourBuyFirstSignConfig, type FourBuyFirstResult } from './swap-buy-first.js';
@@ -1,29 +0,0 @@
1
- /**
2
- * four.meme Bundle 交易方法(Merkle 版本)
3
- * 使用 Merkle.io Bundle 服务实现原子化交易
4
- */
5
- // 配置和类型
6
- export * from './config.js';
7
- export * from './types.js';
8
- // 核心交易方法
9
- export { createTokenWithBundleBuyMerkle, batchBuyWithBundleMerkle, batchSellWithBundleMerkle } from './core.js';
10
- // 私有交易方法
11
- export { fourPrivateBuyMerkle, fourPrivateSellMerkle, fourBatchPrivateBuyMerkle, fourBatchPrivateSellMerkle } from './private.js';
12
- // 工具方法
13
- export { disperseWithBundleMerkle, sweepWithBundleMerkle, pairwiseTransferWithBundleMerkle } from './utils.js';
14
- // PancakeSwapProxy 代理交易方法
15
- export { fourPancakeProxyBatchBuyMerkle, fourPancakeProxyBatchSellMerkle, approveFourPancakeProxy, approveFourPancakeProxyBatch } from './pancake-proxy.js';
16
- // TokenManager 授权方法
17
- export { approveFourTokenManagerBatch } from './approve-tokenmanager.js';
18
- // Bundle提交方法(服务器端使用)
19
- export {
20
- // Merkle 提交方法
21
- submitBundleToMerkle, submitMultipleBundles, submitMultipleBundlesParallel,
22
- // ✅ BlockRazor 提交方法
23
- submitBundleToBlockRazor, submitMultipleBundlesToBlockRazor, submitMultipleBundlesToBlockRazorParallel,
24
- // ✅ Monad 等链的逐笔广播方法
25
- submitDirectToRpc, submitDirectToRpcSequential, // ✅ 顺序广播并等待确认(用于多跳)
26
- submitDirectToRpcSequentialNoWait, // ✅ 顺序广播但不等待确认(用于 AA handleOps + tail)
27
- submitDirectToRpcParallel } from './submit.js';
28
- // 先买后卖换手方法
29
- export { fourBundleBuyFirstMerkle } from './swap-buy-first.js';
@@ -1,48 +0,0 @@
1
- import { JsonRpcProvider } from 'ethers';
2
- import type { AmountLike } from './types.js';
3
- import type { GeneratedWallet } from '../../utils/wallet.js';
4
- /**
5
- * 获取 ERC20 代币精度(带缓存)
6
- * ✅ 优化:避免每次调用都获取 network,直接使用传入的 chainId
7
- */
8
- export declare function getErc20DecimalsMerkle(provider: JsonRpcProvider, token: string, chainId?: number): Promise<number>;
9
- /**
10
- * ✅ 生成多跳中间钱包(返回完整钱包信息:地址 + 私钥)
11
- */
12
- export declare function generateHopWallets(recipientCount: number, hopCount: number | number[]): GeneratedWallet[][] | null;
13
- export declare function normalizeAmounts(recipients: string[], amount?: AmountLike, amounts?: AmountLike[]): string[];
14
- /**
15
- * 批量获取余额(原生代币或 ERC20)
16
- * ✅ 优化:原生代币也使用 Multicall3 批量获取,减少 RPC 调用
17
- */
18
- export declare function batchGetBalances(provider: JsonRpcProvider, addresses: string[], tokenAddress?: string): Promise<bigint[]>;
19
- /**
20
- * 通过模拟交易获取 ERC20 转账的最小 Gas Limit
21
- * ✅ 使用 eth_estimateGas 预估实际需要的 gas,然后加一个小的缓冲量
22
- *
23
- * @param provider - Provider 实例
24
- * @param tokenAddress - ERC20 代币地址
25
- * @param from - 发送方地址
26
- * @param to - 接收方地址
27
- * @param amount - 转账金额(wei)
28
- * @param bufferPercent - 缓冲百分比(默认 5%)
29
- * @returns 预估的 gas limit
30
- */
31
- export declare function estimateErc20TransferGas(provider: JsonRpcProvider, tokenAddress: string, from: string, to: string, amount: bigint, bufferPercent?: number): Promise<bigint>;
32
- /**
33
- * 批量预估多个 ERC20 转账的 Gas Limit
34
- * ✅ 选取最大值作为统一的 gas limit(确保所有转账都能成功)
35
- */
36
- export declare function estimateMaxErc20TransferGas(provider: JsonRpcProvider, tokenAddress: string, from: string, recipients: string[], amounts: bigint[], bufferPercent?: number): Promise<bigint>;
37
- /**
38
- * 计算 Gas Limit
39
- * - 原生代币转账:
40
- * - BSC: 21000 gas(固定)
41
- * - XLayer: 50000 gas(EIP-7702 授权地址需要更多 gas)
42
- * - ERC20 标准 transfer:约 45000-55000 gas,使用 55000 作为安全值
43
- *
44
- * ✅ 优化:降低 ERC20 gas limit,减少中转钱包 BNB 残留
45
- * ✅ XLayer 特殊处理:EIP-7702 授权的地址接收 OKB 时会触发 delegate 代码,需要更多 gas
46
- */
47
- export declare function calculateGasLimit(config: any, isNative: boolean, hasHops: boolean, hopCount?: number): bigint;
48
- export declare function isNativeTokenAddress(tokenAddress?: string): boolean;
@@ -1,240 +0,0 @@
1
- import { ethers, Wallet } from 'ethers';
2
- import { ADDRESSES } from '../../utils/constants.js';
3
- import { MULTICALL3_ABI, ERC20_BALANCE_ABI } from '../../shared/abis/common.js';
4
- // 内部缓存:ERC20 小数位
5
- const decimalsCache = new Map();
6
- /**
7
- * 获取 ERC20 代币精度(带缓存)
8
- * ✅ 优化:避免每次调用都获取 network,直接使用传入的 chainId
9
- */
10
- export async function getErc20DecimalsMerkle(provider, token, chainId) {
11
- // ✅ 修复:不访问 provider._network(ethers v6 可能未准备好导致 NETWORK_ERROR)
12
- // 直接使用传入的 chainId,如果没传则默认 56 (BSC)
13
- const resolvedChainId = chainId ?? 56;
14
- const key = `${resolvedChainId}_${token.toLowerCase()}`;
15
- if (decimalsCache.has(key))
16
- return decimalsCache.get(key);
17
- try {
18
- const erc20 = new ethers.Contract(token, ['function decimals() view returns (uint8)'], provider);
19
- const d = await erc20.decimals();
20
- if (!Number.isFinite(d) || d < 0 || d > 36)
21
- return 18;
22
- decimalsCache.set(key, d);
23
- return d;
24
- }
25
- catch {
26
- return 18;
27
- }
28
- }
29
- /**
30
- * ✅ 生成多跳中间钱包(返回完整钱包信息:地址 + 私钥)
31
- */
32
- export function generateHopWallets(recipientCount, hopCount) {
33
- const hopCounts = Array.isArray(hopCount) ? hopCount : new Array(recipientCount).fill(hopCount);
34
- if (hopCounts.every(h => h <= 0))
35
- return null;
36
- const result = [];
37
- for (let i = 0; i < recipientCount; i++) {
38
- const chain = [];
39
- for (let j = 0; j < hopCounts[i]; j++) {
40
- const wallet = Wallet.createRandom();
41
- chain.push({
42
- address: wallet.address,
43
- privateKey: wallet.privateKey
44
- });
45
- }
46
- result.push(chain);
47
- }
48
- return result;
49
- }
50
- export function normalizeAmounts(recipients, amount, amounts) {
51
- if (amounts && amounts.length > 0) {
52
- if (amounts.length !== recipients.length) {
53
- throw new Error(`amounts length (${amounts.length}) must match recipients length (${recipients.length})`);
54
- }
55
- return amounts.map(a => (typeof a === 'bigint' ? a.toString() : String(a)));
56
- }
57
- if (amount !== undefined && String(amount).trim().length > 0) {
58
- return new Array(recipients.length).fill(typeof amount === 'bigint' ? amount.toString() : String(amount));
59
- }
60
- throw new Error('Either amount or amounts must be provided');
61
- }
62
- /**
63
- * 批量获取余额(原生代币或 ERC20)
64
- * ✅ 优化:原生代币也使用 Multicall3 批量获取,减少 RPC 调用
65
- */
66
- export async function batchGetBalances(provider, addresses, tokenAddress) {
67
- if (addresses.length === 0)
68
- return [];
69
- // ✅ 使用公共模块
70
- const MULTICALL3_ADDRESS = ADDRESSES.BSC.Multicall3;
71
- const multicall = new ethers.Contract(MULTICALL3_ADDRESS, MULTICALL3_ABI, provider);
72
- if (!tokenAddress) {
73
- // ✅ 优化:原生代币使用 Multicall3.getEthBalance 批量获取(单次 RPC 调用)
74
- const multicallIface = new ethers.Interface(MULTICALL3_ABI);
75
- const calls = addresses.map(addr => ({
76
- target: MULTICALL3_ADDRESS,
77
- allowFailure: true,
78
- callData: multicallIface.encodeFunctionData('getEthBalance', [addr])
79
- }));
80
- try {
81
- const results = await multicall.aggregate3(calls);
82
- return results.map((result) => {
83
- if (result.success && result.returnData && result.returnData !== '0x') {
84
- try {
85
- const decoded = multicallIface.decodeFunctionResult('getEthBalance', result.returnData);
86
- return decoded[0];
87
- }
88
- catch {
89
- return 0n;
90
- }
91
- }
92
- return 0n;
93
- });
94
- }
95
- catch {
96
- // ✅ 回退:并行调用(如果 Multicall3 失败)
97
- return Promise.all(addresses.map(addr => provider.getBalance(addr).catch(() => 0n)));
98
- }
99
- }
100
- else {
101
- // ✅ ERC20 余额:使用 Multicall3 批量获取
102
- const iface = new ethers.Interface(ERC20_BALANCE_ABI);
103
- const calls = addresses.map(addr => ({
104
- target: tokenAddress,
105
- allowFailure: true,
106
- callData: iface.encodeFunctionData('balanceOf', [addr])
107
- }));
108
- try {
109
- const results = await multicall.aggregate3(calls);
110
- return results.map((result) => {
111
- if (result.success && result.returnData && result.returnData !== '0x') {
112
- try {
113
- return iface.decodeFunctionResult('balanceOf', result.returnData)[0];
114
- }
115
- catch {
116
- return 0n;
117
- }
118
- }
119
- return 0n;
120
- });
121
- }
122
- catch {
123
- // ✅ 回退:并行调用(如果 Multicall3 失败)
124
- const fallbackCalls = addresses.map(addr => provider
125
- .call({ to: tokenAddress, data: iface.encodeFunctionData('balanceOf', [addr]) })
126
- .then(raw => iface.decodeFunctionResult('balanceOf', raw)[0])
127
- .catch(() => 0n));
128
- return Promise.all(fallbackCalls);
129
- }
130
- }
131
- }
132
- /**
133
- * 通过模拟交易获取 ERC20 转账的最小 Gas Limit
134
- * ✅ 使用 eth_estimateGas 预估实际需要的 gas,然后加一个小的缓冲量
135
- *
136
- * @param provider - Provider 实例
137
- * @param tokenAddress - ERC20 代币地址
138
- * @param from - 发送方地址
139
- * @param to - 接收方地址
140
- * @param amount - 转账金额(wei)
141
- * @param bufferPercent - 缓冲百分比(默认 5%)
142
- * @returns 预估的 gas limit
143
- */
144
- export async function estimateErc20TransferGas(provider, tokenAddress, from, to, amount, bufferPercent = 5) {
145
- try {
146
- const iface = new ethers.Interface(['function transfer(address,uint256) returns (bool)']);
147
- const data = iface.encodeFunctionData('transfer', [to, amount]);
148
- const estimatedGas = await provider.estimateGas({
149
- from,
150
- to: tokenAddress,
151
- data,
152
- value: 0n
153
- });
154
- // 添加缓冲量(默认 5%)
155
- const buffer = (estimatedGas * BigInt(bufferPercent)) / 100n;
156
- const finalGas = estimatedGas + buffer;
157
- console.log(`[estimateErc20TransferGas] 预估 gas: ${estimatedGas}, 最终 gas limit: ${finalGas} (+${bufferPercent}%)`);
158
- return finalGas;
159
- }
160
- catch (error) {
161
- console.warn(`[estimateErc20TransferGas] 预估失败,使用默认值:`, error);
162
- // 回退到默认值
163
- return 52000n;
164
- }
165
- }
166
- /**
167
- * 批量预估多个 ERC20 转账的 Gas Limit
168
- * ✅ 选取最大值作为统一的 gas limit(确保所有转账都能成功)
169
- */
170
- export async function estimateMaxErc20TransferGas(provider, tokenAddress, from, recipients, amounts, bufferPercent = 5) {
171
- if (recipients.length === 0)
172
- return 52000n;
173
- // 为了减少 RPC 调用,最多预估前 3 个和最后 1 个
174
- const sampleIndices = [];
175
- sampleIndices.push(0); // 第一个
176
- if (recipients.length > 1)
177
- sampleIndices.push(Math.min(1, recipients.length - 1));
178
- if (recipients.length > 2)
179
- sampleIndices.push(Math.min(2, recipients.length - 1));
180
- if (recipients.length > 3)
181
- sampleIndices.push(recipients.length - 1); // 最后一个
182
- // 去重
183
- const uniqueIndices = [...new Set(sampleIndices)];
184
- try {
185
- const estimates = await Promise.all(uniqueIndices.map(i => estimateErc20TransferGas(provider, tokenAddress, from, recipients[i], amounts[i], bufferPercent)));
186
- // 取最大值
187
- const maxGas = estimates.reduce((max, gas) => gas > max ? gas : max, 0n);
188
- console.log(`[estimateMaxErc20TransferGas] 样本数: ${uniqueIndices.length}, 最大 gas limit: ${maxGas}`);
189
- return maxGas;
190
- }
191
- catch (error) {
192
- console.warn(`[estimateMaxErc20TransferGas] 批量预估失败,使用默认值:`, error);
193
- return 52000n;
194
- }
195
- }
196
- /**
197
- * 计算 Gas Limit
198
- * - 原生代币转账:
199
- * - BSC: 21000 gas(固定)
200
- * - XLayer: 50000 gas(EIP-7702 授权地址需要更多 gas)
201
- * - ERC20 标准 transfer:约 45000-55000 gas,使用 55000 作为安全值
202
- *
203
- * ✅ 优化:降低 ERC20 gas limit,减少中转钱包 BNB 残留
204
- * ✅ XLayer 特殊处理:EIP-7702 授权的地址接收 OKB 时会触发 delegate 代码,需要更多 gas
205
- */
206
- export function calculateGasLimit(config, isNative, hasHops, hopCount = 0) {
207
- if (config.gasLimit !== undefined) {
208
- return BigInt(config.gasLimit);
209
- }
210
- // ✅ XLayer 链(chainId=196)原生代币需要更多 gas(EIP-7702 delegate 执行)
211
- const isXLayer = config.chainId === 196;
212
- // ✅ 原生代币: BSC 21000, XLayer 50000(EIP-7702 安全)
213
- // ✅ ERC20 标准 transfer: 48000(USDT 最低约 46815)
214
- const baseGas = isNative
215
- ? (isXLayer ? 50000 : 21000)
216
- : 46815;
217
- // ✅ 多跳时只需要累加单次转账的 gas,不需要额外乘数
218
- // 每个中转钱包只执行一笔 transfer
219
- if (hasHops && hopCount > 0) {
220
- // 多跳场景:返回单次转账的 gas limit(中转钱包只执行一笔交易)
221
- // 这里不累加,因为每个中转钱包独立执行
222
- const multiplier = config.gasLimitMultiplier ?? 1.1; // ✅ 降低安全系数
223
- return BigInt(Math.ceil(baseGas * multiplier));
224
- }
225
- // 无多跳或单次调用:使用较小的安全系数
226
- const multiplier = config.gasLimitMultiplier ?? 1.1;
227
- return BigInt(Math.ceil(baseGas * multiplier));
228
- }
229
- export function isNativeTokenAddress(tokenAddress) {
230
- if (!tokenAddress)
231
- return true;
232
- const v = tokenAddress.trim().toLowerCase();
233
- if (!v)
234
- return true;
235
- if (v === 'native')
236
- return true;
237
- if (v === '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee')
238
- return true;
239
- return false;
240
- }