four-flap-meme-sdk 2.2.2 → 2.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/README.en.md +41 -6
  2. package/README.md +31 -0
  3. package/README.zh-CN.md +41 -6
  4. package/dist/__tests__/subpath-exports.test.d.ts +1 -0
  5. package/dist/__tests__/subpath-exports.test.js +64 -0
  6. package/dist/abis/common.d.ts +85 -0
  7. package/dist/abis/common.js +264 -0
  8. package/dist/abis/contracts/TaxToken.json +969 -0
  9. package/dist/abis/contracts/TokenManager2.json +136 -0
  10. package/dist/abis/contracts/index.d.ts +5 -0
  11. package/dist/abis/contracts/index.js +5 -0
  12. package/dist/abis/flap/index.d.ts +3 -0
  13. package/dist/abis/flap/index.js +3 -0
  14. package/dist/abis/flap/portal-events.d.ts +6 -0
  15. package/dist/abis/flap/portal-events.js +17 -0
  16. package/dist/abis/flap/portal.d.ts +6 -0
  17. package/dist/abis/flap/portal.js +37 -0
  18. package/dist/abis/flap/vault.d.ts +171 -0
  19. package/dist/abis/flap/vault.js +91 -0
  20. package/dist/abis/index.d.ts +8 -0
  21. package/dist/abis/index.js +11 -0
  22. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +1 -0
  23. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  24. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +1 -0
  25. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  26. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
  27. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  28. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
  29. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  30. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  31. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  32. package/dist/bundle-core/config-helpers.d.ts +36 -0
  33. package/dist/bundle-core/config-helpers.js +57 -0
  34. package/dist/bundle-core/errors.d.ts +50 -0
  35. package/dist/bundle-core/errors.js +35 -0
  36. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  37. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  38. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  39. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  40. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  41. package/dist/bundle-core/four-meme/core.js +515 -0
  42. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  43. package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
  44. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  45. package/dist/bundle-core/four-meme/private.js +465 -0
  46. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  47. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  48. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  49. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  50. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  51. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  52. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  53. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  54. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  55. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  56. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  57. package/dist/bundle-core/four-meme/swap.js +505 -0
  58. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  59. package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
  60. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  61. package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
  62. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  63. package/dist/bundle-core/four-meme/types/index.js +1 -0
  64. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  65. package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
  66. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  67. package/dist/bundle-core/four-meme/types.js +1 -0
  68. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  69. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  70. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  71. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  72. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  73. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  74. package/dist/bundle-core/index.d.ts +8 -0
  75. package/dist/bundle-core/index.js +8 -0
  76. package/dist/bundle-core/internal.d.ts +21 -0
  77. package/dist/bundle-core/internal.js +182 -0
  78. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  79. package/dist/bundle-core/sign-context-helpers.js +67 -0
  80. package/dist/bundle-core/submit.d.ts +293 -0
  81. package/dist/bundle-core/submit.js +727 -0
  82. package/dist/bundle-core/types/index.d.ts +8 -0
  83. package/dist/bundle-core/types/index.js +1 -0
  84. package/dist/bundle-core/types.d.ts +1 -0
  85. package/dist/bundle-core/types.js +1 -0
  86. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  87. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
  88. package/dist/chains/bsc/four/config.d.ts +5 -67
  89. package/dist/chains/bsc/four/config.js +2 -114
  90. package/dist/chains/bsc/four/core.d.ts +1 -4
  91. package/dist/chains/bsc/four/core.js +1 -592
  92. package/dist/chains/bsc/four/index.d.ts +6 -6
  93. package/dist/chains/bsc/four/index.js +6 -6
  94. package/dist/chains/bsc/four/internal.d.ts +2 -46
  95. package/dist/chains/bsc/four/internal.js +2 -239
  96. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  97. package/dist/chains/bsc/four/pancake-proxy.js +1 -687
  98. package/dist/chains/bsc/four/private.d.ts +1 -27
  99. package/dist/chains/bsc/four/private.js +1 -477
  100. package/dist/chains/bsc/four/submit.d.ts +2 -315
  101. package/dist/chains/bsc/four/submit.js +2 -752
  102. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  103. package/dist/chains/bsc/four/swap-buy-first.js +2 -507
  104. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  105. package/dist/chains/bsc/four/swap-internal.js +1 -18
  106. package/dist/chains/bsc/four/swap.d.ts +2 -144
  107. package/dist/chains/bsc/four/swap.js +2 -766
  108. package/dist/chains/bsc/four/types.d.ts +1 -476
  109. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  110. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  111. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  112. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  113. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  114. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  115. package/dist/chains/bsc/four/utils.d.ts +5 -18
  116. package/dist/chains/bsc/four/utils.js +5 -1552
  117. package/dist/chains/bsc/iro.d.ts +5 -0
  118. package/dist/chains/bsc/iro.js +4 -0
  119. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  120. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  121. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  122. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -212
  123. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  124. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  125. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  126. package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
  127. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  128. package/dist/chains/bsc/pancake/index.js +1 -3
  129. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  130. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  131. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  132. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  133. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  134. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  135. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  136. package/dist/chains/eni/batch-router/transfer.js +55 -25
  137. package/dist/chains/eni/batch-router/utils.js +32 -6
  138. package/dist/chains/eni/bundler/sign.js +5 -6
  139. package/dist/chains/eni/bundler/submit.js +1 -4
  140. package/dist/chains/eni/constants.js +1 -1
  141. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  142. package/dist/chains/eni/flat-aliases.js +8 -0
  143. package/dist/chains/eni/index.d.ts +2 -1
  144. package/dist/chains/eni/index.js +1 -0
  145. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  146. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  147. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  148. package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
  149. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -44
  150. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  151. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  152. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  153. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  154. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -46
  155. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  156. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  157. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  158. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  159. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  160. package/dist/chains/eni/platforms/iro/index.js +4 -4
  161. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  162. package/dist/chains/eni/platforms/iro/token.js +107 -31
  163. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  164. package/dist/chains/eni/submit.d.ts +43 -0
  165. package/dist/chains/eni/submit.js +286 -0
  166. package/dist/chains/index.d.ts +13 -0
  167. package/dist/chains/index.js +13 -0
  168. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  169. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
  170. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  171. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  172. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -59
  173. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  174. package/dist/chains/xlayer/eip7702/bundle-sell.js +29 -111
  175. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  176. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -245
  177. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  178. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  179. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  180. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  181. package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
  182. package/dist/chains/xlayer/eip7702/index.js +28 -81
  183. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  184. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  185. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  186. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +63 -307
  187. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  188. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  189. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  190. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  191. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  192. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  193. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  194. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  195. package/dist/chains/xlayer/eip7702/volume.js +89 -164
  196. package/dist/chains/xlayer/eoa/constants.js +1 -1
  197. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  198. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  199. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  200. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  201. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
  202. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  203. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
  204. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  205. package/dist/chains/xlayer/eoa/index.js +8 -23
  206. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  207. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  208. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  209. package/dist/chains/xlayer/eoa/types.js +1 -3
  210. package/dist/chains/xlayer/index.d.ts +3 -2
  211. package/dist/chains/xlayer/index.js +4 -7
  212. package/dist/contracts/helper3.d.ts +20 -5
  213. package/dist/contracts/helper3.js +56 -20
  214. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  215. package/dist/contracts/tm-bundle-helpers.js +72 -0
  216. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  217. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -113
  218. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -67
  219. package/dist/contracts/tm-bundle-merkle/config.js +2 -114
  220. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  221. package/dist/contracts/tm-bundle-merkle/core.js +1 -591
  222. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  223. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  224. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -46
  225. package/dist/contracts/tm-bundle-merkle/internal.js +2 -238
  226. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  227. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -686
  228. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  229. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  230. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  231. package/dist/contracts/tm-bundle-merkle/submit.js +3 -928
  232. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  233. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -506
  234. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  235. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  236. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  237. package/dist/contracts/tm-bundle-merkle/swap.js +2 -764
  238. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  239. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  240. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  241. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  242. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  243. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  244. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  245. package/dist/contracts/tm-bundle-merkle/utils.d.ts +6 -18
  246. package/dist/contracts/tm-bundle-merkle/utils.js +6 -1501
  247. package/dist/contracts/tm-bundle.d.ts +3 -51
  248. package/dist/contracts/tm-bundle.js +108 -177
  249. package/dist/contracts/tm.d.ts +3 -2
  250. package/dist/contracts/tm.js +37 -32
  251. package/dist/contracts/tm1.js +9 -4
  252. package/dist/contracts/tm2.js +9 -4
  253. package/dist/dex/direct-router-helpers.d.ts +264 -0
  254. package/dist/dex/direct-router-helpers.js +539 -0
  255. package/dist/dex/direct-router.d.ts +3 -125
  256. package/dist/dex/direct-router.js +237 -666
  257. package/dist/dex/types.d.ts +81 -0
  258. package/dist/dex/types.js +1 -0
  259. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  260. package/dist/exports/root-bundle-and-tooling.js +30 -0
  261. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  262. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  263. package/dist/exports/root-foundations.d.ts +35 -0
  264. package/dist/exports/root-foundations.js +70 -0
  265. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  266. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  267. package/dist/flap/index.d.ts +10 -0
  268. package/dist/flap/index.js +8 -0
  269. package/dist/flows/create.d.ts +2 -1
  270. package/dist/flows/create.js +6 -6
  271. package/dist/flows/index.d.ts +1 -0
  272. package/dist/flows/index.js +1 -0
  273. package/dist/index.d.ts +20 -85
  274. package/dist/index.js +20 -215
  275. package/dist/merkle/index.d.ts +12 -0
  276. package/dist/merkle/index.js +11 -0
  277. package/dist/shared/abis/common.d.ts +2 -83
  278. package/dist/shared/abis/common.js +2 -252
  279. package/dist/shared/abis/index.d.ts +5 -6
  280. package/dist/shared/abis/index.js +5 -7
  281. package/dist/shared/clients/blockrazor.js +39 -25
  282. package/dist/shared/clients/club48.d.ts +2 -2
  283. package/dist/shared/clients/club48.js +34 -29
  284. package/dist/shared/clients/emitservice.js +2 -0
  285. package/dist/shared/clients/four.d.ts +21 -6
  286. package/dist/shared/clients/four.js +29 -24
  287. package/dist/shared/clients/index.d.ts +8 -0
  288. package/dist/shared/clients/index.js +8 -0
  289. package/dist/shared/clients/merkle.js +27 -34
  290. package/dist/shared/constants/addresses.d.ts +1 -1
  291. package/dist/shared/constants/addresses.js +11 -2
  292. package/dist/shared/constants/chains.d.ts +1 -1
  293. package/dist/shared/constants/chains.js +1 -1
  294. package/dist/shared/constants/gas.d.ts +1 -1
  295. package/dist/shared/constants/gas.js +2 -6
  296. package/dist/shared/constants/index.d.ts +3 -0
  297. package/dist/shared/constants/index.js +1 -0
  298. package/dist/shared/constants/quote.d.ts +30 -0
  299. package/dist/shared/constants/quote.js +37 -0
  300. package/dist/shared/flap/abi.js +1 -1
  301. package/dist/shared/flap/constants.d.ts +1 -2
  302. package/dist/shared/flap/constants.js +2 -3
  303. package/dist/shared/flap/curve.js +3 -0
  304. package/dist/shared/flap/errors.d.ts +1 -4
  305. package/dist/shared/flap/errors.js +20 -1
  306. package/dist/shared/flap/index.d.ts +5 -4
  307. package/dist/shared/flap/index.js +5 -4
  308. package/dist/shared/flap/meta.d.ts +22 -18
  309. package/dist/shared/flap/meta.js +12 -17
  310. package/dist/shared/flap/permit.js +5 -2
  311. package/dist/shared/flap/pinata.d.ts +22 -6
  312. package/dist/shared/flap/pinata.js +21 -26
  313. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  314. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  315. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  316. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  317. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  318. package/dist/shared/flap/portal-bundle-merkle/core.js +96 -277
  319. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +7 -2
  320. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +107 -206
  321. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  322. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  323. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  324. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  325. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  326. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  327. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  328. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  329. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  330. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  331. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  332. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  333. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  334. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +88 -9
  335. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  336. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  337. package/dist/shared/flap/portal-bundle.js +55 -56
  338. package/dist/shared/flap/portal-create-token.d.ts +80 -0
  339. package/dist/shared/flap/portal-create-token.js +257 -0
  340. package/dist/shared/flap/portal.d.ts +14 -3
  341. package/dist/shared/flap/portal.js +50 -25
  342. package/dist/shared/flap/vanity.d.ts +1 -5
  343. package/dist/shared/flap/vanity.js +6 -17
  344. package/dist/shared/flap/vault.d.ts +17 -124
  345. package/dist/shared/flap/vault.js +67 -148
  346. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  347. package/dist/shared/foundation/dex/v3-path.js +35 -0
  348. package/dist/shared/foundation/gas/bundle-gas.d.ts +49 -0
  349. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  350. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  351. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  352. package/dist/shared/foundation/index.d.ts +13 -0
  353. package/dist/shared/foundation/index.js +12 -0
  354. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  355. package/dist/shared/foundation/nonce/nonce-manager.js +183 -0
  356. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  357. package/dist/shared/foundation/normalize-unknown.js +29 -0
  358. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  359. package/dist/shared/foundation/sdk-logger.js +12 -0
  360. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  361. package/dist/shared/foundation/tx/build-request.js +25 -0
  362. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  363. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  364. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
  365. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  366. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  367. package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
  368. package/dist/shared/foundation/types/erc20.d.ts +65 -0
  369. package/dist/shared/foundation/types/erc20.js +1 -0
  370. package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
  371. package/dist/shared/foundation/types/holders-maker.js +1 -0
  372. package/dist/shared/foundation/types/index.d.ts +7 -0
  373. package/dist/shared/foundation/types/index.js +1 -0
  374. package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
  375. package/dist/shared/foundation/types/lp-inspect.js +1 -0
  376. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  377. package/dist/shared/foundation/types/multicall.js +1 -0
  378. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  379. package/dist/shared/foundation/types/private-sale.js +1 -0
  380. package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
  381. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  382. package/dist/shared/four/tax-token.d.ts +1 -1
  383. package/dist/shared/four/tax-token.js +27 -7
  384. package/dist/shared/index.d.ts +6 -0
  385. package/dist/shared/index.js +4 -0
  386. package/dist/types/errors.d.ts +27 -0
  387. package/dist/types/errors.js +34 -0
  388. package/dist/utils/airdrop-sweep.d.ts +4 -76
  389. package/dist/utils/airdrop-sweep.js +42 -55
  390. package/dist/utils/bundle-helpers.d.ts +9 -243
  391. package/dist/utils/bundle-helpers.js +10 -584
  392. package/dist/utils/constants.d.ts +5 -61
  393. package/dist/utils/constants.js +5 -80
  394. package/dist/utils/contract-factory.d.ts +2 -4
  395. package/dist/utils/contract-factory.js +25 -18
  396. package/dist/utils/erc20.d.ts +7 -89
  397. package/dist/utils/erc20.js +94 -125
  398. package/dist/utils/errors.d.ts +12 -1
  399. package/dist/utils/errors.js +60 -1
  400. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  401. package/dist/utils/holders-maker/addresses.js +15 -0
  402. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  403. package/dist/utils/holders-maker/buy-tx.js +278 -0
  404. package/dist/utils/holders-maker/constants.d.ts +6 -0
  405. package/dist/utils/holders-maker/constants.js +7 -0
  406. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  407. package/dist/utils/holders-maker/disperse.js +90 -0
  408. package/dist/utils/holders-maker/routing.d.ts +4 -0
  409. package/dist/utils/holders-maker/routing.js +45 -0
  410. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  411. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  412. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  413. package/dist/utils/holders-maker-helpers.js +9 -0
  414. package/dist/utils/holders-maker.d.ts +2 -138
  415. package/dist/utils/holders-maker.js +26 -661
  416. package/dist/utils/hop-chains.d.ts +35 -0
  417. package/dist/utils/hop-chains.js +215 -0
  418. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  419. package/dist/utils/lp-inspect-helpers.js +109 -0
  420. package/dist/utils/lp-inspect.d.ts +2 -112
  421. package/dist/utils/lp-inspect.js +73 -223
  422. package/dist/utils/mpcExclusive.d.ts +2 -5
  423. package/dist/utils/mpcExclusive.js +4 -3
  424. package/dist/utils/private-sale.d.ts +2 -58
  425. package/dist/utils/private-sale.js +4 -15
  426. package/dist/utils/provider-factory.d.ts +4 -0
  427. package/dist/utils/provider-factory.js +10 -0
  428. package/dist/utils/quote-helpers.d.ts +4 -45
  429. package/dist/utils/quote-helpers.js +17 -74
  430. package/dist/utils/stealth-transfer.d.ts +2 -28
  431. package/dist/utils/stealth-transfer.js +31 -15
  432. package/dist/utils/swap-helpers.d.ts +2 -15
  433. package/dist/utils/swap-helpers.js +6 -11
  434. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  435. package/dist/utils/types/airdrop-sweep.js +1 -0
  436. package/dist/utils/types/contract-factory.d.ts +1 -0
  437. package/dist/utils/types/contract-factory.js +1 -0
  438. package/dist/utils/types/erc20.d.ts +1 -0
  439. package/dist/utils/types/erc20.js +1 -0
  440. package/dist/utils/types/errors.d.ts +1 -0
  441. package/dist/utils/types/errors.js +1 -0
  442. package/dist/utils/types/holders-maker.d.ts +1 -0
  443. package/dist/utils/types/holders-maker.js +1 -0
  444. package/dist/utils/types/hop-chains.d.ts +8 -0
  445. package/dist/utils/types/hop-chains.js +1 -0
  446. package/dist/utils/types/index.d.ts +13 -0
  447. package/dist/utils/types/index.js +1 -0
  448. package/dist/utils/types/lp-inspect.d.ts +1 -0
  449. package/dist/utils/types/lp-inspect.js +1 -0
  450. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  451. package/dist/utils/types/mpc-exclusive.js +1 -0
  452. package/dist/utils/types/private-sale.d.ts +1 -0
  453. package/dist/utils/types/private-sale.js +1 -0
  454. package/dist/utils/types/quote-helpers.d.ts +1 -0
  455. package/dist/utils/types/quote-helpers.js +1 -0
  456. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  457. package/dist/utils/types/stealth-transfer.js +1 -0
  458. package/dist/utils/types/wallet.d.ts +25 -0
  459. package/dist/utils/types/wallet.js +1 -0
  460. package/dist/utils/wallet.d.ts +2 -25
  461. package/dist/utils/wallet.js +13 -10
  462. package/dist/vanity/index.d.ts +5 -0
  463. package/dist/vanity/index.js +5 -0
  464. package/package.json +160 -4
  465. package/src/abis/contracts/TaxToken.json +969 -0
  466. package/src/abis/contracts/TokenManager.json +836 -0
  467. package/src/abis/contracts/TokenManager2.json +136 -0
  468. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  469. package/dist/shared/abis/TaxToken.json +0 -105
  470. package/dist/shared/abis/TokenManager2.json +0 -60
  471. /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
  472. /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
@@ -7,6 +7,7 @@
7
7
  * 3. 买到毕业(代币上 DEX)
8
8
  * 4. 多个钱包在 PancakeSwap(外盘)继续买入
9
9
  */
10
+ import type { TaxVaultConfig } from '../vault.js';
10
11
  import { type FlapSignConfig } from './config.js';
11
12
  import type { MerkleSignedResult } from './types.js';
12
13
  export type CreateToDexChain = 'bsc' | 'xlayer' | 'base';
@@ -75,17 +76,21 @@ export interface FlapCreateToDexParams {
75
76
  dexId?: number;
76
77
  /** V4 参数:LP 费率档位(0=STANDARD 0.25%, 1=LOW 0.01%, 2=HIGH 1%) */
77
78
  lpFeeProfile?: number;
78
- /** Tax Token V2 高级税收配置(启用后使用 newTokenV5) */
79
+ /** Tax Token V2/V3 高级税收配置(启用后使用 newTokenV6 TOKEN_TAXED_V3) */
79
80
  taxV2Config?: {
80
81
  taxDuration: number;
81
82
  antiFarmerDuration: number;
83
+ buyTaxRate?: number;
84
+ sellTaxRate?: number;
85
+ dividendToken?: string;
86
+ commissionReceiver?: string;
82
87
  mktBps: number;
83
88
  deflationBps: number;
84
89
  dividendBps: number;
85
90
  lpBps: number;
86
91
  minimumShareBalance?: number;
87
92
  /** ✅ Tax Vault 金库配置(可选) */
88
- vaultConfig?: import('../vault.js').TaxVaultConfig;
93
+ vaultConfig?: TaxVaultConfig;
89
94
  };
90
95
  /** V3 扩展 ID */
91
96
  extensionID?: string;
@@ -8,67 +8,68 @@
8
8
  * 4. 多个钱包在 PancakeSwap(外盘)继续买入
9
9
  */
10
10
  import { ethers, Contract, Wallet } from 'ethers';
11
- import { NonceManager, getOptimizedGasPrice, buildProfitHopTransactions, PROFIT_HOP_COUNT } from '../../../utils/bundle-helpers.js';
11
+ import { NonceManager, getOptimizedGasPrice, buildProfitHopTransactions, PROFIT_HOP_COUNT, } from '../../../utils/bundle-helpers.js';
12
12
  import { FLAP_PORTAL_ADDRESSES, FLAP_ORIGINAL_PORTAL_ADDRESSES } from '../constants.js';
13
- import { buildNewTokenV6WithVaultParams, VAULT_PORTAL_ADDRESSES, VAULT_PORTAL_ABI } from '../vault.js';
14
- import { PROFIT_CONFIG, ZERO_ADDRESS } from '../../../utils/constants.js';
13
+ import { normalizeTaxLaunchConfig, populateCreateTokenTransaction, } from '../portal-create-token.js';
14
+ import { MigratorType } from '../portal.js';
15
+ import { ZERO_ADDRESS } from '../../../shared/constants/index.js';
15
16
  import { GAS_LIMITS } from '../../constants/index.js';
16
- import { getGasPriceConfig, getTxType, getProfitRecipient, getBribeAmount, BLOCKRAZOR_BUILDER_EOA, PORTAL_ABI } from './config.js';
17
+ import { getGasPriceConfig, getTxType, getProfitRecipient, getProfitRateBps, getBribeAmount, BLOCKRAZOR_BUILDER_EOA, PORTAL_ABI, } from './config.js';
17
18
  // ==================== ERC20 ABI ====================
18
19
  const ERC20_ABI = [
19
20
  {
20
- type: "function",
21
- name: "approve",
21
+ type: 'function',
22
+ name: 'approve',
22
23
  inputs: [
23
- { name: "spender", type: "address" },
24
- { name: "amount", type: "uint256" }
24
+ { name: 'spender', type: 'address' },
25
+ { name: 'amount', type: 'uint256' },
25
26
  ],
26
- outputs: [{ name: "", type: "bool" }],
27
- stateMutability: "nonpayable"
28
- }
27
+ outputs: [{ name: '', type: 'bool' }],
28
+ stateMutability: 'nonpayable',
29
+ },
29
30
  ];
30
31
  // ==================== PancakeSwap Router ABI ====================
31
32
  const PANCAKE_ROUTER_ABI = [
32
33
  {
33
- type: "function",
34
- name: "exactInputSingle",
34
+ type: 'function',
35
+ name: 'exactInputSingle',
35
36
  inputs: [
36
37
  {
37
- name: "params",
38
- type: "tuple",
38
+ name: 'params',
39
+ type: 'tuple',
39
40
  components: [
40
- { name: "tokenIn", type: "address" },
41
- { name: "tokenOut", type: "address" },
42
- { name: "fee", type: "uint24" },
43
- { name: "recipient", type: "address" },
44
- { name: "amountIn", type: "uint256" },
45
- { name: "amountOutMinimum", type: "uint256" },
46
- { name: "sqrtPriceLimitX96", type: "uint160" }
47
- ]
48
- }
41
+ { name: 'tokenIn', type: 'address' },
42
+ { name: 'tokenOut', type: 'address' },
43
+ { name: 'fee', type: 'uint24' },
44
+ { name: 'recipient', type: 'address' },
45
+ { name: 'amountIn', type: 'uint256' },
46
+ { name: 'amountOutMinimum', type: 'uint256' },
47
+ { name: 'sqrtPriceLimitX96', type: 'uint160' },
48
+ ],
49
+ },
49
50
  ],
50
- outputs: [{ name: "amountOut", type: "uint256" }],
51
- stateMutability: "payable"
51
+ outputs: [{ name: 'amountOut', type: 'uint256' }],
52
+ stateMutability: 'payable',
52
53
  },
53
54
  {
54
- type: "function",
55
- name: "multicall",
56
- inputs: [{ name: "data", type: "bytes[]" }],
57
- outputs: [{ name: "results", type: "bytes[]" }],
58
- stateMutability: "payable"
55
+ type: 'function',
56
+ name: 'multicall',
57
+ inputs: [{ name: 'data', type: 'bytes[]' }],
58
+ outputs: [{ name: 'results', type: 'bytes[]' }],
59
+ stateMutability: 'payable',
59
60
  },
60
61
  {
61
- type: "function",
62
- name: "swapExactTokensForTokens",
62
+ type: 'function',
63
+ name: 'swapExactTokensForTokens',
63
64
  inputs: [
64
- { name: "amountIn", type: "uint256" },
65
- { name: "amountOutMin", type: "uint256" },
66
- { name: "path", type: "address[]" },
67
- { name: "to", type: "address" }
65
+ { name: 'amountIn', type: 'uint256' },
66
+ { name: 'amountOutMin', type: 'uint256' },
67
+ { name: 'path', type: 'address[]' },
68
+ { name: 'to', type: 'address' },
68
69
  ],
69
- outputs: [{ name: "amountOut", type: "uint256" }],
70
- stateMutability: "payable"
71
- }
70
+ outputs: [{ name: 'amountOut', type: 'uint256' }],
71
+ stateMutability: 'payable',
72
+ },
72
73
  ];
73
74
  // ==================== DEX 地址常量 ====================
74
75
  const DEX_ADDRESSES = {
@@ -85,7 +86,7 @@ const DEX_ADDRESSES = {
85
86
  // ✅ Base 使用 Uniswap V3 SwapRouter02
86
87
  UNISWAP_SMART_ROUTER: '0x2626664c2603336E57B271c5C0b26F421741e481',
87
88
  WETH: '0x4200000000000000000000000000000000000006',
88
- }
89
+ },
89
90
  };
90
91
  // ==================== 链常量 ====================
91
92
  // 获取链配置
@@ -102,8 +103,7 @@ function getChainConfig(chain) {
102
103
  }
103
104
  // ==================== 工具函数 ====================
104
105
  /** 构建 ERC20 approve 交易 */
105
- async function buildApproveTransaction(wallet, tokenAddress, spenderAddress, amount, nonce, gasPrice, txType, chainId = 56 // ✅ 添加 chainId 参数
106
- ) {
106
+ async function buildApproveTransaction(wallet, tokenAddress, spenderAddress, amount, nonce, gasPrice, txType, chainId = 56) {
107
107
  const erc20Interface = new ethers.Interface(ERC20_ABI);
108
108
  const data = erc20Interface.encodeFunctionData('approve', [spenderAddress, amount]);
109
109
  const tx = {
@@ -111,9 +111,9 @@ async function buildApproveTransaction(wallet, tokenAddress, spenderAddress, amo
111
111
  data,
112
112
  from: wallet.address,
113
113
  nonce,
114
- gasLimit: BigInt(100000), // approve 交易 gas 较低
114
+ gasLimit: BigInt(100_000), // approve 交易 gas 较低
115
115
  chainId,
116
- type: txType
116
+ type: txType,
117
117
  };
118
118
  if (txType === 2) {
119
119
  const priorityFee = gasPrice / 10n === 0n ? 1n : gasPrice / 10n;
@@ -167,11 +167,11 @@ function parseQuoteAmount(amount, useNativeToken, quoteTokenDecimals) {
167
167
  * 若 SDK 这里再次 splitAmount,会导致实际 buyAmount 与 UI/预期不一致,并引发余额不足(insufficient funds)。
168
168
  */
169
169
  function resolveBuyerAmounts(buyers, totalAmountStr, useNativeToken, quoteTokenDecimals) {
170
- const provided = buyers.map(b => b?.buyAmount).filter(v => v != null && String(v).trim() !== '');
170
+ const provided = buyers.map((b) => b?.buyAmount).filter((v) => v != null && String(v).trim() !== '');
171
171
  const allProvided = provided.length === buyers.length;
172
172
  if (allProvided) {
173
173
  // ✅ 所有买家都显式提供了 buyAmount:按传入金额构建,但要修正“浮点/四舍五入导致总和偏差”
174
- const amounts = buyers.map(b => parseQuoteAmount(String(b.buyAmount), useNativeToken, quoteTokenDecimals));
174
+ const amounts = buyers.map((b) => parseQuoteAmount(String(b.buyAmount), useNativeToken, quoteTokenDecimals));
175
175
  const totalWei = parseQuoteAmount(totalAmountStr, useNativeToken, quoteTokenDecimals);
176
176
  const sum = amounts.reduce((a, b) => a + b, 0n);
177
177
  const delta = totalWei - sum;
@@ -201,7 +201,7 @@ function resolveBuyerAmounts(buyers, totalAmountStr, useNativeToken, quoteTokenD
201
201
  * 5. 利润多跳转账
202
202
  */
203
203
  export async function flapBundleCreateToDex(params) {
204
- const { chain, devPrivateKey, tokenInfo, tokenAddress, quoteToken, quoteTokenDecimals = 18, curveBuyers, curveTotalBuyAmount, enableDexBuy = false, dexBuyers = [], dexTotalBuyAmount, dexPoolType = 'v3', v3Fee = 2500, config } = params;
204
+ const { chain, devPrivateKey, tokenInfo, tokenAddress, quoteToken, quoteTokenDecimals = 18, curveBuyers, curveTotalBuyAmount, enableDexBuy = false, dexBuyers = [], dexTotalBuyAmount, dexPoolType = 'v3', v3Fee = 2500, config, } = params;
205
205
  // 验证参数
206
206
  if (curveBuyers.length === 0) {
207
207
  throw new Error('至少需要一个内盘买入钱包');
@@ -235,34 +235,30 @@ export async function flapBundleCreateToDex(params) {
235
235
  // 创建 Provider
236
236
  const provider = new ethers.JsonRpcProvider(config.rpcUrl, {
237
237
  chainId,
238
- name: chain.toUpperCase()
238
+ name: chain.toUpperCase(),
239
239
  });
240
240
  const portalAddress = FLAP_PORTAL_ADDRESSES[chain.toUpperCase()];
241
241
  const originalPortalAddress = FLAP_ORIGINAL_PORTAL_ADDRESSES[chain.toUpperCase()];
242
242
  const nonceManager = new NonceManager(provider);
243
243
  // 创建钱包实例
244
244
  const devWallet = new Wallet(devPrivateKey, provider);
245
- const curveWallets = curveBuyers.map(b => ({
245
+ const curveWallets = curveBuyers.map((b) => ({
246
246
  wallet: new Wallet(b.privateKey, provider),
247
- buyAmount: b.buyAmount
247
+ buyAmount: b.buyAmount,
248
248
  }));
249
- const dexWallets = (enableDexBuy ? dexBuyers : []).map(b => ({
249
+ const dexWallets = (enableDexBuy ? dexBuyers : []).map((b) => ({
250
250
  wallet: new Wallet(b.privateKey, provider),
251
- buyAmount: b.buyAmount
251
+ buyAmount: b.buyAmount,
252
252
  }));
253
253
  // ✅ 并行获取 gasPrice + 所有钱包 nonces
254
- const allWallets = [
255
- devWallet,
256
- ...curveWallets.map(c => c.wallet),
257
- ...dexWallets.map(d => d.wallet)
258
- ];
254
+ const allWallets = [devWallet, ...curveWallets.map((c) => c.wallet), ...dexWallets.map((d) => d.wallet)];
259
255
  const uniqueWallets = allWallets.filter((w, i) => {
260
256
  const addr = w.address.toLowerCase();
261
- return allWallets.findIndex(x => x.address.toLowerCase() === addr) === i;
257
+ return allWallets.findIndex((x) => x.address.toLowerCase() === addr) === i;
262
258
  });
263
259
  const [gasPrice, noncesArray] = await Promise.all([
264
260
  getOptimizedGasPrice(provider, getGasPriceConfig(config)),
265
- nonceManager.getNextNoncesForWallets(uniqueWallets)
261
+ nonceManager.getNextNoncesForWallets(uniqueWallets),
266
262
  ]);
267
263
  // 构建 nonces Map
268
264
  const noncesMap = new Map();
@@ -282,9 +278,8 @@ export async function flapBundleCreateToDex(params) {
282
278
  dexBuyAmounts = resolveBuyerAmounts(dexBuyers, dexTotalBuyAmount, useNativeToken, quoteTokenDecimals);
283
279
  }
284
280
  // ✅ 计算利润
285
- const totalBuyAmount = curveBuyAmounts.reduce((a, b) => a + b, 0n)
286
- + dexBuyAmounts.reduce((a, b) => a + b, 0n);
287
- const profitAmount = (totalBuyAmount * BigInt(PROFIT_CONFIG.RATE_BPS)) / 10000n;
281
+ const totalBuyAmount = curveBuyAmounts.reduce((a, b) => a + b, 0n) + dexBuyAmounts.reduce((a, b) => a + b, 0n);
282
+ const profitAmount = (totalBuyAmount * BigInt(getProfitRateBps())) / 10000n;
288
283
  // ==================== 构建交易 ====================
289
284
  const allTransactions = [];
290
285
  // 使用第一个内盘买家作为贿赂支付者(提高 bundle 打包优先级)
@@ -301,7 +296,7 @@ export async function flapBundleCreateToDex(params) {
301
296
  gasPrice,
302
297
  gasLimit: GAS_LIMITS.BRIBE,
303
298
  chainId,
304
- type: txType
299
+ type: txType,
305
300
  });
306
301
  allTransactions.push(bribeTx);
307
302
  }
@@ -311,137 +306,42 @@ export async function flapBundleCreateToDex(params) {
311
306
  const devNonce = noncesMap.get(devAddr);
312
307
  noncesMap.set(devAddr, devNonce + 1);
313
308
  const originalPortal = new Contract(originalPortalAddress, PORTAL_ABI, devWallet);
314
- // 判断使用哪个版本的 newToken
315
- // V5: 提供了 taxV2Config(Tax Token V2 高级税收分配)
316
- // V4: 提供了 dexId lpFeeProfile(支持 DEX 选择和 LP 费率配置)
317
- // V3: 提供了 extensionID(支持扩展数据)
318
- // V2: 默认
319
- const useV5 = params.taxV2Config !== undefined && (params.taxRate ?? 0) > 0;
320
- const useV4 = !useV5 && (params.dexId !== undefined || params.lpFeeProfile !== undefined);
321
- const useV3 = !useV5 && !useV4 && !!params.extensionID;
322
- let createUnsigned;
323
- if (useV5) {
324
- // V5: Tax Token V2 高级税收分配
325
- const tv2 = params.taxV2Config;
326
- // 验证税收分配总计必须为 10000
327
- const total = tv2.mktBps + tv2.deflationBps + tv2.dividendBps + tv2.lpBps;
328
- if (total !== 10000) {
329
- throw new Error(`Tax distribution must sum to 10000 (100%), got ${total}`);
330
- }
331
- // ✅ 判断是否使用金库模式(VaultPortal.newTokenV6WithVault + TOKEN_TAXED_V3)
332
- const hasVault = tv2.vaultConfig && tv2.vaultConfig.vaultType !== 'none';
333
- if (hasVault) {
334
- // ✅ 金库模式:通过 VaultPortal.newTokenV6WithVault 创建代币
335
- const chainKey = chain.toUpperCase();
336
- const vaultPortalAddr = VAULT_PORTAL_ADDRESSES[chainKey];
337
- if (!vaultPortalAddr) {
338
- throw new Error(`链 "${chain}" 不支持 Tax Vault 金库功能`);
339
- }
340
- const vaultPortal = new Contract(vaultPortalAddr, VAULT_PORTAL_ABI, devWallet);
341
- const v6Params = buildNewTokenV6WithVaultParams({
342
- tokenInfo,
343
- taxV2: tv2,
344
- chain: chainKey,
345
- salt: params.salt ?? ('0x' + '00'.repeat(32)),
346
- taxRate: params.taxRate ?? 0,
347
- dexThresh: params.dexThresh,
348
- migratorType: params.migratorType,
349
- quoteToken: inputToken,
350
- quoteAmt: 0n,
351
- dexId: params.dexId,
352
- lpFeeProfile: params.lpFeeProfile,
353
- });
354
- createUnsigned = await vaultPortal.newTokenV6WithVault.populateTransaction(v6Params);
355
- }
356
- else {
357
- // 标准 V5: Portal.newTokenV5(无金库)
358
- createUnsigned = await originalPortal.newTokenV5.populateTransaction({
359
- name: tokenInfo.name,
360
- symbol: tokenInfo.symbol,
361
- meta: tokenInfo.meta,
362
- dexThresh: (params.dexThresh ?? 1) & 0xff,
363
- salt: params.salt ?? '0x' + '00'.repeat(32),
364
- taxRate: (params.taxRate ?? 0) & 0xffff,
365
- migratorType: (params.migratorType ?? 0) & 0xff,
366
- quoteToken: inputToken,
367
- quoteAmt: 0n,
368
- beneficiary: devWallet.address,
369
- permitData: '0x',
370
- extensionID: params.extensionID ?? '0x' + '00'.repeat(32),
371
- extensionData: params.extensionData ?? '0x',
372
- dexId: (params.dexId ?? 0) & 0xff,
373
- lpFeeProfile: (params.lpFeeProfile ?? 0) & 0xff,
374
- taxDuration: BigInt(tv2.taxDuration),
375
- antiFarmerDuration: BigInt(tv2.antiFarmerDuration),
376
- mktBps: tv2.mktBps & 0xffff,
377
- deflationBps: tv2.deflationBps & 0xffff,
378
- dividendBps: tv2.dividendBps & 0xffff,
379
- lpBps: tv2.lpBps & 0xffff,
380
- minimumShareBalance: BigInt(tv2.minimumShareBalance ?? 10000) * (10n ** 18n),
381
- });
382
- }
383
- }
384
- else if (useV4) {
385
- // V4: 支持 DEX ID 和 LP 费率配置(用于选择池子费率)
386
- createUnsigned = await originalPortal.newTokenV4.populateTransaction({
387
- name: tokenInfo.name,
388
- symbol: tokenInfo.symbol,
389
- meta: tokenInfo.meta,
390
- dexThresh: (params.dexThresh ?? 1) & 0xff,
391
- salt: params.salt ?? '0x' + '00'.repeat(32),
392
- taxRate: (params.taxRate ?? 0) & 0xffff,
393
- migratorType: (params.migratorType ?? 0) & 0xff,
394
- quoteToken: inputToken,
395
- quoteAmt: 0n,
396
- beneficiary: devWallet.address,
397
- permitData: '0x',
398
- extensionID: params.extensionID ?? '0x' + '00'.repeat(32),
399
- extensionData: params.extensionData ?? '0x',
400
- dexId: (params.dexId ?? 0) & 0xff,
401
- lpFeeProfile: (params.lpFeeProfile ?? 0) & 0xff
402
- });
403
- }
404
- else if (useV3) {
405
- // V3: 支持扩展数据
406
- createUnsigned = await originalPortal.newTokenV3.populateTransaction({
407
- name: tokenInfo.name,
408
- symbol: tokenInfo.symbol,
409
- meta: tokenInfo.meta,
410
- dexThresh: (params.dexThresh ?? 1) & 0xff,
411
- salt: params.salt ?? '0x' + '00'.repeat(32),
412
- taxRate: (params.taxRate ?? 0) & 0xffff,
413
- migratorType: (params.migratorType ?? 0) & 0xff,
414
- quoteToken: inputToken,
415
- quoteAmt: 0n,
416
- beneficiary: devWallet.address,
417
- permitData: '0x',
418
- extensionID: params.extensionID,
419
- extensionData: params.extensionData ?? '0x'
420
- });
421
- }
422
- else {
423
- // V2: 基础版本
424
- createUnsigned = await originalPortal.newTokenV2.populateTransaction({
425
- name: tokenInfo.name,
426
- symbol: tokenInfo.symbol,
427
- meta: tokenInfo.meta,
428
- dexThresh: (params.dexThresh ?? 1) & 0xff,
429
- salt: params.salt ?? '0x' + '00'.repeat(32),
430
- taxRate: (params.taxRate ?? 0) & 0xffff,
431
- migratorType: (params.migratorType ?? 0) & 0xff,
432
- quoteToken: inputToken,
433
- quoteAmt: 0n,
434
- beneficiary: devWallet.address,
435
- permitData: '0x'
436
- });
437
- }
309
+ const normalizedTax = normalizeTaxLaunchConfig(params.taxV2Config, params.taxRate);
310
+ const isTaxLaunch = !!normalizedTax || (params.taxRate ?? 0) > 0;
311
+ const hasVault = !!normalizedTax?.vaultConfig && normalizedTax.vaultConfig.vaultType !== 'none';
312
+ const useV4Portal = !isTaxLaunch &&
313
+ !hasVault &&
314
+ (params.lpFeeProfile !== undefined || params.dexId !== undefined);
315
+ const useClInfinityLaunch = !isTaxLaunch &&
316
+ !hasVault &&
317
+ !useV4Portal &&
318
+ params.migratorType === MigratorType.PCS_INFINITY_CL_MIGRATOR;
319
+ const createUnsigned = await populateCreateTokenTransaction({
320
+ chain,
321
+ devWallet,
322
+ originalPortal,
323
+ tokenInfo,
324
+ quoteToken: inputToken,
325
+ beneficiary: devWallet.address,
326
+ dexThresh: params.dexThresh,
327
+ salt: params.salt,
328
+ migratorType: params.migratorType,
329
+ taxRate: params.taxRate,
330
+ dexId: params.dexId,
331
+ lpFeeProfile: params.lpFeeProfile,
332
+ extensionID: params.extensionID,
333
+ extensionData: params.extensionData,
334
+ useV4Portal,
335
+ useClInfinityLaunch,
336
+ taxConfig: normalizedTax,
337
+ });
438
338
  const createTx = {
439
339
  ...createUnsigned,
440
340
  from: devWallet.address,
441
341
  nonce: devNonce,
442
342
  gasLimit: finalGasLimit,
443
343
  chainId,
444
- type: txType
344
+ type: txType,
445
345
  };
446
346
  if (txType === 2) {
447
347
  createTx.maxFeePerGas = gasPrice;
@@ -463,8 +363,7 @@ export async function flapBundleCreateToDex(params) {
463
363
  if (!useNativeToken) {
464
364
  const approveNonce = noncesMap.get(addr);
465
365
  noncesMap.set(addr, approveNonce + 1);
466
- const approveTx = await buildApproveTransaction(wallet, quoteToken, portalAddress, curveBuyAmounts[i], approveNonce, gasPrice, txType, chainId // ✅ 传递 chainId
467
- );
366
+ const approveTx = await buildApproveTransaction(wallet, quoteToken, portalAddress, curveBuyAmounts[i], approveNonce, gasPrice, txType, chainId);
468
367
  signedTxs.push(approveTx);
469
368
  }
470
369
  // 构建买入交易
@@ -480,16 +379,18 @@ export async function flapBundleCreateToDex(params) {
480
379
  inputAmount: curveBuyAmounts[i],
481
380
  minOutputAmount: 0n,
482
381
  permitData: '0x', // 不使用 permit,使用链上 approve
483
- extensionData
382
+ extensionData,
484
383
  }, useNativeToken ? { value: curveBuyAmounts[i] } : {});
485
384
  // 最后一个买家触发毕业,需要更多 gas
486
385
  const isLastBuyer = i === curveWallets.length - 1;
487
386
  // ⚠️ 触发毕业(创建 Pancake V3 池 + Mint 初始流动性)会非常耗 gas。
488
387
  // 链上成功样例 0x29b173... 的 gasLimit=8,000,000,gasUsed≈6,647,149。
489
388
  // Flap 官方示例脚本也使用 last_buy=8_000_000。
490
- const LAST_BUY_GAS_LIMIT = BigInt(8000000);
389
+ const LAST_BUY_GAS_LIMIT = BigInt(8_000_000);
491
390
  const buyGasLimit = isLastBuyer
492
- ? (finalGasLimit > LAST_BUY_GAS_LIMIT ? finalGasLimit : LAST_BUY_GAS_LIMIT)
391
+ ? finalGasLimit > LAST_BUY_GAS_LIMIT
392
+ ? finalGasLimit
393
+ : LAST_BUY_GAS_LIMIT
493
394
  : finalGasLimit;
494
395
  const tx = {
495
396
  ...unsigned,
@@ -498,7 +399,7 @@ export async function flapBundleCreateToDex(params) {
498
399
  gasLimit: buyGasLimit,
499
400
  chainId,
500
401
  type: txType,
501
- value: useNativeToken ? curveBuyAmounts[i] : 0n
402
+ value: useNativeToken ? curveBuyAmounts[i] : 0n,
502
403
  };
503
404
  if (txType === 2) {
504
405
  tx.maxFeePerGas = gasPrice;
@@ -513,11 +414,11 @@ export async function flapBundleCreateToDex(params) {
513
414
  });
514
415
  const curveBuyResults = await Promise.all(curveBuyTxPromises);
515
416
  // 展平数组:每个钱包可能有 [approve, buy] 或只有 [buy]
516
- curveBuyResults.forEach(txs => allTransactions.push(...txs));
417
+ curveBuyResults.forEach((txs) => allTransactions.push(...txs));
517
418
  // 4. 外盘买入交易(直接调用 PancakeSwap Router)
518
419
  // ✅ 重要修改:直接调用 PancakeSwap SmartRouter
519
420
  // 参考官方代码: flap-bundle-release/app/v2/pvp/001_launch_buy.ts
520
- //
421
+ //
521
422
  // ⚠️ 关键:税代币(migratorType=1)毕业到 V2 池,必须用 swapExactTokensForTokens
522
423
  // 普通代币(migratorType=0)毕业到 V3 池,使用 exactInputSingle
523
424
  if (enableDexBuy && dexWallets.length > 0) {
@@ -540,7 +441,7 @@ export async function flapBundleCreateToDex(params) {
540
441
  // migratorType === 1 (V2_MIGRATOR) → 毕业到 V2 池 → 必须使用 V2 买入
541
442
  // migratorType === 0 (V3_MIGRATOR) → 毕业到 V3 池 → 使用 V3 买入
542
443
  // 参考: flap-bundle-release 中税代币使用 PoolType.V2,普通代币使用 PoolType.V3
543
- const effectiveDexPoolType = (params.migratorType === 1) ? 'v2' : (dexPoolType || 'v3');
444
+ const effectiveDexPoolType = params.migratorType === 1 ? 'v2' : dexPoolType || 'v3';
544
445
  // 获取 V3 费率(仅 V3 池使用)
545
446
  const dexV3Fee = actualV3Fee;
546
447
  const dexBuyTxPromises = dexWallets.map(async ({ wallet }, i) => {
@@ -569,7 +470,7 @@ export async function flapBundleCreateToDex(params) {
569
470
  buyAmount,
570
471
  0n, // amountOutMin: 不设置滑点保护(Bundle 中可以接受)
571
472
  [tokenIn, tokenAddress], // path: WBNB/QuoteToken → Token
572
- wallet.address // recipient
473
+ wallet.address, // recipient
573
474
  ]);
574
475
  multicallData = routerInterface.encodeFunctionData('multicall', [[swapData]]);
575
476
  }
@@ -582,14 +483,14 @@ export async function flapBundleCreateToDex(params) {
582
483
  recipient: wallet.address,
583
484
  amountIn: buyAmount,
584
485
  amountOutMinimum: 0n, // 不设置滑点保护(Bundle 中可以接受)
585
- sqrtPriceLimitX96: 0n
486
+ sqrtPriceLimitX96: 0n,
586
487
  };
587
488
  const exactInputSingleData = routerInterface.encodeFunctionData('exactInputSingle', [exactInputSingleParams]);
588
489
  multicallData = routerInterface.encodeFunctionData('multicall', [[exactInputSingleData]]);
589
490
  }
590
491
  // ⚠️ Pancake SmartRouter 外盘买的 gas 不能太小,否则 bundle 预执行会直接失败。
591
492
  // Flap 官方示例配置 dex_buy=5_000_000(flap-bundle-release/app/configs/global.ts)。
592
- const DEX_BUY_GAS_LIMIT = BigInt(8000000);
493
+ const DEX_BUY_GAS_LIMIT = BigInt(8_000_000);
593
494
  const tx = {
594
495
  to: smartRouterAddress,
595
496
  data: multicallData,
@@ -597,7 +498,7 @@ export async function flapBundleCreateToDex(params) {
597
498
  gasLimit: DEX_BUY_GAS_LIMIT,
598
499
  chainId,
599
500
  type: txType,
600
- value: useNativeToken ? buyAmount : 0n
501
+ value: useNativeToken ? buyAmount : 0n,
601
502
  };
602
503
  if (txType === 2) {
603
504
  tx.maxFeePerGas = gasPrice;
@@ -612,7 +513,7 @@ export async function flapBundleCreateToDex(params) {
612
513
  });
613
514
  const dexBuyResults = await Promise.all(dexBuyTxPromises);
614
515
  // 展平数组:每个钱包可能有 [approve, buy] 或只有 [buy]
615
- dexBuyResults.forEach(txs => allTransactions.push(...txs));
516
+ dexBuyResults.forEach((txs) => allTransactions.push(...txs));
616
517
  }
617
518
  // 5. 利润多跳转账
618
519
  let profitHopWallets;
@@ -630,7 +531,7 @@ export async function flapBundleCreateToDex(params) {
630
531
  gasPrice,
631
532
  chainId,
632
533
  txType,
633
- startNonce: profitNonce
534
+ startNonce: profitNonce,
634
535
  });
635
536
  allTransactions.push(...profitResult.signedTransactions);
636
537
  profitHopWallets = profitResult.hopWallets;
@@ -647,7 +548,7 @@ export async function flapBundleCreateToDex(params) {
647
548
  enableDexBuy,
648
549
  dexBuyerCount: dexBuyers.length,
649
550
  dexTotalBuy: dexBuyAmounts.length > 0 ? ethers.formatEther(dexBuyAmounts.reduce((a, b) => a + b, 0n)) : '0',
650
- profitAmount: profitAmount > 0n ? ethers.formatEther(profitAmount) : undefined
651
- }
551
+ profitAmount: profitAmount > 0n ? ethers.formatEther(profitAmount) : undefined,
552
+ },
652
553
  };
653
554
  }