four-flap-meme-sdk 2.2.19 → 2.2.20

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