four-flap-meme-sdk 2.2.18 → 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 (492) 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/private-sale.d.ts +2 -58
  453. package/dist/utils/private-sale.js +4 -15
  454. package/dist/utils/provider-factory.d.ts +4 -0
  455. package/dist/utils/provider-factory.js +10 -0
  456. package/dist/utils/quote-helpers.d.ts +4 -45
  457. package/dist/utils/quote-helpers.js +17 -74
  458. package/dist/utils/stealth-transfer.d.ts +2 -28
  459. package/dist/utils/stealth-transfer.js +39 -19
  460. package/dist/utils/swap-helpers.d.ts +2 -15
  461. package/dist/utils/swap-helpers.js +6 -11
  462. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  463. package/dist/utils/types/airdrop-sweep.js +1 -0
  464. package/dist/utils/types/contract-factory.d.ts +1 -0
  465. package/dist/utils/types/contract-factory.js +1 -0
  466. package/dist/utils/types/erc20.d.ts +1 -0
  467. package/dist/utils/types/erc20.js +1 -0
  468. package/dist/utils/types/errors.d.ts +1 -0
  469. package/dist/utils/types/errors.js +1 -0
  470. package/dist/utils/types/holders-maker.d.ts +1 -0
  471. package/dist/utils/types/holders-maker.js +1 -0
  472. package/dist/utils/types/hop-chains.d.ts +8 -0
  473. package/dist/utils/types/hop-chains.js +1 -0
  474. package/dist/utils/types/index.d.ts +13 -0
  475. package/dist/utils/types/index.js +1 -0
  476. package/dist/utils/types/lp-inspect.d.ts +1 -0
  477. package/dist/utils/types/lp-inspect.js +1 -0
  478. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  479. package/dist/utils/types/mpc-exclusive.js +1 -0
  480. package/dist/utils/types/private-sale.d.ts +1 -0
  481. package/dist/utils/types/private-sale.js +1 -0
  482. package/dist/utils/types/quote-helpers.d.ts +1 -0
  483. package/dist/utils/types/quote-helpers.js +1 -0
  484. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  485. package/dist/utils/types/stealth-transfer.js +1 -0
  486. package/dist/utils/types/wallet.d.ts +25 -0
  487. package/dist/utils/types/wallet.js +1 -0
  488. package/dist/utils/wallet.d.ts +4 -25
  489. package/dist/utils/wallet.js +27 -22
  490. package/dist/vanity/index.d.ts +5 -0
  491. package/dist/vanity/index.js +5 -0
  492. package/package.json +100 -2
@@ -1,14 +1,16 @@
1
1
  import { ethers, Wallet, JsonRpcProvider } from 'ethers';
2
2
  import { Club48Client, sendBatchPrivateTransactions, BUILDER_CONTROL_EOA } from '../clients/club48.js';
3
3
  import { FLAP_PORTAL_ADDRESSES, FLAP_ORIGINAL_PORTAL_ADDRESSES } from './constants.js';
4
- import { GAS_LIMITS } from '../constants/index.js';
4
+ import { GAS_LIMITS, CHAINS, ZERO_ADDRESS } from '../constants/index.js';
5
+ import { consoleSdkLogger } from '../foundation/index.js';
6
+ const sdkLogger = consoleSdkLogger;
5
7
  // Portal ABI (简化版,仅包含需要的方法)
6
8
  const PORTAL_ABI = [
7
9
  'function newToken(string name, string symbol, string meta) external payable returns (address)',
8
10
  '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
11
  'function swapExactInputBuy((address inputToken,address outputToken,uint256 inputAmount,uint256 minOutputAmount,bytes permitData)) external payable returns (uint256)',
10
12
  '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)'
13
+ 'function quoteExactInput((address inputToken,address outputToken,uint256 inputAmount)) external returns (uint256)',
12
14
  ];
13
15
  /**
14
16
  * Flap Protocol Bundle 交易方法
@@ -18,20 +20,20 @@ const PORTAL_ABI = [
18
20
  const ERRORS = {
19
21
  NO_PRIVATE_KEY: {
20
22
  en: 'At least 1 private key (creator) is required',
21
- zh: '至少需要 1 个私钥(创建者)'
23
+ zh: '至少需要 1 个私钥(创建者)',
22
24
  },
23
25
  AMOUNT_MISMATCH: {
24
26
  en: (buyCount, buyerCount) => `Buy amount count (${buyCount}) must equal buyer count (${buyerCount})`,
25
- zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})`
27
+ zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})`,
26
28
  },
27
29
  KEY_AMOUNT_MISMATCH: {
28
30
  en: 'Private key count and amount count must match',
29
- zh: '私钥和购买金额数量必须一致'
31
+ zh: '私钥和购买金额数量必须一致',
30
32
  },
31
33
  SELL_KEY_AMOUNT_MISMATCH: {
32
34
  en: 'Private key count and sell amount count must match',
33
- zh: '私钥和卖出数量必须一致'
34
- }
35
+ zh: '私钥和卖出数量必须一致',
36
+ },
35
37
  };
36
38
  // 获取错误信息(根据环境语言)
37
39
  function getErrorMessage(key, ...args) {
@@ -56,28 +58,11 @@ async function estimateGasWithMultiplier(provider, txRequest, multiplier) {
56
58
  function getTxType(config) {
57
59
  return config.txType ?? 0; // 默认 Legacy (type 0),适用于 48.club/BSC
58
60
  }
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
61
  /**
75
62
  * Flap Protocol: 创建代币 + 捆绑购买
76
63
  */
77
64
  export async function createTokenWithBundleBuy(params) {
78
- const { chain, privateKeys, buyAmounts, tokenInfo, quoteToken, tokenAddress, config } = params;
79
- // 默认使用 BNB (0地址)
80
- const quoteTokenAddress = quoteToken || '0x0000000000000000000000000000000000000000';
65
+ const { chain, privateKeys, buyAmounts, tokenInfo, tokenAddress, config } = params;
81
66
  if (privateKeys.length === 0) {
82
67
  throw new Error(getErrorMessage('NO_PRIVATE_KEY'));
83
68
  }
@@ -88,7 +73,7 @@ export async function createTokenWithBundleBuy(params) {
88
73
  const devWallet = new Wallet(privateKeys[0], provider);
89
74
  const club48 = new Club48Client({
90
75
  endpoint: config.club48Endpoint,
91
- explorerEndpoint: config.club48ExplorerEndpoint
76
+ explorerEndpoint: config.club48ExplorerEndpoint,
92
77
  });
93
78
  const blockOffset = config.bundleBlockOffset ?? 100;
94
79
  // 1. 构建交易(为重复地址分配顺序 nonce)
@@ -119,10 +104,10 @@ export async function createTokenWithBundleBuy(params) {
119
104
  salt: params.salt ?? '0x' + '00'.repeat(32),
120
105
  taxRate: (params.taxRate ?? 0) & 0xffff,
121
106
  migratorType: (params.migratorType ?? 0) & 0xff,
122
- quoteToken: params.quoteToken || '0x0000000000000000000000000000000000000000',
107
+ quoteToken: params.quoteToken || ZERO_ADDRESS,
123
108
  quoteAmt: 0n,
124
109
  beneficiary: new Wallet(privateKeys[0]).address,
125
- permitData: '0x'
110
+ permitData: '0x',
126
111
  });
127
112
  // 估算 gas 并应用用户配置的安全余量
128
113
  const createGasLimit = await estimateGasWithMultiplier(provider, { ...createTxUnsigned, from: devWallet.address }, config.gasLimitMultiplier);
@@ -132,8 +117,8 @@ export async function createTokenWithBundleBuy(params) {
132
117
  nonce: await getNextNonce(devWallet),
133
118
  gasLimit: createGasLimit,
134
119
  gasPrice: gasPrice,
135
- chainId: 56, // BSC
136
- type: getTxType(config) // 用户可配置:0=Legacy(默认),2=EIP-1559
120
+ chainId: CHAINS.BSC.chainId, // BSC
121
+ type: getTxType(config), // 用户可配置:0=Legacy(默认),2=EIP-1559
137
122
  };
138
123
  const signedCreateTx = await devWallet.signTransaction(createTxRequest);
139
124
  signedTxs.push(signedCreateTx);
@@ -144,9 +129,9 @@ export async function createTokenWithBundleBuy(params) {
144
129
  value: config.tipAmountWei,
145
130
  gasPrice,
146
131
  gasLimit: GAS_LIMITS.BRIBE,
147
- chainId: 56,
132
+ chainId: CHAINS.BSC.chainId,
148
133
  type: 0, // Legacy transaction
149
- nonce: await getNextNonce(devWallet)
134
+ nonce: await getNextNonce(devWallet),
150
135
  });
151
136
  signedTxs.push(tipTx);
152
137
  }
@@ -161,17 +146,19 @@ export async function createTokenWithBundleBuy(params) {
161
146
  try {
162
147
  const quote = new ethers.Contract(portalAddr, PORTAL_ABI, buyerWallet);
163
148
  const exactOut = await quote.quoteExactInput.staticCall({
164
- inputToken: '0x0000000000000000000000000000000000000000',
149
+ inputToken: ZERO_ADDRESS,
165
150
  outputToken: tokenAddress,
166
- inputAmount: amountIn
151
+ inputAmount: amountIn,
167
152
  });
168
153
  const keep = BigInt(10000 - slippageBps);
169
154
  minAmountOut = (exactOut * keep) / 10000n;
170
155
  }
171
- catch { }
156
+ catch (error) {
157
+ sdkLogger.debug?.('[Flap bundle] quoteExactInput failed, fallback minAmountOut=0', error);
158
+ }
172
159
  const buyPortal = new ethers.Contract(portalAddr, PORTAL_ABI, buyerWallet);
173
160
  const buyTxUnsigned = await buyPortal.swapExactInputBuy.populateTransaction({
174
- inputToken: '0x0000000000000000000000000000000000000000',
161
+ inputToken: ZERO_ADDRESS,
175
162
  outputToken: tokenAddress,
176
163
  inputAmount: 0n,
177
164
  minOutputAmount: minAmountOut,
@@ -192,8 +179,8 @@ export async function createTokenWithBundleBuy(params) {
192
179
  nonce: await getNextNonce(buyerWallet),
193
180
  gasLimit: buyGasLimit,
194
181
  gasPrice: gasPrice,
195
- chainId: 56, // BSC
196
- type: getTxType(config) // 用户可配置
182
+ chainId: CHAINS.BSC.chainId, // BSC
183
+ type: getTxType(config), // 用户可配置
197
184
  };
198
185
  const signedBuyTx = await buyerWallet.signTransaction(buyTxRequest);
199
186
  signedTxs.push(signedBuyTx);
@@ -203,11 +190,11 @@ export async function createTokenWithBundleBuy(params) {
203
190
  const bundleUuid = await club48.sendBundle({
204
191
  txs: signedTxs,
205
192
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
206
- noMerge: config.noMerge
193
+ noMerge: config.noMerge,
207
194
  }, {
208
195
  spMode: params.config.spMode ?? 'timestampPersonalSign',
209
196
  spPrivateKey: params.config.spPrivateKey || privateKeys[0],
210
- spVMode: params.config.spVMode
197
+ spVMode: params.config.spVMode,
211
198
  });
212
199
  // 3. 等待完成
213
200
  const status = await club48.waitForBundle(bundleUuid, params.config.waitTimeoutMs ?? 60000);
@@ -216,7 +203,7 @@ export async function createTokenWithBundleBuy(params) {
216
203
  tokenAddress,
217
204
  status,
218
205
  createTx: signedCreateTx,
219
- buyTxs
206
+ buyTxs,
220
207
  };
221
208
  }
222
209
  /**
@@ -230,7 +217,7 @@ export async function batchBuyWithBundle(params) {
230
217
  const provider = new JsonRpcProvider(config.rpcUrl);
231
218
  const club48 = new Club48Client({
232
219
  endpoint: config.club48Endpoint,
233
- explorerEndpoint: config.club48ExplorerEndpoint
220
+ explorerEndpoint: config.club48ExplorerEndpoint,
234
221
  });
235
222
  const blockOffset = config.bundleBlockOffset ?? 100;
236
223
  const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
@@ -257,9 +244,9 @@ export async function batchBuyWithBundle(params) {
257
244
  value: config.tipAmountWei,
258
245
  gasPrice,
259
246
  gasLimit: GAS_LIMITS.BRIBE,
260
- chainId: 56,
247
+ chainId: CHAINS.BSC.chainId,
261
248
  type: 0, // Legacy transaction
262
- nonce: await getNextNonce(tipWallet)
249
+ nonce: await getNextNonce(tipWallet),
263
250
  });
264
251
  signedTxs.unshift(tipTx);
265
252
  }
@@ -272,17 +259,19 @@ export async function batchBuyWithBundle(params) {
272
259
  try {
273
260
  const quote = new ethers.Contract(portalAddr, PORTAL_ABI, buyerWallet);
274
261
  const exactOut = await quote.quoteExactInput.staticCall({
275
- inputToken: '0x0000000000000000000000000000000000000000',
262
+ inputToken: ZERO_ADDRESS,
276
263
  outputToken: tokenAddress,
277
- inputAmount: amountIn
264
+ inputAmount: amountIn,
278
265
  });
279
266
  const keep = BigInt(10000 - slippageBps);
280
267
  minAmountOut = (exactOut * keep) / 10000n;
281
268
  }
282
- catch { }
269
+ catch (error) {
270
+ sdkLogger.debug?.('[Flap bundle] quoteExactInput failed, fallback minAmountOut=0', error);
271
+ }
283
272
  const portal = new ethers.Contract(portalAddr, PORTAL_ABI, buyerWallet);
284
273
  const buyTxUnsigned = await portal.swapExactInputBuy.populateTransaction({
285
- inputToken: '0x0000000000000000000000000000000000000000',
274
+ inputToken: ZERO_ADDRESS,
286
275
  outputToken: tokenAddress,
287
276
  inputAmount: 0n,
288
277
  minOutputAmount: minAmountOut,
@@ -292,7 +281,7 @@ export async function batchBuyWithBundle(params) {
292
281
  const estimatedGas = await provider.estimateGas({
293
282
  ...buyTxUnsigned,
294
283
  from: buyerWallet.address,
295
- value: amountIn
284
+ value: amountIn,
296
285
  });
297
286
  const gasLimit = (estimatedGas * 120n) / 100n;
298
287
  const buyTxRequest = {
@@ -301,8 +290,8 @@ export async function batchBuyWithBundle(params) {
301
290
  nonce: await getNextNonce(buyerWallet),
302
291
  gasLimit: gasLimit,
303
292
  gasPrice: gasPrice,
304
- chainId: 56, // BSC
305
- type: 0 // Legacy transaction
293
+ chainId: CHAINS.BSC.chainId, // BSC
294
+ type: 0, // Legacy transaction
306
295
  };
307
296
  const signedBuyTx = await buyerWallet.signTransaction(buyTxRequest);
308
297
  signedTxs.push(signedBuyTx);
@@ -310,11 +299,11 @@ export async function batchBuyWithBundle(params) {
310
299
  const bundleUuid = await club48.sendBundle({
311
300
  txs: signedTxs,
312
301
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
313
- noMerge: config.noMerge
302
+ noMerge: config.noMerge,
314
303
  }, {
315
304
  spMode: params.config.spMode ?? 'timestampPersonalSign',
316
305
  spPrivateKey: params.config.spPrivateKey || privateKeys[0],
317
- spVMode: params.config.spVMode
306
+ spVMode: params.config.spVMode,
318
307
  });
319
308
  const status = await club48.waitForBundle(bundleUuid);
320
309
  return { bundleUuid, status, buyTxs: signedTxs };
@@ -330,7 +319,7 @@ export async function batchSellWithBundle(params) {
330
319
  const provider = new JsonRpcProvider(config.rpcUrl);
331
320
  const club48 = new Club48Client({
332
321
  endpoint: config.club48Endpoint,
333
- explorerEndpoint: config.club48ExplorerEndpoint
322
+ explorerEndpoint: config.club48ExplorerEndpoint,
334
323
  });
335
324
  const blockOffset = config.bundleBlockOffset ?? 100;
336
325
  const portalAddr = FLAP_PORTAL_ADDRESSES[chain];
@@ -357,9 +346,9 @@ export async function batchSellWithBundle(params) {
357
346
  value: config.tipAmountWei,
358
347
  gasPrice,
359
348
  gasLimit: GAS_LIMITS.BRIBE,
360
- chainId: 56,
349
+ chainId: CHAINS.BSC.chainId,
361
350
  type: 0, // Legacy transaction
362
- nonce: await getNextNonce(tipWallet)
351
+ nonce: await getNextNonce(tipWallet),
363
352
  });
364
353
  signedTxs.unshift(tipTx);
365
354
  }
@@ -370,7 +359,7 @@ export async function batchSellWithBundle(params) {
370
359
  const portal = new ethers.Contract(portalAddr, PORTAL_ABI, sellerWallet);
371
360
  const sellTxUnsigned = await portal.swapExactInputSell.populateTransaction({
372
361
  inputToken: tokenAddress,
373
- outputToken: '0x0000000000000000000000000000000000000000',
362
+ outputToken: ZERO_ADDRESS,
374
363
  inputAmount: amountIn,
375
364
  minOutputAmount: minAmountOut,
376
365
  permitData: '0x',
@@ -378,7 +367,7 @@ export async function batchSellWithBundle(params) {
378
367
  // 估算 gas 并添加 20% 安全余量
379
368
  const estimatedGas = await provider.estimateGas({
380
369
  ...sellTxUnsigned,
381
- from: sellerWallet.address
370
+ from: sellerWallet.address,
382
371
  });
383
372
  const gasLimit = (estimatedGas * 120n) / 100n;
384
373
  const sellTxRequest = {
@@ -387,8 +376,8 @@ export async function batchSellWithBundle(params) {
387
376
  nonce: await getNextNonce(sellerWallet),
388
377
  gasLimit: gasLimit,
389
378
  gasPrice: gasPrice,
390
- chainId: 56, // BSC
391
- type: 0 // Legacy transaction
379
+ chainId: CHAINS.BSC.chainId, // BSC
380
+ type: 0, // Legacy transaction
392
381
  };
393
382
  const signedSellTx = await sellerWallet.signTransaction(sellTxRequest);
394
383
  signedTxs.push(signedSellTx);
@@ -396,17 +385,17 @@ export async function batchSellWithBundle(params) {
396
385
  const bundleUuid = await club48.sendBundle({
397
386
  txs: signedTxs,
398
387
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
399
- noMerge: config.noMerge
388
+ noMerge: config.noMerge,
400
389
  }, {
401
390
  spMode: params.config.spMode ?? 'timestampPersonalSign',
402
391
  spPrivateKey: params.config.spPrivateKey || privateKeys[0],
403
- spVMode: params.config.spVMode
392
+ spVMode: params.config.spVMode,
404
393
  });
405
394
  const status = await club48.waitForBundle(bundleUuid);
406
395
  return { bundleUuid, status, sellTxs: signedTxs };
407
396
  }
408
397
  export async function flapPrivateBuy(params) {
409
- const { chain, privateKey, tokenAddress, amountIn, to, config, spPrivateKey } = params;
398
+ const { chain, privateKey, tokenAddress, amountIn, config, spPrivateKey } = params;
410
399
  const provider = new JsonRpcProvider(config.rpcUrl);
411
400
  const wallet = new Wallet(privateKey, provider);
412
401
  const club48 = new Club48Client({ endpoint: config.club48Endpoint, explorerEndpoint: config.club48ExplorerEndpoint });
@@ -416,7 +405,7 @@ export async function flapPrivateBuy(params) {
416
405
  const minAmountOut = 0n; // 不加滑点
417
406
  const portal = new ethers.Contract(portalAddr, PORTAL_ABI, wallet);
418
407
  const unsigned = await portal.swapExactInputBuy.populateTransaction({
419
- inputToken: '0x0000000000000000000000000000000000000000',
408
+ inputToken: ZERO_ADDRESS,
420
409
  outputToken: tokenAddress,
421
410
  inputAmount: 0n,
422
411
  minOutputAmount: minAmountOut,
@@ -426,7 +415,7 @@ export async function flapPrivateBuy(params) {
426
415
  const estimatedGas = await provider.estimateGas({
427
416
  ...unsigned,
428
417
  from: wallet.address,
429
- value: amountWei
418
+ value: amountWei,
430
419
  });
431
420
  const gasLimit = (estimatedGas * 120n) / 100n;
432
421
  const req = {
@@ -435,8 +424,8 @@ export async function flapPrivateBuy(params) {
435
424
  nonce: await wallet.getNonce(),
436
425
  gasLimit: gasLimit,
437
426
  gasPrice,
438
- chainId: 56,
439
- type: 0 // Legacy transaction
427
+ chainId: CHAINS.BSC.chainId,
428
+ type: 0, // Legacy transaction
440
429
  };
441
430
  const signed = await wallet.signTransaction(req);
442
431
  if (spPrivateKey)
@@ -455,7 +444,7 @@ export async function flapPrivateSell(params) {
455
444
  const portal = new ethers.Contract(portalAddr, PORTAL_ABI, wallet);
456
445
  const unsigned = await portal.swapExactInputSell.populateTransaction({
457
446
  inputToken: tokenAddress,
458
- outputToken: '0x0000000000000000000000000000000000000000',
447
+ outputToken: ZERO_ADDRESS,
459
448
  inputAmount: amountWei,
460
449
  minOutputAmount: minOut,
461
450
  permitData: '0x',
@@ -463,7 +452,7 @@ export async function flapPrivateSell(params) {
463
452
  // 估算 gas 并添加 20% 安全余量
464
453
  const estimatedGas = await provider.estimateGas({
465
454
  ...unsigned,
466
- from: wallet.address
455
+ from: wallet.address,
467
456
  });
468
457
  const gasLimit = (estimatedGas * 120n) / 100n;
469
458
  const req = {
@@ -472,8 +461,8 @@ export async function flapPrivateSell(params) {
472
461
  nonce: await wallet.getNonce(),
473
462
  gasLimit: gasLimit,
474
463
  gasPrice,
475
- chainId: 56,
476
- type: 0 // Legacy transaction
464
+ chainId: CHAINS.BSC.chainId,
465
+ type: 0, // Legacy transaction
477
466
  };
478
467
  const signed = await wallet.signTransaction(req);
479
468
  if (spPrivateKey)
@@ -507,7 +496,7 @@ export async function flapBatchPrivateBuy(params) {
507
496
  const amountWei = ethers.parseEther(amountsIn[i]);
508
497
  const portal = new ethers.Contract(portalAddr, PORTAL_ABI, w);
509
498
  const unsigned = await portal.swapExactInputBuy.populateTransaction({
510
- inputToken: '0x0000000000000000000000000000000000000000',
499
+ inputToken: ZERO_ADDRESS,
511
500
  outputToken: tokenAddress,
512
501
  inputAmount: 0n,
513
502
  minOutputAmount: 0n,
@@ -516,13 +505,21 @@ export async function flapBatchPrivateBuy(params) {
516
505
  // 估算 gas 并添加 20% 安全余量
517
506
  const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address, value: amountWei });
518
507
  const gasLimit = (estimatedGas * 120n) / 100n;
519
- const req = { ...unsigned, from: w.address, nonce: await getNextNonce(w), gasLimit, gasPrice, chainId: 56, type: 0 };
508
+ const req = {
509
+ ...unsigned,
510
+ from: w.address,
511
+ nonce: await getNextNonce(w),
512
+ gasLimit,
513
+ gasPrice,
514
+ chainId: CHAINS.BSC.chainId,
515
+ type: 0,
516
+ };
520
517
  signedTxs.push(await w.signTransaction(req));
521
518
  }
522
519
  return await sendBatchPrivateTransactions(signedTxs, spPrivateKey, config.club48Endpoint || 'https://puissant-bsc.48.club');
523
520
  }
524
521
  export async function flapBatchPrivateSell(params) {
525
- const { chain, privateKeys, amounts, tokenAddress, config, spPrivateKey, minEthEach } = params;
522
+ const { chain, privateKeys, amounts, tokenAddress, config, minEthEach } = params;
526
523
  if (privateKeys.length !== amounts.length)
527
524
  throw new Error('privateKeys and amounts length mismatch');
528
525
  const provider = new JsonRpcProvider(config.rpcUrl);
@@ -550,7 +547,7 @@ export async function flapBatchPrivateSell(params) {
550
547
  const portal = new ethers.Contract(portalAddr, PORTAL_ABI, w);
551
548
  const unsigned = await portal.swapExactInputSell.populateTransaction({
552
549
  inputToken: tokenAddress,
553
- outputToken: '0x0000000000000000000000000000000000000000',
550
+ outputToken: ZERO_ADDRESS,
554
551
  inputAmount: amountWei,
555
552
  minOutputAmount: minOut,
556
553
  permitData: '0x',
@@ -558,7 +555,15 @@ export async function flapBatchPrivateSell(params) {
558
555
  // 估算 gas 并添加 20% 安全余量
559
556
  const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address });
560
557
  const gasLimit = (estimatedGas * 120n) / 100n;
561
- const req = { ...unsigned, from: w.address, nonce: await getNextNonce(w), gasLimit, gasPrice, chainId: 56, type: 0 };
558
+ const req = {
559
+ ...unsigned,
560
+ from: w.address,
561
+ nonce: await getNextNonce(w),
562
+ gasLimit,
563
+ gasPrice,
564
+ chainId: CHAINS.BSC.chainId,
565
+ type: 0,
566
+ };
562
567
  signedTxs.push(await w.signTransaction(req));
563
568
  }
564
569
  // 使用 bundle 通道提交(统一与捆绑买保持一致)
@@ -566,12 +571,12 @@ export async function flapBatchPrivateSell(params) {
566
571
  const bundleUuid = await club48.sendBundle({
567
572
  txs: signedTxs,
568
573
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
569
- noMerge: config.noMerge
574
+ noMerge: config.noMerge,
570
575
  }, {
571
576
  // 若传入 sp 配置,则用于生成 48SP 签名提升打包优先级(与批量买一致)
572
577
  spMode: params.config.spMode ?? 'timestampPersonalSign',
573
578
  spPrivateKey: params.config.spPrivateKey || 'https://puissant-bsc.48.club',
574
- spVMode: params.config.spVMode
579
+ spVMode: params.config.spVMode,
575
580
  });
576
581
  try {
577
582
  const status = await club48.waitForBundle(bundleUuid);
@@ -1,10 +1,15 @@
1
1
  /**
2
2
  * Portal 发币交易构建(newTokenV6 / newTokenV7 / VaultPortal)
3
- * @see https://docs.flap.sh/flap/developers/token-launcher-developers/launch-token-through-portal
3
+ *
4
+ * 对齐 Flap 官方文档:
5
+ * - newTokenV6:TOKEN_V2_PERMIT / TOKEN_TAXED_V3
6
+ * - newTokenV7:TOKEN_V3_PERMIT(BSC 标准 V3 / PCS Infinity CL,与 Flap 官网一致)
7
+ * - newTokenV4:已弃用(Portal 侧 FeatureDisabled,勿再使用)
8
+ * - VaultPortal.newTaxTokenWithVault:带金库的税币(legacy 参数结构)
4
9
  */
5
- import { Contract, type Wallet } from 'ethers';
10
+ import { Contract, type TransactionRequest, type Wallet } from 'ethers';
6
11
  import { type TaxVaultConfig } from './vault.js';
7
- import type { TaxV2Config } from './portal-bundle-merkle/types.js';
12
+ /** 分红代币:将 launching token 本身作为分红代币 */
8
13
  export declare const MAGIC_DIVIDEND_SELF = "0xfEEDFEEDfeEDFEedFEEdFEEDFeEdfEEdFeEdFEEd";
9
14
  export type NormalizedTaxLaunchConfig = {
10
15
  taxDuration: number;
@@ -34,30 +39,43 @@ export type PopulateCreateTokenParams = {
34
39
  dexThresh?: number;
35
40
  salt?: string;
36
41
  migratorType?: number;
42
+ /** legacy 单税率(bps),无 buy/sell 时作为对称税率 */
37
43
  taxRate?: number;
38
- buyTaxRate?: number;
39
- sellTaxRate?: number;
40
44
  dexId?: number;
41
45
  lpFeeProfile?: number;
42
46
  extensionID?: string;
43
47
  extensionData?: string;
44
- /** 标准 V3 newTokenV7 + TOKEN_V3_PERMIT(与 Flap 官网一致) */
48
+ /** 标准 V3 / TOKEN_V3_PERMIT(newTokenV7 + PCS_INFINITY_CL_MIGRATOR,对齐 Flap Portal v5.8.6+) */
45
49
  useV7Portal?: boolean;
50
+ /** @deprecated 使用 useV7Portal */
51
+ useV4Portal?: boolean;
52
+ /** @deprecated 已合并到 useV7Portal */
53
+ useClInfinityLaunch?: boolean;
54
+ /** 高级税币 / 税币 V3 配置 */
46
55
  taxConfig?: NormalizedTaxLaunchConfig;
56
+ /** 创建时内嵌买入(Flap 文档方式 A:quoteAmt + msg.value) */
47
57
  initialQuoteAmt?: bigint;
48
58
  };
49
- /** bundle 发币路径:标准 V3(dexId/lpFeeProfile)→ newTokenV7,税币/金库 V6 */
50
- export declare function resolveCreateTokenLaunchFlags(params: {
51
- taxRate?: number;
52
- taxV2Config?: TaxV2Config;
53
- lpFeeProfile?: number;
54
- dexId?: number;
55
- migratorType?: number;
56
- extensionID?: string;
57
- }): {
58
- normalizedTax: NormalizedTaxLaunchConfig | undefined;
59
- useV7Portal: boolean;
60
- };
61
- /** 将 TaxV2Config(含 distribution)归一化;金库发射在税率为 0 时仍返回配置 */
62
- export declare function normalizeTaxLaunchConfig(input?: TaxV2Config, fallbackTaxRate?: number): NormalizedTaxLaunchConfig | undefined;
63
- export declare function populateCreateTokenTransaction(params: PopulateCreateTokenParams): Promise<import("ethers").ContractTransaction>;
59
+ /** TaxV2Config(含 distribution 嵌套)或 flat 结构归一化 */
60
+ export declare function normalizeTaxLaunchConfig(input?: {
61
+ taxDuration: number;
62
+ antiFarmerDuration: number;
63
+ mktBps?: number;
64
+ deflationBps?: number;
65
+ dividendBps?: number;
66
+ lpBps?: number;
67
+ minimumShareBalance?: number;
68
+ buyTaxRate?: number;
69
+ sellTaxRate?: number;
70
+ dividendToken?: string;
71
+ commissionReceiver?: string;
72
+ vaultConfig?: TaxVaultConfig;
73
+ distribution?: {
74
+ mktBps: number;
75
+ deflationBps: number;
76
+ dividendBps: number;
77
+ lpBps: number;
78
+ minimumShareBalance?: number;
79
+ };
80
+ }, fallbackTaxRate?: number): NormalizedTaxLaunchConfig | undefined;
81
+ export declare function populateCreateTokenTransaction(params: PopulateCreateTokenParams): Promise<TransactionRequest>;