four-flap-meme-sdk 2.2.2 → 2.2.3

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 +86 -278
  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 +101 -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 +83 -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 +77 -0
  339. package/dist/shared/flap/portal-create-token.js +214 -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
@@ -8,7 +8,7 @@ const PORTAL_ABI = [
8
8
  'function newTokenV2((string name,string symbol,string meta,uint8 dexThresh,bytes32 salt,uint16 taxRate,uint8 migratorType,address quoteToken,uint256 quoteAmt,address beneficiary,bytes permitData)) external payable returns (address)',
9
9
  'function swapExactInputBuy((address inputToken,address outputToken,uint256 inputAmount,uint256 minOutputAmount,bytes permitData)) external payable returns (uint256)',
10
10
  'function swapExactInputSell((address inputToken,address outputToken,uint256 inputAmount,uint256 minOutputAmount,bytes permitData)) external returns (uint256)',
11
- 'function quoteExactInput((address inputToken,address outputToken,uint256 inputAmount)) external returns (uint256)'
11
+ 'function quoteExactInput((address inputToken,address outputToken,uint256 inputAmount)) external returns (uint256)',
12
12
  ];
13
13
  /**
14
14
  * Flap Protocol Bundle 交易方法
@@ -18,20 +18,20 @@ const PORTAL_ABI = [
18
18
  const ERRORS = {
19
19
  NO_PRIVATE_KEY: {
20
20
  en: 'At least 1 private key (creator) is required',
21
- zh: '至少需要 1 个私钥(创建者)'
21
+ zh: '至少需要 1 个私钥(创建者)',
22
22
  },
23
23
  AMOUNT_MISMATCH: {
24
24
  en: (buyCount, buyerCount) => `Buy amount count (${buyCount}) must equal buyer count (${buyerCount})`,
25
- zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})`
25
+ zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})`,
26
26
  },
27
27
  KEY_AMOUNT_MISMATCH: {
28
28
  en: 'Private key count and amount count must match',
29
- zh: '私钥和购买金额数量必须一致'
29
+ zh: '私钥和购买金额数量必须一致',
30
30
  },
31
31
  SELL_KEY_AMOUNT_MISMATCH: {
32
32
  en: 'Private key count and sell amount count must match',
33
- zh: '私钥和卖出数量必须一致'
34
- }
33
+ zh: '私钥和卖出数量必须一致',
34
+ },
35
35
  };
36
36
  // 获取错误信息(根据环境语言)
37
37
  function getErrorMessage(key, ...args) {
@@ -56,28 +56,11 @@ async function estimateGasWithMultiplier(provider, txRequest, multiplier) {
56
56
  function getTxType(config) {
57
57
  return config.txType ?? 0; // 默认 Legacy (type 0),适用于 48.club/BSC
58
58
  }
59
- /**
60
- * 构建完整的交易请求(包含 gas 估算和交易类型)
61
- */
62
- async function buildTxRequest(provider, unsigned, from, nonce, gasPrice, config, value) {
63
- const gasLimit = await estimateGasWithMultiplier(provider, { ...unsigned, from, value }, config.gasLimitMultiplier);
64
- return {
65
- ...unsigned,
66
- from,
67
- nonce,
68
- gasLimit,
69
- gasPrice,
70
- chainId: 56,
71
- type: getTxType(config)
72
- };
73
- }
74
59
  /**
75
60
  * Flap Protocol: 创建代币 + 捆绑购买
76
61
  */
77
62
  export async function createTokenWithBundleBuy(params) {
78
- const { chain, privateKeys, buyAmounts, tokenInfo, quoteToken, tokenAddress, config } = params;
79
- // 默认使用 BNB (0地址)
80
- const quoteTokenAddress = quoteToken || '0x0000000000000000000000000000000000000000';
63
+ const { chain, privateKeys, buyAmounts, tokenInfo, tokenAddress, config } = params;
81
64
  if (privateKeys.length === 0) {
82
65
  throw new Error(getErrorMessage('NO_PRIVATE_KEY'));
83
66
  }
@@ -88,7 +71,7 @@ export async function createTokenWithBundleBuy(params) {
88
71
  const devWallet = new Wallet(privateKeys[0], provider);
89
72
  const club48 = new Club48Client({
90
73
  endpoint: config.club48Endpoint,
91
- explorerEndpoint: config.club48ExplorerEndpoint
74
+ explorerEndpoint: config.club48ExplorerEndpoint,
92
75
  });
93
76
  const blockOffset = config.bundleBlockOffset ?? 100;
94
77
  // 1. 构建交易(为重复地址分配顺序 nonce)
@@ -122,7 +105,7 @@ export async function createTokenWithBundleBuy(params) {
122
105
  quoteToken: params.quoteToken || '0x0000000000000000000000000000000000000000',
123
106
  quoteAmt: 0n,
124
107
  beneficiary: new Wallet(privateKeys[0]).address,
125
- permitData: '0x'
108
+ permitData: '0x',
126
109
  });
127
110
  // 估算 gas 并应用用户配置的安全余量
128
111
  const createGasLimit = await estimateGasWithMultiplier(provider, { ...createTxUnsigned, from: devWallet.address }, config.gasLimitMultiplier);
@@ -133,7 +116,7 @@ export async function createTokenWithBundleBuy(params) {
133
116
  gasLimit: createGasLimit,
134
117
  gasPrice: gasPrice,
135
118
  chainId: 56, // BSC
136
- type: getTxType(config) // 用户可配置:0=Legacy(默认),2=EIP-1559
119
+ type: getTxType(config), // 用户可配置:0=Legacy(默认),2=EIP-1559
137
120
  };
138
121
  const signedCreateTx = await devWallet.signTransaction(createTxRequest);
139
122
  signedTxs.push(signedCreateTx);
@@ -146,7 +129,7 @@ export async function createTokenWithBundleBuy(params) {
146
129
  gasLimit: GAS_LIMITS.BRIBE,
147
130
  chainId: 56,
148
131
  type: 0, // Legacy transaction
149
- nonce: await getNextNonce(devWallet)
132
+ nonce: await getNextNonce(devWallet),
150
133
  });
151
134
  signedTxs.push(tipTx);
152
135
  }
@@ -163,7 +146,7 @@ export async function createTokenWithBundleBuy(params) {
163
146
  const exactOut = await quote.quoteExactInput.staticCall({
164
147
  inputToken: '0x0000000000000000000000000000000000000000',
165
148
  outputToken: tokenAddress,
166
- inputAmount: amountIn
149
+ inputAmount: amountIn,
167
150
  });
168
151
  const keep = BigInt(10000 - slippageBps);
169
152
  minAmountOut = (exactOut * keep) / 10000n;
@@ -193,7 +176,7 @@ export async function createTokenWithBundleBuy(params) {
193
176
  gasLimit: buyGasLimit,
194
177
  gasPrice: gasPrice,
195
178
  chainId: 56, // BSC
196
- type: getTxType(config) // 用户可配置
179
+ type: getTxType(config), // 用户可配置
197
180
  };
198
181
  const signedBuyTx = await buyerWallet.signTransaction(buyTxRequest);
199
182
  signedTxs.push(signedBuyTx);
@@ -203,11 +186,11 @@ export async function createTokenWithBundleBuy(params) {
203
186
  const bundleUuid = await club48.sendBundle({
204
187
  txs: signedTxs,
205
188
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
206
- noMerge: config.noMerge
189
+ noMerge: config.noMerge,
207
190
  }, {
208
191
  spMode: params.config.spMode ?? 'timestampPersonalSign',
209
192
  spPrivateKey: params.config.spPrivateKey || privateKeys[0],
210
- spVMode: params.config.spVMode
193
+ spVMode: params.config.spVMode,
211
194
  });
212
195
  // 3. 等待完成
213
196
  const status = await club48.waitForBundle(bundleUuid, params.config.waitTimeoutMs ?? 60000);
@@ -216,7 +199,7 @@ export async function createTokenWithBundleBuy(params) {
216
199
  tokenAddress,
217
200
  status,
218
201
  createTx: signedCreateTx,
219
- buyTxs
202
+ buyTxs,
220
203
  };
221
204
  }
222
205
  /**
@@ -230,7 +213,7 @@ export async function batchBuyWithBundle(params) {
230
213
  const provider = new JsonRpcProvider(config.rpcUrl);
231
214
  const club48 = new Club48Client({
232
215
  endpoint: config.club48Endpoint,
233
- explorerEndpoint: config.club48ExplorerEndpoint
216
+ explorerEndpoint: config.club48ExplorerEndpoint,
234
217
  });
235
218
  const blockOffset = config.bundleBlockOffset ?? 100;
236
219
  const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
@@ -259,7 +242,7 @@ export async function batchBuyWithBundle(params) {
259
242
  gasLimit: GAS_LIMITS.BRIBE,
260
243
  chainId: 56,
261
244
  type: 0, // Legacy transaction
262
- nonce: await getNextNonce(tipWallet)
245
+ nonce: await getNextNonce(tipWallet),
263
246
  });
264
247
  signedTxs.unshift(tipTx);
265
248
  }
@@ -274,7 +257,7 @@ export async function batchBuyWithBundle(params) {
274
257
  const exactOut = await quote.quoteExactInput.staticCall({
275
258
  inputToken: '0x0000000000000000000000000000000000000000',
276
259
  outputToken: tokenAddress,
277
- inputAmount: amountIn
260
+ inputAmount: amountIn,
278
261
  });
279
262
  const keep = BigInt(10000 - slippageBps);
280
263
  minAmountOut = (exactOut * keep) / 10000n;
@@ -292,7 +275,7 @@ export async function batchBuyWithBundle(params) {
292
275
  const estimatedGas = await provider.estimateGas({
293
276
  ...buyTxUnsigned,
294
277
  from: buyerWallet.address,
295
- value: amountIn
278
+ value: amountIn,
296
279
  });
297
280
  const gasLimit = (estimatedGas * 120n) / 100n;
298
281
  const buyTxRequest = {
@@ -302,7 +285,7 @@ export async function batchBuyWithBundle(params) {
302
285
  gasLimit: gasLimit,
303
286
  gasPrice: gasPrice,
304
287
  chainId: 56, // BSC
305
- type: 0 // Legacy transaction
288
+ type: 0, // Legacy transaction
306
289
  };
307
290
  const signedBuyTx = await buyerWallet.signTransaction(buyTxRequest);
308
291
  signedTxs.push(signedBuyTx);
@@ -310,11 +293,11 @@ export async function batchBuyWithBundle(params) {
310
293
  const bundleUuid = await club48.sendBundle({
311
294
  txs: signedTxs,
312
295
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
313
- noMerge: config.noMerge
296
+ noMerge: config.noMerge,
314
297
  }, {
315
298
  spMode: params.config.spMode ?? 'timestampPersonalSign',
316
299
  spPrivateKey: params.config.spPrivateKey || privateKeys[0],
317
- spVMode: params.config.spVMode
300
+ spVMode: params.config.spVMode,
318
301
  });
319
302
  const status = await club48.waitForBundle(bundleUuid);
320
303
  return { bundleUuid, status, buyTxs: signedTxs };
@@ -330,7 +313,7 @@ export async function batchSellWithBundle(params) {
330
313
  const provider = new JsonRpcProvider(config.rpcUrl);
331
314
  const club48 = new Club48Client({
332
315
  endpoint: config.club48Endpoint,
333
- explorerEndpoint: config.club48ExplorerEndpoint
316
+ explorerEndpoint: config.club48ExplorerEndpoint,
334
317
  });
335
318
  const blockOffset = config.bundleBlockOffset ?? 100;
336
319
  const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
@@ -359,7 +342,7 @@ export async function batchSellWithBundle(params) {
359
342
  gasLimit: GAS_LIMITS.BRIBE,
360
343
  chainId: 56,
361
344
  type: 0, // Legacy transaction
362
- nonce: await getNextNonce(tipWallet)
345
+ nonce: await getNextNonce(tipWallet),
363
346
  });
364
347
  signedTxs.unshift(tipTx);
365
348
  }
@@ -378,7 +361,7 @@ export async function batchSellWithBundle(params) {
378
361
  // 估算 gas 并添加 20% 安全余量
379
362
  const estimatedGas = await provider.estimateGas({
380
363
  ...sellTxUnsigned,
381
- from: sellerWallet.address
364
+ from: sellerWallet.address,
382
365
  });
383
366
  const gasLimit = (estimatedGas * 120n) / 100n;
384
367
  const sellTxRequest = {
@@ -388,7 +371,7 @@ export async function batchSellWithBundle(params) {
388
371
  gasLimit: gasLimit,
389
372
  gasPrice: gasPrice,
390
373
  chainId: 56, // BSC
391
- type: 0 // Legacy transaction
374
+ type: 0, // Legacy transaction
392
375
  };
393
376
  const signedSellTx = await sellerWallet.signTransaction(sellTxRequest);
394
377
  signedTxs.push(signedSellTx);
@@ -396,17 +379,17 @@ export async function batchSellWithBundle(params) {
396
379
  const bundleUuid = await club48.sendBundle({
397
380
  txs: signedTxs,
398
381
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
399
- noMerge: config.noMerge
382
+ noMerge: config.noMerge,
400
383
  }, {
401
384
  spMode: params.config.spMode ?? 'timestampPersonalSign',
402
385
  spPrivateKey: params.config.spPrivateKey || privateKeys[0],
403
- spVMode: params.config.spVMode
386
+ spVMode: params.config.spVMode,
404
387
  });
405
388
  const status = await club48.waitForBundle(bundleUuid);
406
389
  return { bundleUuid, status, sellTxs: signedTxs };
407
390
  }
408
391
  export async function flapPrivateBuy(params) {
409
- const { chain, privateKey, tokenAddress, amountIn, to, config, spPrivateKey } = params;
392
+ const { chain, privateKey, tokenAddress, amountIn, config, spPrivateKey } = params;
410
393
  const provider = new JsonRpcProvider(config.rpcUrl);
411
394
  const wallet = new Wallet(privateKey, provider);
412
395
  const club48 = new Club48Client({ endpoint: config.club48Endpoint, explorerEndpoint: config.club48ExplorerEndpoint });
@@ -426,7 +409,7 @@ export async function flapPrivateBuy(params) {
426
409
  const estimatedGas = await provider.estimateGas({
427
410
  ...unsigned,
428
411
  from: wallet.address,
429
- value: amountWei
412
+ value: amountWei,
430
413
  });
431
414
  const gasLimit = (estimatedGas * 120n) / 100n;
432
415
  const req = {
@@ -436,7 +419,7 @@ export async function flapPrivateBuy(params) {
436
419
  gasLimit: gasLimit,
437
420
  gasPrice,
438
421
  chainId: 56,
439
- type: 0 // Legacy transaction
422
+ type: 0, // Legacy transaction
440
423
  };
441
424
  const signed = await wallet.signTransaction(req);
442
425
  if (spPrivateKey)
@@ -463,7 +446,7 @@ export async function flapPrivateSell(params) {
463
446
  // 估算 gas 并添加 20% 安全余量
464
447
  const estimatedGas = await provider.estimateGas({
465
448
  ...unsigned,
466
- from: wallet.address
449
+ from: wallet.address,
467
450
  });
468
451
  const gasLimit = (estimatedGas * 120n) / 100n;
469
452
  const req = {
@@ -473,7 +456,7 @@ export async function flapPrivateSell(params) {
473
456
  gasLimit: gasLimit,
474
457
  gasPrice,
475
458
  chainId: 56,
476
- type: 0 // Legacy transaction
459
+ type: 0, // Legacy transaction
477
460
  };
478
461
  const signed = await wallet.signTransaction(req);
479
462
  if (spPrivateKey)
@@ -516,13 +499,21 @@ export async function flapBatchPrivateBuy(params) {
516
499
  // 估算 gas 并添加 20% 安全余量
517
500
  const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address, value: amountWei });
518
501
  const gasLimit = (estimatedGas * 120n) / 100n;
519
- const req = { ...unsigned, from: w.address, nonce: await getNextNonce(w), gasLimit, gasPrice, chainId: 56, type: 0 };
502
+ const req = {
503
+ ...unsigned,
504
+ from: w.address,
505
+ nonce: await getNextNonce(w),
506
+ gasLimit,
507
+ gasPrice,
508
+ chainId: 56,
509
+ type: 0,
510
+ };
520
511
  signedTxs.push(await w.signTransaction(req));
521
512
  }
522
513
  return await sendBatchPrivateTransactions(signedTxs, spPrivateKey, config.club48Endpoint || 'https://puissant-bsc.48.club');
523
514
  }
524
515
  export async function flapBatchPrivateSell(params) {
525
- const { chain, privateKeys, amounts, tokenAddress, config, spPrivateKey, minEthEach } = params;
516
+ const { chain, privateKeys, amounts, tokenAddress, config, minEthEach } = params;
526
517
  if (privateKeys.length !== amounts.length)
527
518
  throw new Error('privateKeys and amounts length mismatch');
528
519
  const provider = new JsonRpcProvider(config.rpcUrl);
@@ -558,7 +549,15 @@ export async function flapBatchPrivateSell(params) {
558
549
  // 估算 gas 并添加 20% 安全余量
559
550
  const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address });
560
551
  const gasLimit = (estimatedGas * 120n) / 100n;
561
- const req = { ...unsigned, from: w.address, nonce: await getNextNonce(w), gasLimit, gasPrice, chainId: 56, type: 0 };
552
+ const req = {
553
+ ...unsigned,
554
+ from: w.address,
555
+ nonce: await getNextNonce(w),
556
+ gasLimit,
557
+ gasPrice,
558
+ chainId: 56,
559
+ type: 0,
560
+ };
562
561
  signedTxs.push(await w.signTransaction(req));
563
562
  }
564
563
  // 使用 bundle 通道提交(统一与捆绑买保持一致)
@@ -566,12 +565,12 @@ export async function flapBatchPrivateSell(params) {
566
565
  const bundleUuid = await club48.sendBundle({
567
566
  txs: signedTxs,
568
567
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
569
- noMerge: config.noMerge
568
+ noMerge: config.noMerge,
570
569
  }, {
571
570
  // 若传入 sp 配置,则用于生成 48SP 签名提升打包优先级(与批量买一致)
572
571
  spMode: params.config.spMode ?? 'timestampPersonalSign',
573
572
  spPrivateKey: params.config.spPrivateKey || 'https://puissant-bsc.48.club',
574
- spVMode: params.config.spVMode
573
+ spVMode: params.config.spVMode,
575
574
  });
576
575
  try {
577
576
  const status = await club48.waitForBundle(bundleUuid);
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Portal 发币交易构建(newTokenV6 / newTokenV7 / VaultPortal)
3
+ *
4
+ * 对齐 Flap 官方文档:
5
+ * - newTokenV6:TOKEN_V2_PERMIT / TOKEN_TAXED_V3
6
+ * - newTokenV7:TOKEN_V3_PERMIT(CL 迁移)
7
+ * - VaultPortal.newTaxTokenWithVault:带金库的税币(legacy 参数结构)
8
+ */
9
+ import { Contract, type Wallet } from 'ethers';
10
+ import { type TaxVaultConfig } from './vault.js';
11
+ /** 分红代币:将 launching token 本身作为分红代币 */
12
+ export declare const MAGIC_DIVIDEND_SELF = "0xfEEDFEEDfeEDFEedFEEdFEEDFeEdfEEdFeEdFEEd";
13
+ export type NormalizedTaxLaunchConfig = {
14
+ taxDuration: number;
15
+ antiFarmerDuration: number;
16
+ mktBps: number;
17
+ deflationBps: number;
18
+ dividendBps: number;
19
+ lpBps: number;
20
+ minimumShareBalance?: number;
21
+ buyTaxRate: number;
22
+ sellTaxRate: number;
23
+ dividendToken?: string;
24
+ commissionReceiver?: string;
25
+ vaultConfig?: TaxVaultConfig;
26
+ };
27
+ export type PopulateCreateTokenParams = {
28
+ chain: string;
29
+ devWallet: Wallet;
30
+ originalPortal: Contract;
31
+ tokenInfo: {
32
+ name: string;
33
+ symbol: string;
34
+ meta: string;
35
+ };
36
+ quoteToken?: string;
37
+ beneficiary: string;
38
+ dexThresh?: number;
39
+ salt?: string;
40
+ migratorType?: number;
41
+ /** legacy 单税率(bps),无 buy/sell 时作为对称税率 */
42
+ taxRate?: number;
43
+ dexId?: number;
44
+ lpFeeProfile?: number;
45
+ extensionID?: string;
46
+ extensionData?: string;
47
+ /** 标准 V3 代币(newTokenV7 + TOKEN_V3_PERMIT) */
48
+ useV3Standard?: boolean;
49
+ /** 高级税币 / 税币 V3 配置 */
50
+ taxConfig?: NormalizedTaxLaunchConfig;
51
+ };
52
+ /** 将 TaxV2Config(含 distribution 嵌套)或 flat 结构归一化 */
53
+ export declare function normalizeTaxLaunchConfig(input?: {
54
+ taxDuration: number;
55
+ antiFarmerDuration: number;
56
+ mktBps?: number;
57
+ deflationBps?: number;
58
+ dividendBps?: number;
59
+ lpBps?: number;
60
+ minimumShareBalance?: number;
61
+ buyTaxRate?: number;
62
+ sellTaxRate?: number;
63
+ dividendToken?: string;
64
+ commissionReceiver?: string;
65
+ vaultConfig?: TaxVaultConfig;
66
+ distribution?: {
67
+ mktBps: number;
68
+ deflationBps: number;
69
+ dividendBps: number;
70
+ lpBps: number;
71
+ minimumShareBalance?: number;
72
+ };
73
+ }, fallbackTaxRate?: number): NormalizedTaxLaunchConfig | undefined;
74
+ /**
75
+ * 构建发币 populateTransaction(优先 V6/V7,Vault 走 VaultPortal)
76
+ */
77
+ export declare function populateCreateTokenTransaction(params: PopulateCreateTokenParams): Promise<import("ethers").ContractTransaction>;
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Portal 发币交易构建(newTokenV6 / newTokenV7 / VaultPortal)
3
+ *
4
+ * 对齐 Flap 官方文档:
5
+ * - newTokenV6:TOKEN_V2_PERMIT / TOKEN_TAXED_V3
6
+ * - newTokenV7:TOKEN_V3_PERMIT(CL 迁移)
7
+ * - VaultPortal.newTaxTokenWithVault:带金库的税币(legacy 参数结构)
8
+ */
9
+ import { Contract, ZeroAddress } from 'ethers';
10
+ import { ZERO_ADDRESS } from '../constants/index.js';
11
+ import { buildVaultParams, VAULT_PORTAL_ADDRESSES, VAULT_PORTAL_ABI } from './vault.js';
12
+ import { TokenVersion, MigratorType, FeeType } from './portal.js';
13
+ /** 分红代币:将 launching token 本身作为分红代币 */
14
+ export const MAGIC_DIVIDEND_SELF = '0xfEEDFEEDfeEDFEedFEEdFEEDFeEdfEEdFeEdFEEd';
15
+ function zeroBytes32() {
16
+ return '0x' + '00'.repeat(32);
17
+ }
18
+ function resolveTaxRates(taxConfig, taxRate) {
19
+ const buy = taxConfig?.buyTaxRate ?? taxRate ?? 0;
20
+ const sell = taxConfig?.sellTaxRate ?? taxRate ?? 0;
21
+ return { buyTaxRate: buy & 0xffff, sellTaxRate: sell & 0xffff };
22
+ }
23
+ function validateTaxDistribution(mkt, def, div, lp) {
24
+ const total = mkt + def + div + lp;
25
+ if (total !== 10000) {
26
+ throw new Error(`Tax distribution must sum to 10000 (100%), got ${total}`);
27
+ }
28
+ }
29
+ function buildV6TaxParams(params, taxConfig, dist) {
30
+ const { buyTaxRate, sellTaxRate } = resolveTaxRates(taxConfig, params.taxRate);
31
+ validateTaxDistribution(dist.mktBps, dist.deflationBps, dist.dividendBps, dist.lpBps);
32
+ return {
33
+ name: params.tokenInfo.name,
34
+ symbol: params.tokenInfo.symbol,
35
+ meta: params.tokenInfo.meta,
36
+ dexThresh: (params.dexThresh ?? 1) & 0xff,
37
+ salt: params.salt ?? zeroBytes32(),
38
+ migratorType: (params.migratorType ?? MigratorType.V2_MIGRATOR) & 0xff,
39
+ quoteToken: params.quoteToken || ZERO_ADDRESS,
40
+ quoteAmt: 0n,
41
+ beneficiary: params.beneficiary,
42
+ permitData: '0x',
43
+ extensionID: params.extensionID ?? zeroBytes32(),
44
+ extensionData: params.extensionData ?? '0x',
45
+ dexId: (params.dexId ?? 0) & 0xff,
46
+ lpFeeProfile: (params.lpFeeProfile ?? 0) & 0xff,
47
+ buyTaxRate,
48
+ sellTaxRate,
49
+ taxDuration: BigInt(taxConfig.taxDuration),
50
+ antiFarmerDuration: BigInt(taxConfig.antiFarmerDuration),
51
+ mktBps: dist.mktBps,
52
+ deflationBps: dist.deflationBps,
53
+ dividendBps: dist.dividendBps,
54
+ lpBps: dist.lpBps,
55
+ minimumShareBalance: BigInt(taxConfig.minimumShareBalance ?? 10000) * 10n ** 18n,
56
+ dividendToken: taxConfig.dividendToken || ZeroAddress,
57
+ commissionReceiver: taxConfig.commissionReceiver || ZeroAddress,
58
+ tokenVersion: TokenVersion.TOKEN_TAXED_V3,
59
+ };
60
+ }
61
+ /** 将 TaxV2Config(含 distribution 嵌套)或 flat 结构归一化 */
62
+ export function normalizeTaxLaunchConfig(input, fallbackTaxRate) {
63
+ if (!input)
64
+ return undefined;
65
+ const dist = 'distribution' in input ? input.distribution : undefined;
66
+ const mktBps = dist?.mktBps ?? input.mktBps ?? 10000;
67
+ const deflationBps = dist?.deflationBps ?? input.deflationBps ?? 0;
68
+ const dividendBps = dist?.dividendBps ?? input.dividendBps ?? 0;
69
+ const lpBps = dist?.lpBps ?? input.lpBps ?? 0;
70
+ const minimumShareBalance = dist?.minimumShareBalance ?? input.minimumShareBalance;
71
+ const buyTaxRate = input.buyTaxRate ?? fallbackTaxRate ?? 0;
72
+ const sellTaxRate = input.sellTaxRate ?? fallbackTaxRate ?? 0;
73
+ if (buyTaxRate <= 0 && sellTaxRate <= 0)
74
+ return undefined;
75
+ return {
76
+ taxDuration: input.taxDuration,
77
+ antiFarmerDuration: input.antiFarmerDuration,
78
+ mktBps,
79
+ deflationBps,
80
+ dividendBps,
81
+ lpBps,
82
+ minimumShareBalance,
83
+ buyTaxRate,
84
+ sellTaxRate,
85
+ dividendToken: input.dividendToken,
86
+ commissionReceiver: input.commissionReceiver,
87
+ vaultConfig: input.vaultConfig,
88
+ };
89
+ }
90
+ /**
91
+ * 构建发币 populateTransaction(优先 V6/V7,Vault 走 VaultPortal)
92
+ */
93
+ export async function populateCreateTokenTransaction(params) {
94
+ const taxConfig = params.taxConfig;
95
+ const { buyTaxRate, sellTaxRate } = resolveTaxRates(taxConfig, params.taxRate);
96
+ const isTaxLaunch = buyTaxRate > 0 || sellTaxRate > 0;
97
+ // 1) Vault 金库税币
98
+ if (taxConfig?.vaultConfig && taxConfig.vaultConfig.vaultType !== 'none') {
99
+ validateTaxDistribution(taxConfig.mktBps, taxConfig.deflationBps, taxConfig.dividendBps, taxConfig.lpBps);
100
+ const chainKey = params.chain.toUpperCase();
101
+ const vaultPortalAddr = VAULT_PORTAL_ADDRESSES[chainKey];
102
+ if (!vaultPortalAddr) {
103
+ throw new Error(`链 "${params.chain}" 不支持 Tax Vault 金库功能`);
104
+ }
105
+ const vaultPortal = new Contract(vaultPortalAddr, VAULT_PORTAL_ABI, params.devWallet);
106
+ const { vaultFactory, vaultData } = buildVaultParams(taxConfig.vaultConfig, chainKey);
107
+ return vaultPortal.newTaxTokenWithVault.populateTransaction({
108
+ name: params.tokenInfo.name,
109
+ symbol: params.tokenInfo.symbol,
110
+ meta: params.tokenInfo.meta,
111
+ dexThresh: (params.dexThresh ?? 1) & 0xff,
112
+ salt: params.salt ?? zeroBytes32(),
113
+ taxRate: Math.max(buyTaxRate, sellTaxRate) & 0xffff,
114
+ migratorType: (params.migratorType ?? MigratorType.V2_MIGRATOR) & 0xff,
115
+ quoteToken: params.quoteToken || ZERO_ADDRESS,
116
+ quoteAmt: 0n,
117
+ permitData: '0x',
118
+ extensionID: zeroBytes32(),
119
+ extensionData: '0x',
120
+ dexId: (params.dexId ?? 0) & 0xff,
121
+ lpFeeProfile: (params.lpFeeProfile ?? 0) & 0xff,
122
+ taxDuration: BigInt(taxConfig.taxDuration),
123
+ antiFarmerDuration: BigInt(taxConfig.antiFarmerDuration),
124
+ mktBps: taxConfig.mktBps,
125
+ deflationBps: taxConfig.deflationBps,
126
+ dividendBps: taxConfig.dividendBps,
127
+ lpBps: taxConfig.lpBps,
128
+ minimumShareBalance: BigInt(taxConfig.minimumShareBalance ?? 10000) * 10n ** 18n,
129
+ vaultFactory,
130
+ vaultData,
131
+ });
132
+ }
133
+ // 2) 税币 V3(newTokenV6 + TOKEN_TAXED_V3)
134
+ if (isTaxLaunch && taxConfig) {
135
+ return params.originalPortal.newTokenV6.populateTransaction(buildV6TaxParams(params, taxConfig, {
136
+ mktBps: taxConfig.mktBps,
137
+ deflationBps: taxConfig.deflationBps,
138
+ dividendBps: taxConfig.dividendBps,
139
+ lpBps: taxConfig.lpBps,
140
+ }));
141
+ }
142
+ if (isTaxLaunch) {
143
+ return params.originalPortal.newTokenV6.populateTransaction(buildV6TaxParams(params, {
144
+ taxDuration: 365 * 24 * 60 * 60,
145
+ antiFarmerDuration: 3 * 24 * 60 * 60,
146
+ mktBps: 10000,
147
+ deflationBps: 0,
148
+ dividendBps: 0,
149
+ lpBps: 0,
150
+ buyTaxRate,
151
+ sellTaxRate,
152
+ }, { mktBps: 10000, deflationBps: 0, dividendBps: 0, lpBps: 0 }));
153
+ }
154
+ // 3) 标准 V3(newTokenV7 + TOKEN_V3_PERMIT)
155
+ if (params.useV3Standard) {
156
+ const emptyFeeConfig = {
157
+ feeType: FeeType.NONE,
158
+ bps: 0,
159
+ marketingAddress: ZeroAddress,
160
+ dividendToken: ZeroAddress,
161
+ minimumShareBalance: 0n,
162
+ };
163
+ return params.originalPortal.newTokenV7.populateTransaction({
164
+ name: params.tokenInfo.name,
165
+ symbol: params.tokenInfo.symbol,
166
+ meta: params.tokenInfo.meta,
167
+ dexThresh: (params.dexThresh ?? 1) & 0xff,
168
+ salt: params.salt ?? zeroBytes32(),
169
+ migratorType: MigratorType.PCS_INFINITY_CL_MIGRATOR,
170
+ quoteToken: params.quoteToken || ZERO_ADDRESS,
171
+ quoteAmt: 0n,
172
+ permitData: '0x',
173
+ extensionID: params.extensionID ?? zeroBytes32(),
174
+ extensionData: params.extensionData ?? '0x',
175
+ dexId: (params.dexId ?? 0) & 0xff,
176
+ buyTaxRate: 0,
177
+ sellTaxRate: 0,
178
+ taxDuration: 0n,
179
+ antiFarmerDuration: 0n,
180
+ commissionReceiver: ZeroAddress,
181
+ tokenVersion: TokenVersion.TOKEN_V3_PERMIT,
182
+ feeConfigs: [emptyFeeConfig, emptyFeeConfig, emptyFeeConfig, emptyFeeConfig],
183
+ });
184
+ }
185
+ // 4) 标准 V2(newTokenV6 + TOKEN_V2_PERMIT)
186
+ return params.originalPortal.newTokenV6.populateTransaction({
187
+ name: params.tokenInfo.name,
188
+ symbol: params.tokenInfo.symbol,
189
+ meta: params.tokenInfo.meta,
190
+ dexThresh: (params.dexThresh ?? 1) & 0xff,
191
+ salt: params.salt ?? zeroBytes32(),
192
+ migratorType: (params.migratorType ?? MigratorType.V2_MIGRATOR) & 0xff,
193
+ quoteToken: params.quoteToken || ZERO_ADDRESS,
194
+ quoteAmt: 0n,
195
+ beneficiary: params.beneficiary,
196
+ permitData: '0x',
197
+ extensionID: params.extensionID ?? zeroBytes32(),
198
+ extensionData: params.extensionData ?? '0x',
199
+ dexId: (params.dexId ?? 0) & 0xff,
200
+ lpFeeProfile: (params.lpFeeProfile ?? 0) & 0xff,
201
+ buyTaxRate: 0,
202
+ sellTaxRate: 0,
203
+ taxDuration: 0n,
204
+ antiFarmerDuration: 0n,
205
+ mktBps: 0,
206
+ deflationBps: 0,
207
+ dividendBps: 0,
208
+ lpBps: 0,
209
+ minimumShareBalance: 0n,
210
+ dividendToken: ZeroAddress,
211
+ commissionReceiver: ZeroAddress,
212
+ tokenVersion: TokenVersion.TOKEN_V2_PERMIT,
213
+ });
214
+ }
@@ -12,8 +12,17 @@ export declare enum TokenVersion {
12
12
  TOKEN_V2_PERMIT = 2,
13
13
  TOKEN_GOPLUS = 3,
14
14
  TOKEN_TAXED = 4,
15
- /** VaultPortal.newTokenV6WithVault 金库发射必须使用此版本 */
16
- TOKEN_TAXED_V3 = 6
15
+ TOKEN_TAXED_V2 = 5,
16
+ TOKEN_TAXED_V3 = 6,
17
+ TOKEN_V3_PERMIT = 7
18
+ }
19
+ /** newTokenV7 feeConfigs 槽位类型 */
20
+ export declare enum FeeType {
21
+ NONE = 0,
22
+ MARKETING_OR_VAULT = 1,
23
+ DIVIDEND = 2,
24
+ DEFLATION = 3,
25
+ LP_BPS = 4
17
26
  }
18
27
  export declare enum DexThreshType {
19
28
  TWO_THIRDS = 0,
@@ -25,7 +34,9 @@ export declare enum DexThreshType {
25
34
  }
26
35
  export declare enum MigratorType {
27
36
  V3_MIGRATOR = 0,
28
- V2_MIGRATOR = 1
37
+ V2_MIGRATOR = 1,
38
+ /** PCS Infinity CL 迁移(newTokenV7 / TOKEN_V3_PERMIT) */
39
+ PCS_INFINITY_CL_MIGRATOR = 3
29
40
  }
30
41
  /**
31
42
  * V3 LP 费率档位