four-flap-meme-sdk 2.2.2 → 2.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/README.en.md +41 -6
  2. package/README.md +31 -0
  3. package/README.zh-CN.md +41 -6
  4. package/dist/__tests__/subpath-exports.test.d.ts +1 -0
  5. package/dist/__tests__/subpath-exports.test.js +64 -0
  6. package/dist/abis/common.d.ts +85 -0
  7. package/dist/abis/common.js +264 -0
  8. package/dist/abis/contracts/TaxToken.json +969 -0
  9. package/dist/abis/contracts/TokenManager2.json +136 -0
  10. package/dist/abis/contracts/index.d.ts +5 -0
  11. package/dist/abis/contracts/index.js +5 -0
  12. package/dist/abis/flap/index.d.ts +3 -0
  13. package/dist/abis/flap/index.js +3 -0
  14. package/dist/abis/flap/portal-events.d.ts +6 -0
  15. package/dist/abis/flap/portal-events.js +17 -0
  16. package/dist/abis/flap/portal.d.ts +6 -0
  17. package/dist/abis/flap/portal.js +37 -0
  18. package/dist/abis/flap/vault.d.ts +171 -0
  19. package/dist/abis/flap/vault.js +91 -0
  20. package/dist/abis/index.d.ts +8 -0
  21. package/dist/abis/index.js +11 -0
  22. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +1 -0
  23. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  24. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +1 -0
  25. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  26. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
  27. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  28. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
  29. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  30. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  31. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  32. package/dist/bundle-core/config-helpers.d.ts +36 -0
  33. package/dist/bundle-core/config-helpers.js +57 -0
  34. package/dist/bundle-core/errors.d.ts +50 -0
  35. package/dist/bundle-core/errors.js +35 -0
  36. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  37. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  38. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  39. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  40. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  41. package/dist/bundle-core/four-meme/core.js +515 -0
  42. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  43. package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
  44. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  45. package/dist/bundle-core/four-meme/private.js +465 -0
  46. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  47. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  48. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  49. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  50. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  51. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  52. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  53. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  54. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  55. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  56. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  57. package/dist/bundle-core/four-meme/swap.js +505 -0
  58. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  59. package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
  60. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  61. package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
  62. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  63. package/dist/bundle-core/four-meme/types/index.js +1 -0
  64. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  65. package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
  66. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  67. package/dist/bundle-core/four-meme/types.js +1 -0
  68. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  69. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  70. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  71. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  72. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  73. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  74. package/dist/bundle-core/index.d.ts +8 -0
  75. package/dist/bundle-core/index.js +8 -0
  76. package/dist/bundle-core/internal.d.ts +21 -0
  77. package/dist/bundle-core/internal.js +182 -0
  78. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  79. package/dist/bundle-core/sign-context-helpers.js +67 -0
  80. package/dist/bundle-core/submit.d.ts +293 -0
  81. package/dist/bundle-core/submit.js +727 -0
  82. package/dist/bundle-core/types/index.d.ts +8 -0
  83. package/dist/bundle-core/types/index.js +1 -0
  84. package/dist/bundle-core/types.d.ts +1 -0
  85. package/dist/bundle-core/types.js +1 -0
  86. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  87. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
  88. package/dist/chains/bsc/four/config.d.ts +5 -67
  89. package/dist/chains/bsc/four/config.js +2 -114
  90. package/dist/chains/bsc/four/core.d.ts +1 -4
  91. package/dist/chains/bsc/four/core.js +1 -592
  92. package/dist/chains/bsc/four/index.d.ts +6 -6
  93. package/dist/chains/bsc/four/index.js +6 -6
  94. package/dist/chains/bsc/four/internal.d.ts +2 -46
  95. package/dist/chains/bsc/four/internal.js +2 -239
  96. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  97. package/dist/chains/bsc/four/pancake-proxy.js +1 -687
  98. package/dist/chains/bsc/four/private.d.ts +1 -27
  99. package/dist/chains/bsc/four/private.js +1 -477
  100. package/dist/chains/bsc/four/submit.d.ts +2 -315
  101. package/dist/chains/bsc/four/submit.js +2 -752
  102. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  103. package/dist/chains/bsc/four/swap-buy-first.js +2 -507
  104. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  105. package/dist/chains/bsc/four/swap-internal.js +1 -18
  106. package/dist/chains/bsc/four/swap.d.ts +2 -144
  107. package/dist/chains/bsc/four/swap.js +2 -766
  108. package/dist/chains/bsc/four/types.d.ts +1 -476
  109. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  110. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  111. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  112. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  113. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  114. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  115. package/dist/chains/bsc/four/utils.d.ts +5 -18
  116. package/dist/chains/bsc/four/utils.js +5 -1552
  117. package/dist/chains/bsc/iro.d.ts +5 -0
  118. package/dist/chains/bsc/iro.js +4 -0
  119. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  120. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  121. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  122. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -212
  123. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  124. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  125. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  126. package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
  127. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  128. package/dist/chains/bsc/pancake/index.js +1 -3
  129. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  130. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  131. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  132. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  133. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  134. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  135. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  136. package/dist/chains/eni/batch-router/transfer.js +55 -25
  137. package/dist/chains/eni/batch-router/utils.js +32 -6
  138. package/dist/chains/eni/bundler/sign.js +5 -6
  139. package/dist/chains/eni/bundler/submit.js +1 -4
  140. package/dist/chains/eni/constants.js +1 -1
  141. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  142. package/dist/chains/eni/flat-aliases.js +8 -0
  143. package/dist/chains/eni/index.d.ts +2 -1
  144. package/dist/chains/eni/index.js +1 -0
  145. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  146. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  147. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  148. package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
  149. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -44
  150. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  151. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  152. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  153. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  154. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -46
  155. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  156. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  157. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  158. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  159. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  160. package/dist/chains/eni/platforms/iro/index.js +4 -4
  161. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  162. package/dist/chains/eni/platforms/iro/token.js +107 -31
  163. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  164. package/dist/chains/eni/submit.d.ts +43 -0
  165. package/dist/chains/eni/submit.js +286 -0
  166. package/dist/chains/index.d.ts +13 -0
  167. package/dist/chains/index.js +13 -0
  168. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  169. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
  170. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  171. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  172. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -59
  173. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  174. package/dist/chains/xlayer/eip7702/bundle-sell.js +29 -111
  175. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  176. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -245
  177. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  178. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  179. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  180. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  181. package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
  182. package/dist/chains/xlayer/eip7702/index.js +28 -81
  183. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  184. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  185. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  186. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +63 -307
  187. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  188. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  189. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  190. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  191. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  192. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  193. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  194. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  195. package/dist/chains/xlayer/eip7702/volume.js +89 -164
  196. package/dist/chains/xlayer/eoa/constants.js +1 -1
  197. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  198. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  199. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  200. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  201. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
  202. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  203. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
  204. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  205. package/dist/chains/xlayer/eoa/index.js +8 -23
  206. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  207. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  208. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  209. package/dist/chains/xlayer/eoa/types.js +1 -3
  210. package/dist/chains/xlayer/index.d.ts +3 -2
  211. package/dist/chains/xlayer/index.js +4 -7
  212. package/dist/contracts/helper3.d.ts +20 -5
  213. package/dist/contracts/helper3.js +56 -20
  214. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  215. package/dist/contracts/tm-bundle-helpers.js +72 -0
  216. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  217. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -113
  218. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -67
  219. package/dist/contracts/tm-bundle-merkle/config.js +2 -114
  220. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  221. package/dist/contracts/tm-bundle-merkle/core.js +1 -591
  222. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  223. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  224. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -46
  225. package/dist/contracts/tm-bundle-merkle/internal.js +2 -238
  226. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  227. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -686
  228. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  229. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  230. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  231. package/dist/contracts/tm-bundle-merkle/submit.js +3 -928
  232. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  233. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -506
  234. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  235. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  236. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  237. package/dist/contracts/tm-bundle-merkle/swap.js +2 -764
  238. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  239. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  240. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  241. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  242. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  243. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  244. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  245. package/dist/contracts/tm-bundle-merkle/utils.d.ts +6 -18
  246. package/dist/contracts/tm-bundle-merkle/utils.js +6 -1501
  247. package/dist/contracts/tm-bundle.d.ts +3 -51
  248. package/dist/contracts/tm-bundle.js +108 -177
  249. package/dist/contracts/tm.d.ts +3 -2
  250. package/dist/contracts/tm.js +37 -32
  251. package/dist/contracts/tm1.js +9 -4
  252. package/dist/contracts/tm2.js +9 -4
  253. package/dist/dex/direct-router-helpers.d.ts +264 -0
  254. package/dist/dex/direct-router-helpers.js +539 -0
  255. package/dist/dex/direct-router.d.ts +3 -125
  256. package/dist/dex/direct-router.js +237 -666
  257. package/dist/dex/types.d.ts +81 -0
  258. package/dist/dex/types.js +1 -0
  259. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  260. package/dist/exports/root-bundle-and-tooling.js +30 -0
  261. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  262. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  263. package/dist/exports/root-foundations.d.ts +35 -0
  264. package/dist/exports/root-foundations.js +70 -0
  265. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  266. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  267. package/dist/flap/index.d.ts +10 -0
  268. package/dist/flap/index.js +8 -0
  269. package/dist/flows/create.d.ts +2 -1
  270. package/dist/flows/create.js +6 -6
  271. package/dist/flows/index.d.ts +1 -0
  272. package/dist/flows/index.js +1 -0
  273. package/dist/index.d.ts +20 -85
  274. package/dist/index.js +20 -215
  275. package/dist/merkle/index.d.ts +12 -0
  276. package/dist/merkle/index.js +11 -0
  277. package/dist/shared/abis/common.d.ts +2 -83
  278. package/dist/shared/abis/common.js +2 -252
  279. package/dist/shared/abis/index.d.ts +5 -6
  280. package/dist/shared/abis/index.js +5 -7
  281. package/dist/shared/clients/blockrazor.js +39 -25
  282. package/dist/shared/clients/club48.d.ts +2 -2
  283. package/dist/shared/clients/club48.js +34 -29
  284. package/dist/shared/clients/emitservice.js +2 -0
  285. package/dist/shared/clients/four.d.ts +21 -6
  286. package/dist/shared/clients/four.js +29 -24
  287. package/dist/shared/clients/index.d.ts +8 -0
  288. package/dist/shared/clients/index.js +8 -0
  289. package/dist/shared/clients/merkle.js +27 -34
  290. package/dist/shared/constants/addresses.d.ts +1 -1
  291. package/dist/shared/constants/addresses.js +11 -2
  292. package/dist/shared/constants/chains.d.ts +1 -1
  293. package/dist/shared/constants/chains.js +1 -1
  294. package/dist/shared/constants/gas.d.ts +1 -1
  295. package/dist/shared/constants/gas.js +2 -6
  296. package/dist/shared/constants/index.d.ts +3 -0
  297. package/dist/shared/constants/index.js +1 -0
  298. package/dist/shared/constants/quote.d.ts +30 -0
  299. package/dist/shared/constants/quote.js +37 -0
  300. package/dist/shared/flap/abi.js +1 -1
  301. package/dist/shared/flap/constants.d.ts +1 -2
  302. package/dist/shared/flap/constants.js +2 -3
  303. package/dist/shared/flap/curve.js +3 -0
  304. package/dist/shared/flap/errors.d.ts +1 -4
  305. package/dist/shared/flap/errors.js +20 -1
  306. package/dist/shared/flap/index.d.ts +5 -4
  307. package/dist/shared/flap/index.js +5 -4
  308. package/dist/shared/flap/meta.d.ts +22 -18
  309. package/dist/shared/flap/meta.js +12 -17
  310. package/dist/shared/flap/permit.js +5 -2
  311. package/dist/shared/flap/pinata.d.ts +22 -6
  312. package/dist/shared/flap/pinata.js +21 -26
  313. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  314. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  315. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  316. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  317. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  318. package/dist/shared/flap/portal-bundle-merkle/core.js +96 -277
  319. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +7 -2
  320. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +107 -206
  321. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  322. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  323. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  324. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  325. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  326. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  327. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  328. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  329. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  330. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  331. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  332. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  333. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  334. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +88 -9
  335. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  336. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  337. package/dist/shared/flap/portal-bundle.js +55 -56
  338. package/dist/shared/flap/portal-create-token.d.ts +80 -0
  339. package/dist/shared/flap/portal-create-token.js +257 -0
  340. package/dist/shared/flap/portal.d.ts +14 -3
  341. package/dist/shared/flap/portal.js +50 -25
  342. package/dist/shared/flap/vanity.d.ts +1 -5
  343. package/dist/shared/flap/vanity.js +6 -17
  344. package/dist/shared/flap/vault.d.ts +17 -124
  345. package/dist/shared/flap/vault.js +67 -148
  346. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  347. package/dist/shared/foundation/dex/v3-path.js +35 -0
  348. package/dist/shared/foundation/gas/bundle-gas.d.ts +49 -0
  349. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  350. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  351. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  352. package/dist/shared/foundation/index.d.ts +13 -0
  353. package/dist/shared/foundation/index.js +12 -0
  354. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  355. package/dist/shared/foundation/nonce/nonce-manager.js +183 -0
  356. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  357. package/dist/shared/foundation/normalize-unknown.js +29 -0
  358. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  359. package/dist/shared/foundation/sdk-logger.js +12 -0
  360. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  361. package/dist/shared/foundation/tx/build-request.js +25 -0
  362. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  363. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  364. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
  365. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  366. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  367. package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
  368. package/dist/shared/foundation/types/erc20.d.ts +65 -0
  369. package/dist/shared/foundation/types/erc20.js +1 -0
  370. package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
  371. package/dist/shared/foundation/types/holders-maker.js +1 -0
  372. package/dist/shared/foundation/types/index.d.ts +7 -0
  373. package/dist/shared/foundation/types/index.js +1 -0
  374. package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
  375. package/dist/shared/foundation/types/lp-inspect.js +1 -0
  376. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  377. package/dist/shared/foundation/types/multicall.js +1 -0
  378. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  379. package/dist/shared/foundation/types/private-sale.js +1 -0
  380. package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
  381. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  382. package/dist/shared/four/tax-token.d.ts +1 -1
  383. package/dist/shared/four/tax-token.js +27 -7
  384. package/dist/shared/index.d.ts +6 -0
  385. package/dist/shared/index.js +4 -0
  386. package/dist/types/errors.d.ts +27 -0
  387. package/dist/types/errors.js +34 -0
  388. package/dist/utils/airdrop-sweep.d.ts +4 -76
  389. package/dist/utils/airdrop-sweep.js +42 -55
  390. package/dist/utils/bundle-helpers.d.ts +9 -243
  391. package/dist/utils/bundle-helpers.js +10 -584
  392. package/dist/utils/constants.d.ts +5 -61
  393. package/dist/utils/constants.js +5 -80
  394. package/dist/utils/contract-factory.d.ts +2 -4
  395. package/dist/utils/contract-factory.js +25 -18
  396. package/dist/utils/erc20.d.ts +7 -89
  397. package/dist/utils/erc20.js +94 -125
  398. package/dist/utils/errors.d.ts +12 -1
  399. package/dist/utils/errors.js +60 -1
  400. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  401. package/dist/utils/holders-maker/addresses.js +15 -0
  402. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  403. package/dist/utils/holders-maker/buy-tx.js +278 -0
  404. package/dist/utils/holders-maker/constants.d.ts +6 -0
  405. package/dist/utils/holders-maker/constants.js +7 -0
  406. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  407. package/dist/utils/holders-maker/disperse.js +90 -0
  408. package/dist/utils/holders-maker/routing.d.ts +4 -0
  409. package/dist/utils/holders-maker/routing.js +45 -0
  410. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  411. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  412. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  413. package/dist/utils/holders-maker-helpers.js +9 -0
  414. package/dist/utils/holders-maker.d.ts +2 -138
  415. package/dist/utils/holders-maker.js +26 -661
  416. package/dist/utils/hop-chains.d.ts +35 -0
  417. package/dist/utils/hop-chains.js +215 -0
  418. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  419. package/dist/utils/lp-inspect-helpers.js +109 -0
  420. package/dist/utils/lp-inspect.d.ts +2 -112
  421. package/dist/utils/lp-inspect.js +73 -223
  422. package/dist/utils/mpcExclusive.d.ts +2 -5
  423. package/dist/utils/mpcExclusive.js +4 -3
  424. package/dist/utils/private-sale.d.ts +2 -58
  425. package/dist/utils/private-sale.js +4 -15
  426. package/dist/utils/provider-factory.d.ts +4 -0
  427. package/dist/utils/provider-factory.js +10 -0
  428. package/dist/utils/quote-helpers.d.ts +4 -45
  429. package/dist/utils/quote-helpers.js +17 -74
  430. package/dist/utils/stealth-transfer.d.ts +2 -28
  431. package/dist/utils/stealth-transfer.js +31 -15
  432. package/dist/utils/swap-helpers.d.ts +2 -15
  433. package/dist/utils/swap-helpers.js +6 -11
  434. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  435. package/dist/utils/types/airdrop-sweep.js +1 -0
  436. package/dist/utils/types/contract-factory.d.ts +1 -0
  437. package/dist/utils/types/contract-factory.js +1 -0
  438. package/dist/utils/types/erc20.d.ts +1 -0
  439. package/dist/utils/types/erc20.js +1 -0
  440. package/dist/utils/types/errors.d.ts +1 -0
  441. package/dist/utils/types/errors.js +1 -0
  442. package/dist/utils/types/holders-maker.d.ts +1 -0
  443. package/dist/utils/types/holders-maker.js +1 -0
  444. package/dist/utils/types/hop-chains.d.ts +8 -0
  445. package/dist/utils/types/hop-chains.js +1 -0
  446. package/dist/utils/types/index.d.ts +13 -0
  447. package/dist/utils/types/index.js +1 -0
  448. package/dist/utils/types/lp-inspect.d.ts +1 -0
  449. package/dist/utils/types/lp-inspect.js +1 -0
  450. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  451. package/dist/utils/types/mpc-exclusive.js +1 -0
  452. package/dist/utils/types/private-sale.d.ts +1 -0
  453. package/dist/utils/types/private-sale.js +1 -0
  454. package/dist/utils/types/quote-helpers.d.ts +1 -0
  455. package/dist/utils/types/quote-helpers.js +1 -0
  456. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  457. package/dist/utils/types/stealth-transfer.js +1 -0
  458. package/dist/utils/types/wallet.d.ts +25 -0
  459. package/dist/utils/types/wallet.js +1 -0
  460. package/dist/utils/wallet.d.ts +2 -25
  461. package/dist/utils/wallet.js +13 -10
  462. package/dist/vanity/index.d.ts +5 -0
  463. package/dist/vanity/index.js +5 -0
  464. package/package.json +160 -4
  465. package/src/abis/contracts/TaxToken.json +969 -0
  466. package/src/abis/contracts/TokenManager.json +836 -0
  467. package/src/abis/contracts/TokenManager2.json +136 -0
  468. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  469. package/dist/shared/abis/TaxToken.json +0 -105
  470. package/dist/shared/abis/TokenManager2.json +0 -60
  471. /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
  472. /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Flap Protocol 内盘捆绑换手(Merkle Bundle)
3
+ *
4
+ * 功能:钱包A卖出代币 → 钱包B买入相同数量 → 原子执行
5
+ */
6
+ import { ethers, Wallet, JsonRpcProvider } from 'ethers';
7
+ import { CommonBundleConfig } from '../../../utils/bundle-helpers.js';
8
+ import { type GeneratedWallet } from '../../../utils/wallet.js';
9
+ export declare const NATIVE_TRANSFER_GAS_LIMIT: 21055n;
10
+ export declare const ERC20_TRANSFER_GAS_LIMIT_HOP: 65000n;
11
+ export declare const BRIBE_GAS_LIMIT: 21000n;
12
+ /**
13
+ * 分发多跳路径信息
14
+ */
15
+ export type DisperseHopPath = {
16
+ targetAddress: string;
17
+ hopWallets: Wallet[];
18
+ hopWalletsInfo: GeneratedWallet[];
19
+ };
20
+ /**
21
+ * 生成分发多跳路径
22
+ */
23
+ export declare function generateDisperseHopPaths(targetAddresses: string[], hopCount: number, provider: JsonRpcProvider): DisperseHopPath[];
24
+ /**
25
+ * 构建原生代币多跳转账链
26
+ */
27
+ export declare function buildNativeHopChain(payer: Wallet, path: DisperseHopPath, finalAmount: bigint, gasPrice: bigint, chainId: number, txType: number, payerNonce: number): Promise<string[]>;
28
+ /**
29
+ * 构建 ERC20 多跳转账链
30
+ */
31
+ export declare function buildERC20HopChain(payer: Wallet, path: DisperseHopPath, erc20Address: string, erc20Amount: bigint, gasPrice: bigint, chainId: number, txType: number, payerNonce: number): Promise<string[]>;
32
+ /**
33
+ * 构建 BNB 多跳转账链(为 ERC20 中间钱包预留 gas)
34
+ */
35
+ export declare function buildBNBHopChainForERC20(payer: Wallet, path: DisperseHopPath, finalGasAmount: bigint, gasPrice: bigint, chainId: number, txType: number, payerNonce: number): Promise<string[]>;
36
+ export type UserType = 'v0' | 'v1';
37
+ export interface FlapSwapSignConfig {
38
+ rpcUrl: string;
39
+ gasLimit?: number | bigint;
40
+ gasLimitMultiplier?: number;
41
+ minGasPriceGwei?: number;
42
+ maxGasPriceGwei?: number;
43
+ txType?: 0 | 2;
44
+ chainId?: number;
45
+ reserveGasETH?: number;
46
+ skipQuoteOnError?: boolean;
47
+ skipApprovalCheck?: boolean;
48
+ bribeAmount?: number;
49
+ userType?: UserType;
50
+ }
51
+ /**
52
+ * 获取 Gas Limit
53
+ */
54
+ export declare function getGasLimit(config: FlapSwapSignConfig | FlapSwapConfig, defaultGas?: number): bigint;
55
+ export declare const ROUTER_ABI: string[];
56
+ export declare const ERC20_BALANCE_OF_ABI: string[];
57
+ export declare const APPROVE_INTERFACE: ethers.Interface;
58
+ export declare const BSC_PANCAKE_V2_ROUTER: "0x10ED43C718714eb63d5aA57B78B54704E256024E";
59
+ export declare const BSC_WBNB: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c";
60
+ export declare const MONAD_PANCAKE_V2_ROUTER = "0xb1bc24c34e88f7d43d5923034e3a14b24daacff9";
61
+ export declare const MONAD_WMON: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a";
62
+ /**
63
+ * 获取 ERC20 代币 → 原生代币的报价
64
+ * @param provider - Provider 实例
65
+ * @param tokenAddress - ERC20 代币地址
66
+ * @param tokenAmount - 代币数量(wei)
67
+ * @param chainId - 链 ID(56=BSC, 143=Monad)
68
+ * @returns 等值的原生代币数量(wei),失败返回 0n
69
+ */
70
+ export declare function getTokenToNativeQuote(provider: ethers.JsonRpcProvider, tokenAddress: string, tokenAmount: bigint, chainId: number): Promise<bigint>;
71
+ export type FlapChain = 'bsc' | 'xlayer' | 'base';
72
+ export interface FlapSwapConfig extends CommonBundleConfig {
73
+ apiKey: string;
74
+ customRpcUrl?: string;
75
+ bundleBlockOffset?: number;
76
+ reserveGasETH?: number;
77
+ skipQuoteOnError?: boolean;
78
+ waitForConfirmation?: boolean;
79
+ waitTimeoutMs?: number;
80
+ skipApprovalCheck?: boolean;
81
+ }
82
+ export interface FlapBundleSwapSignParams {
83
+ chain: FlapChain;
84
+ sellerPrivateKey: string;
85
+ sellAmount?: string;
86
+ sellPercentage?: number;
87
+ buyerPrivateKey: string;
88
+ tokenAddress: string;
89
+ config: FlapSwapSignConfig;
90
+ quoteToken?: string;
91
+ quoteTokenDecimals?: number;
92
+ startNonces?: number[];
93
+ }
94
+ export interface FlapBundleSwapParams {
95
+ chain: FlapChain;
96
+ sellerPrivateKey: string;
97
+ sellAmount?: string;
98
+ sellPercentage?: number;
99
+ buyerPrivateKey: string;
100
+ tokenAddress: string;
101
+ config: FlapSwapConfig;
102
+ }
103
+ /** ✅ Flap Swap 结果(简化版) */
104
+ export type FlapSwapResult = {
105
+ signedTransactions: string[];
106
+ profitHopWallets?: GeneratedWallet[];
107
+ metadata?: {
108
+ sellerAddress: string;
109
+ buyerAddress: string;
110
+ sellAmount: string;
111
+ buyAmount: string;
112
+ hasApproval?: boolean;
113
+ profitAmount?: string;
114
+ };
115
+ };
116
+ export type ChainContext = {
117
+ chainId: number;
118
+ nativeToken: string;
119
+ portalAddress: string;
120
+ provider: ethers.JsonRpcProvider;
121
+ };
122
+ export type QuoteResult = {
123
+ quotedNative: bigint;
124
+ minOutNative: bigint;
125
+ };
126
+ export type BuyerNeed = {
127
+ reserveGas: bigint;
128
+ buyerBalance: bigint;
129
+ buyerNeedTotal: bigint;
130
+ maxBuyerValue: bigint;
131
+ };
132
+ export type NoncePlan = {
133
+ sellerNonce: number;
134
+ buyerNonce: number;
135
+ bribeNonce?: number;
136
+ profitNonce?: number;
137
+ };
138
+ /**
139
+ * 获取链ID
140
+ */
141
+ export declare function getChainId(chain: FlapChain): number;
142
+ /**
143
+ * 获取原生代币名称
144
+ */
145
+ export declare function getNativeTokenName(chain: FlapChain): string;
146
+ /**
147
+ * Flap内盘捆绑换手
148
+ * ✅ 支持 quoteToken:传入 USDT 等地址时,卖出得到该代币,买入使用该代币
149
+ */
@@ -0,0 +1,259 @@
1
+ /**
2
+ * Flap Protocol 内盘捆绑换手(Merkle Bundle)
3
+ *
4
+ * 功能:钱包A卖出代币 → 钱包B买入相同数量 → 原子执行
5
+ */
6
+ import { ethers, Contract, Wallet } from 'ethers';
7
+ import { ADDRESSES } from '../../../shared/constants/index.js';
8
+ import { V2_ROUTER_QUOTE_ABI, ERC20_BALANCE_ABI, ERC20_ABI } from '../../abis/common.js';
9
+ import { generateWallets } from '../../../utils/wallet.js';
10
+ import { GAS_LIMITS, CHAINS } from '../../constants/index.js';
11
+ // ==================== 多跳转账常量(使用统一常量) ====================
12
+ export const NATIVE_TRANSFER_GAS_LIMIT = GAS_LIMITS.NATIVE_TRANSFER;
13
+ export const ERC20_TRANSFER_GAS_LIMIT_HOP = GAS_LIMITS.ERC20_TRANSFER;
14
+ export const BRIBE_GAS_LIMIT = GAS_LIMITS.BRIBE;
15
+ /**
16
+ * 生成分发多跳路径
17
+ */
18
+ export function generateDisperseHopPaths(targetAddresses, hopCount, provider) {
19
+ if (hopCount <= 0) {
20
+ return targetAddresses.map((addr) => ({
21
+ targetAddress: addr,
22
+ hopWallets: [],
23
+ hopWalletsInfo: [],
24
+ }));
25
+ }
26
+ return targetAddresses.map((targetAddress) => {
27
+ const hopWalletsInfo = generateWallets(hopCount);
28
+ const hopWallets = hopWalletsInfo.map((w) => new Wallet(w.privateKey, provider));
29
+ return { targetAddress, hopWallets, hopWalletsInfo };
30
+ });
31
+ }
32
+ /**
33
+ * 构建原生代币多跳转账链
34
+ */
35
+ export async function buildNativeHopChain(payer, path, finalAmount, gasPrice, chainId, txType, payerNonce) {
36
+ const signedTxs = [];
37
+ const hopCount = path.hopWallets.length;
38
+ if (hopCount === 0) {
39
+ signedTxs.push(await payer.signTransaction({
40
+ to: path.targetAddress,
41
+ value: finalAmount,
42
+ nonce: payerNonce,
43
+ gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
44
+ gasPrice,
45
+ chainId,
46
+ type: txType,
47
+ }));
48
+ return signedTxs;
49
+ }
50
+ const hopGasCost = NATIVE_TRANSFER_GAS_LIMIT * gasPrice;
51
+ // 计算每跳需要的金额
52
+ const amountsPerHop = [];
53
+ for (let i = 0; i < hopCount; i++) {
54
+ const remainingHops = hopCount - i;
55
+ amountsPerHop.push(finalAmount + hopGasCost * BigInt(remainingHops));
56
+ }
57
+ // payer → hop1
58
+ signedTxs.push(await payer.signTransaction({
59
+ to: path.hopWallets[0].address,
60
+ value: amountsPerHop[0],
61
+ nonce: payerNonce,
62
+ gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
63
+ gasPrice,
64
+ chainId,
65
+ type: txType,
66
+ }));
67
+ // hop1 → hop2 → ... → target
68
+ for (let i = 0; i < hopCount; i++) {
69
+ const fromWallet = path.hopWallets[i];
70
+ const toAddress = i === hopCount - 1 ? path.targetAddress : path.hopWallets[i + 1].address;
71
+ const amount = i === hopCount - 1 ? finalAmount : amountsPerHop[i + 1];
72
+ signedTxs.push(await fromWallet.signTransaction({
73
+ to: toAddress,
74
+ value: amount,
75
+ nonce: 0,
76
+ gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
77
+ gasPrice,
78
+ chainId,
79
+ type: txType,
80
+ }));
81
+ }
82
+ return signedTxs;
83
+ }
84
+ /**
85
+ * 构建 ERC20 多跳转账链
86
+ */
87
+ export async function buildERC20HopChain(payer, path, erc20Address, erc20Amount, gasPrice, chainId, txType, payerNonce) {
88
+ const signedTxs = [];
89
+ const hopCount = path.hopWallets.length;
90
+ const erc20Interface = new ethers.Interface(ERC20_ABI);
91
+ if (hopCount === 0) {
92
+ const data = erc20Interface.encodeFunctionData('transfer', [path.targetAddress, erc20Amount]);
93
+ signedTxs.push(await payer.signTransaction({
94
+ to: erc20Address,
95
+ data,
96
+ value: 0n,
97
+ nonce: payerNonce,
98
+ gasLimit: ERC20_TRANSFER_GAS_LIMIT_HOP,
99
+ gasPrice,
100
+ chainId,
101
+ type: txType,
102
+ }));
103
+ return signedTxs;
104
+ }
105
+ // payer → hop1
106
+ const firstData = erc20Interface.encodeFunctionData('transfer', [path.hopWallets[0].address, erc20Amount]);
107
+ signedTxs.push(await payer.signTransaction({
108
+ to: erc20Address,
109
+ data: firstData,
110
+ value: 0n,
111
+ nonce: payerNonce,
112
+ gasLimit: ERC20_TRANSFER_GAS_LIMIT_HOP,
113
+ gasPrice,
114
+ chainId,
115
+ type: txType,
116
+ }));
117
+ // hop1 → hop2 → ... → target (nonce=1,nonce=0 用于 BNB 转发)
118
+ for (let i = 0; i < hopCount; i++) {
119
+ const fromWallet = path.hopWallets[i];
120
+ const toAddress = i === hopCount - 1 ? path.targetAddress : path.hopWallets[i + 1].address;
121
+ const data = erc20Interface.encodeFunctionData('transfer', [toAddress, erc20Amount]);
122
+ signedTxs.push(await fromWallet.signTransaction({
123
+ to: erc20Address,
124
+ data,
125
+ value: 0n,
126
+ nonce: 1, // nonce=0 已用于 BNB 转发
127
+ gasLimit: ERC20_TRANSFER_GAS_LIMIT_HOP,
128
+ gasPrice,
129
+ chainId,
130
+ type: txType,
131
+ }));
132
+ }
133
+ return signedTxs;
134
+ }
135
+ /**
136
+ * 构建 BNB 多跳转账链(为 ERC20 中间钱包预留 gas)
137
+ */
138
+ export async function buildBNBHopChainForERC20(payer, path, finalGasAmount, gasPrice, chainId, txType, payerNonce) {
139
+ const signedTxs = [];
140
+ const hopCount = path.hopWallets.length;
141
+ if (hopCount === 0) {
142
+ return signedTxs;
143
+ }
144
+ const hopGasCost = NATIVE_TRANSFER_GAS_LIMIT * gasPrice;
145
+ const erc20GasCost = ERC20_TRANSFER_GAS_LIMIT_HOP * gasPrice;
146
+ const gasPerHop = hopGasCost + erc20GasCost * 2n;
147
+ const amountsPerHop = [];
148
+ for (let i = 0; i < hopCount; i++) {
149
+ const remainingHops = hopCount - i;
150
+ amountsPerHop.push(finalGasAmount + gasPerHop * BigInt(remainingHops));
151
+ }
152
+ // payer → hop1
153
+ signedTxs.push(await payer.signTransaction({
154
+ to: path.hopWallets[0].address,
155
+ value: amountsPerHop[0],
156
+ nonce: payerNonce,
157
+ gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
158
+ gasPrice,
159
+ chainId,
160
+ type: txType,
161
+ }));
162
+ // hop1 → hop2 → ... → target (nonce=0)
163
+ for (let i = 0; i < hopCount; i++) {
164
+ const fromWallet = path.hopWallets[i];
165
+ const toAddress = i === hopCount - 1 ? path.targetAddress : path.hopWallets[i + 1].address;
166
+ const amount = i === hopCount - 1 ? finalGasAmount : amountsPerHop[i + 1];
167
+ signedTxs.push(await fromWallet.signTransaction({
168
+ to: toAddress,
169
+ value: amount,
170
+ nonce: 0,
171
+ gasLimit: NATIVE_TRANSFER_GAS_LIMIT,
172
+ gasPrice,
173
+ chainId,
174
+ type: txType,
175
+ }));
176
+ }
177
+ return signedTxs;
178
+ }
179
+ /**
180
+ * 获取 Gas Limit
181
+ */
182
+ export function getGasLimit(config, defaultGas = 500000) {
183
+ if (config.gasLimit !== undefined) {
184
+ return typeof config.gasLimit === 'bigint' ? config.gasLimit : BigInt(config.gasLimit);
185
+ }
186
+ const multiplier = config.gasLimitMultiplier ?? 1.0;
187
+ return BigInt(Math.ceil(defaultGas * multiplier));
188
+ }
189
+ // ✅ ABI 别名
190
+ export const ROUTER_ABI = V2_ROUTER_QUOTE_ABI;
191
+ export const ERC20_BALANCE_OF_ABI = ERC20_BALANCE_ABI;
192
+ export const APPROVE_INTERFACE = new ethers.Interface(['function approve(address,uint256) returns (bool)']);
193
+ // ✅ 链常量
194
+ export const BSC_PANCAKE_V2_ROUTER = ADDRESSES.BSC.PancakeV2Router;
195
+ export const BSC_WBNB = ADDRESSES.BSC.WBNB;
196
+ export const MONAD_PANCAKE_V2_ROUTER = '0xb1bc24c34e88f7d43d5923034e3a14b24daacff9';
197
+ export const MONAD_WMON = ADDRESSES.MONAD.WMON;
198
+ /**
199
+ * 获取 ERC20 代币 → 原生代币的报价
200
+ * @param provider - Provider 实例
201
+ * @param tokenAddress - ERC20 代币地址
202
+ * @param tokenAmount - 代币数量(wei)
203
+ * @param chainId - 链 ID(56=BSC, 143=Monad)
204
+ * @returns 等值的原生代币数量(wei),失败返回 0n
205
+ */
206
+ export async function getTokenToNativeQuote(provider, tokenAddress, tokenAmount, chainId) {
207
+ if (tokenAmount <= 0n)
208
+ return 0n;
209
+ try {
210
+ if (chainId === CHAINS.BSC.chainId) {
211
+ // BSC: 使用 PancakeSwap V2 Router
212
+ const router = new Contract(BSC_PANCAKE_V2_ROUTER, ROUTER_ABI, provider);
213
+ const amounts = await router.getAmountsOut(tokenAmount, [tokenAddress, BSC_WBNB]);
214
+ return amounts[1];
215
+ }
216
+ if (chainId === CHAINS.MONAD.chainId) {
217
+ // ✅ Monad: 使用 PancakeSwap V2 Router
218
+ const router = new Contract(MONAD_PANCAKE_V2_ROUTER, ROUTER_ABI, provider);
219
+ const amounts = await router.getAmountsOut(tokenAmount, [tokenAddress, MONAD_WMON]);
220
+ return amounts[1];
221
+ }
222
+ // ✅ Base (8453) / XLayer (196) 等链暂不支持 V2 报价,返回 0
223
+ return 0n;
224
+ }
225
+ catch {
226
+ // 报价失败返回 0(可能是流动性不足或路径不存在)
227
+ return 0n;
228
+ }
229
+ }
230
+ /**
231
+ * 获取链ID
232
+ */
233
+ export function getChainId(chain) {
234
+ switch (chain) {
235
+ case 'bsc':
236
+ return 56;
237
+ case 'xlayer':
238
+ return 196;
239
+ case 'base':
240
+ return 8453;
241
+ }
242
+ }
243
+ /**
244
+ * 获取原生代币名称
245
+ */
246
+ export function getNativeTokenName(chain) {
247
+ switch (chain) {
248
+ case 'bsc':
249
+ return 'BNB';
250
+ case 'xlayer':
251
+ return 'OKB';
252
+ case 'base':
253
+ return 'ETH';
254
+ }
255
+ }
256
+ /**
257
+ * Flap内盘捆绑换手
258
+ * ✅ 支持 quoteToken:传入 USDT 等地址时,卖出得到该代币,买入使用该代币
259
+ */
@@ -1,74 +1,5 @@
1
- /**
2
- * Flap Protocol 内盘捆绑换手(Merkle Bundle)
3
- *
4
- * 功能:钱包A卖出代币 → 钱包B买入相同数量 → 原子执行
5
- */
6
- import { CommonBundleConfig } from '../../../utils/bundle-helpers.js';
7
- import { type GeneratedWallet } from '../../../utils/wallet.js';
8
- export type UserType = 'v0' | 'v1';
9
- export interface FlapSwapSignConfig {
10
- rpcUrl: string;
11
- gasLimit?: number | bigint;
12
- gasLimitMultiplier?: number;
13
- minGasPriceGwei?: number;
14
- maxGasPriceGwei?: number;
15
- txType?: 0 | 2;
16
- chainId?: number;
17
- reserveGasETH?: number;
18
- skipQuoteOnError?: boolean;
19
- skipApprovalCheck?: boolean;
20
- bribeAmount?: number;
21
- userType?: UserType;
22
- }
23
- export type FlapChain = 'bsc' | 'xlayer' | 'base';
24
- export interface FlapSwapConfig extends CommonBundleConfig {
25
- apiKey: string;
26
- customRpcUrl?: string;
27
- bundleBlockOffset?: number;
28
- reserveGasETH?: number;
29
- skipQuoteOnError?: boolean;
30
- waitForConfirmation?: boolean;
31
- waitTimeoutMs?: number;
32
- skipApprovalCheck?: boolean;
33
- }
34
- export interface FlapBundleSwapSignParams {
35
- chain: FlapChain;
36
- sellerPrivateKey: string;
37
- sellAmount?: string;
38
- sellPercentage?: number;
39
- buyerPrivateKey: string;
40
- tokenAddress: string;
41
- config: FlapSwapSignConfig;
42
- quoteToken?: string;
43
- quoteTokenDecimals?: number;
44
- startNonces?: number[];
45
- }
46
- export interface FlapBundleSwapParams {
47
- chain: FlapChain;
48
- sellerPrivateKey: string;
49
- sellAmount?: string;
50
- sellPercentage?: number;
51
- buyerPrivateKey: string;
52
- tokenAddress: string;
53
- config: FlapSwapConfig;
54
- }
55
- /** ✅ Flap Swap 结果(简化版) */
56
- export type FlapSwapResult = {
57
- signedTransactions: string[];
58
- profitHopWallets?: GeneratedWallet[];
59
- metadata?: {
60
- sellerAddress: string;
61
- buyerAddress: string;
62
- sellAmount: string;
63
- buyAmount: string;
64
- hasApproval?: boolean;
65
- profitAmount?: string;
66
- };
67
- };
68
- /**
69
- * Flap内盘捆绑换手
70
- * ✅ 支持 quoteToken:传入 USDT 等地址时,卖出得到该代币,买入使用该代币
71
- */
1
+ import type { GeneratedWallet } from '../../../utils/wallet.js';
2
+ import { FlapBundleSwapSignParams, FlapChain, FlapSwapResult, FlapSwapSignConfig } from './swap-helpers.js';
72
3
  export declare function flapBundleSwapMerkle(params: FlapBundleSwapSignParams): Promise<FlapSwapResult>;
73
4
  /**
74
5
  * Flap 批量换手参数(一卖多买)