four-flap-meme-sdk 1.9.49 → 2.0.0

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 (530) 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/abis/common.js +74 -68
  5. package/dist/abis/flap/vault.js +9 -7
  6. package/dist/abis/index.d.ts +3 -4
  7. package/dist/abis/index.js +3 -4
  8. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  9. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  10. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
  11. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  12. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
  13. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  14. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  15. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  16. package/dist/bundle-core/config-helpers.d.ts +36 -0
  17. package/dist/bundle-core/config-helpers.js +57 -0
  18. package/dist/bundle-core/errors.d.ts +50 -0
  19. package/dist/bundle-core/errors.js +34 -0
  20. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  21. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  22. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  23. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  24. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  25. package/dist/bundle-core/four-meme/core.js +515 -0
  26. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  27. package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
  28. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  29. package/dist/bundle-core/four-meme/private.js +465 -0
  30. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  31. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  32. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  33. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  34. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  35. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  36. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  37. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  38. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  39. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  40. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  41. package/dist/bundle-core/four-meme/swap.js +505 -0
  42. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  43. package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
  44. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  45. package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
  46. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  47. package/dist/bundle-core/four-meme/types/index.js +1 -0
  48. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  49. package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
  50. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  51. package/dist/bundle-core/four-meme/types.js +1 -0
  52. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  53. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  54. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  55. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  56. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  57. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  58. package/dist/bundle-core/index.d.ts +8 -0
  59. package/dist/bundle-core/index.js +8 -0
  60. package/dist/bundle-core/internal.d.ts +21 -0
  61. package/dist/bundle-core/internal.js +182 -0
  62. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  63. package/dist/bundle-core/sign-context-helpers.js +67 -0
  64. package/dist/bundle-core/submit.d.ts +293 -0
  65. package/dist/bundle-core/submit.js +727 -0
  66. package/dist/bundle-core/types/index.d.ts +8 -0
  67. package/dist/bundle-core/types/index.js +1 -0
  68. package/dist/bundle-core/types.d.ts +1 -0
  69. package/dist/bundle-core/types.js +1 -0
  70. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  71. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -116
  72. package/dist/chains/bsc/four/config.d.ts +5 -70
  73. package/dist/chains/bsc/four/config.js +2 -115
  74. package/dist/chains/bsc/four/core.d.ts +1 -4
  75. package/dist/chains/bsc/four/core.js +1 -589
  76. package/dist/chains/bsc/four/disperse.d.ts +12 -0
  77. package/dist/chains/bsc/four/disperse.js +470 -0
  78. package/dist/chains/bsc/four/index.d.ts +6 -6
  79. package/dist/chains/bsc/four/index.js +6 -6
  80. package/dist/chains/bsc/four/internal.d.ts +2 -50
  81. package/dist/chains/bsc/four/internal.js +2 -237
  82. package/dist/chains/bsc/four/pairwise.d.ts +7 -0
  83. package/dist/chains/bsc/four/pairwise.js +308 -0
  84. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  85. package/dist/chains/bsc/four/pancake-proxy.js +1 -688
  86. package/dist/chains/bsc/four/private.d.ts +1 -27
  87. package/dist/chains/bsc/four/private.js +1 -477
  88. package/dist/chains/bsc/four/submit.d.ts +2 -315
  89. package/dist/chains/bsc/four/submit.js +2 -746
  90. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  91. package/dist/chains/bsc/four/swap-buy-first.js +2 -506
  92. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  93. package/dist/chains/bsc/four/swap-internal.js +1 -18
  94. package/dist/chains/bsc/four/swap.d.ts +2 -144
  95. package/dist/chains/bsc/four/swap.js +2 -760
  96. package/dist/chains/bsc/four/sweep.d.ts +13 -0
  97. package/dist/chains/bsc/four/sweep.js +788 -0
  98. package/dist/chains/bsc/four/types.d.ts +1 -476
  99. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  100. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  101. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  102. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  103. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  104. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  105. package/dist/chains/bsc/four/utils.d.ts +5 -18
  106. package/dist/chains/bsc/four/utils.js +5 -1534
  107. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  108. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  109. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  110. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -207
  111. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  112. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  113. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  114. package/dist/chains/bsc/pancake/bundle-swap.js +111 -686
  115. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  116. package/dist/chains/bsc/pancake/index.js +1 -3
  117. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  118. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  119. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  120. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  121. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  122. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  123. package/dist/chains/eni/batch-router/transfer.js +54 -23
  124. package/dist/chains/eni/batch-router/utils.js +32 -6
  125. package/dist/chains/eni/bundler/sign.js +4 -4
  126. package/dist/chains/eni/bundler/submit.js +1 -4
  127. package/dist/chains/eni/constants.js +1 -1
  128. package/dist/chains/eni/index.d.ts +1 -1
  129. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  130. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  131. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  132. package/dist/chains/eni/platforms/daoaas/meta.js +8 -4
  133. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -43
  134. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  135. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  136. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  137. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  138. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -47
  139. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  140. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  141. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  142. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  143. package/dist/chains/eni/platforms/iro/index.js +4 -4
  144. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  145. package/dist/chains/eni/platforms/iro/token.js +107 -31
  146. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  147. package/dist/chains/eni/submit.js +5 -13
  148. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  149. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -20
  150. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  151. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  152. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -56
  153. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  154. package/dist/chains/xlayer/eip7702/bundle-sell.js +26 -74
  155. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  156. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -68
  157. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  158. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  159. package/dist/chains/xlayer/eip7702/index.d.ts +27 -46
  160. package/dist/chains/xlayer/eip7702/index.js +27 -81
  161. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  162. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  163. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  164. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +58 -291
  165. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  166. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  167. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  168. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  169. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  170. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  171. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  172. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  173. package/dist/chains/xlayer/eip7702/volume.js +83 -158
  174. package/dist/chains/xlayer/eoa/constants.js +1 -1
  175. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  176. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  177. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  178. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  179. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +64 -276
  180. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  181. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +14 -14
  182. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  183. package/dist/chains/xlayer/eoa/index.js +8 -23
  184. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  185. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  186. package/dist/chains/xlayer/eoa/types-core.d.ts +363 -0
  187. package/dist/chains/xlayer/eoa/types-core.js +53 -0
  188. package/dist/chains/xlayer/eoa/types-create.d.ts +413 -0
  189. package/dist/chains/xlayer/eoa/types-create.js +9 -0
  190. package/dist/chains/xlayer/eoa/types-volume.d.ts +209 -0
  191. package/dist/chains/xlayer/eoa/types-volume.js +13 -0
  192. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  193. package/dist/chains/xlayer/eoa/types.js +1 -3
  194. package/dist/contracts/helper3.d.ts +20 -17
  195. package/dist/contracts/helper3.js +56 -20
  196. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  197. package/dist/contracts/tm-bundle-helpers.js +72 -0
  198. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  199. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -117
  200. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -70
  201. package/dist/contracts/tm-bundle-merkle/config.js +2 -115
  202. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  203. package/dist/contracts/tm-bundle-merkle/core.js +1 -588
  204. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  205. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  206. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -50
  207. package/dist/contracts/tm-bundle-merkle/internal.js +2 -236
  208. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  209. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -687
  210. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  211. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  212. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  213. package/dist/contracts/tm-bundle-merkle/submit.js +3 -919
  214. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  215. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -505
  216. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  217. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  218. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  219. package/dist/contracts/tm-bundle-merkle/swap.js +2 -757
  220. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  221. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  222. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  223. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  224. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  225. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  226. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  227. package/dist/contracts/tm-bundle-merkle/utils.d.ts +5 -6
  228. package/dist/contracts/tm-bundle-merkle/utils.js +5 -6
  229. package/dist/contracts/tm-bundle.d.ts +3 -51
  230. package/dist/contracts/tm-bundle.js +102 -142
  231. package/dist/contracts/tm.d.ts +3 -2
  232. package/dist/contracts/tm.js +36 -32
  233. package/dist/contracts/tm1.js +9 -4
  234. package/dist/contracts/tm2.js +9 -4
  235. package/dist/dex/direct-router-helpers.d.ts +264 -0
  236. package/dist/dex/direct-router-helpers.js +539 -0
  237. package/dist/dex/direct-router.d.ts +3 -125
  238. package/dist/dex/direct-router.js +237 -652
  239. package/dist/dex/types.d.ts +81 -0
  240. package/dist/dex/types.js +1 -0
  241. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  242. package/dist/exports/root-bundle-and-tooling.js +30 -0
  243. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  244. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  245. package/dist/exports/root-foundations.d.ts +35 -0
  246. package/dist/exports/root-foundations.js +70 -0
  247. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  248. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  249. package/dist/flows/create.d.ts +2 -2
  250. package/dist/flows/create.js +6 -6
  251. package/dist/flows/index.d.ts +1 -0
  252. package/dist/flows/index.js +1 -0
  253. package/dist/index.d.ts +20 -91
  254. package/dist/index.js +20 -215
  255. package/dist/shared/abis/common.d.ts +2 -83
  256. package/dist/shared/abis/common.js +2 -252
  257. package/dist/shared/abis/index.d.ts +5 -6
  258. package/dist/shared/abis/index.js +5 -7
  259. package/dist/shared/clients/blockrazor.js +41 -24
  260. package/dist/shared/clients/club48.js +30 -26
  261. package/dist/shared/clients/emitservice.js +2 -0
  262. package/dist/shared/clients/four.js +23 -18
  263. package/dist/shared/clients/index.d.ts +8 -0
  264. package/dist/shared/clients/index.js +8 -0
  265. package/dist/shared/clients/merkle.js +26 -30
  266. package/dist/shared/constants/addresses.d.ts +1 -1
  267. package/dist/shared/constants/addresses.js +11 -2
  268. package/dist/shared/constants/chains.d.ts +1 -1
  269. package/dist/shared/constants/chains.js +1 -1
  270. package/dist/shared/constants/gas.d.ts +1 -1
  271. package/dist/shared/constants/gas.js +2 -6
  272. package/dist/shared/constants/index.d.ts +1 -0
  273. package/dist/shared/constants/index.js +1 -0
  274. package/dist/shared/constants/quote.d.ts +30 -0
  275. package/dist/shared/constants/quote.js +37 -0
  276. package/dist/shared/flap/__tests__/curve.test.js +3 -3
  277. package/dist/shared/flap/abi.js +1 -1
  278. package/dist/shared/flap/constants.d.ts +1 -1
  279. package/dist/shared/flap/constants.js +2 -2
  280. package/dist/shared/flap/curve.js +3 -0
  281. package/dist/shared/flap/errors.d.ts +1 -4
  282. package/dist/shared/flap/errors.js +21 -3
  283. package/dist/shared/flap/index.d.ts +2 -2
  284. package/dist/shared/flap/index.js +2 -2
  285. package/dist/shared/flap/meta.d.ts +16 -18
  286. package/dist/shared/flap/meta.js +14 -26
  287. package/dist/shared/flap/permit.js +6 -5
  288. package/dist/shared/flap/pinata.d.ts +9 -2
  289. package/dist/shared/flap/pinata.js +20 -18
  290. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  291. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  292. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  293. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  294. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  295. package/dist/shared/flap/portal-bundle-merkle/core.js +66 -156
  296. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +81 -86
  297. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  298. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  299. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  300. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  301. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  302. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  303. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  304. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  305. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  306. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  307. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  308. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  309. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  310. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +73 -3
  311. package/dist/shared/flap/portal-bundle-merkle/utils-helpers.d.ts +100 -0
  312. package/dist/shared/flap/portal-bundle-merkle/utils-helpers.js +133 -0
  313. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  314. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  315. package/dist/shared/flap/portal-bundle.js +54 -42
  316. package/dist/shared/flap/portal.js +32 -10
  317. package/dist/shared/flap/vanity.js +4 -7
  318. package/dist/shared/flap/vault.d.ts +1 -1
  319. package/dist/shared/flap/vault.js +54 -48
  320. package/dist/shared/flap 2/__tests__/curve.test.d.ts +1 -0
  321. package/dist/shared/flap 2/portal-bundle-merkle/types.js +1 -0
  322. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  323. package/dist/shared/foundation/dex/v3-path.js +35 -0
  324. package/dist/shared/foundation/gas/bundle-gas.d.ts +39 -0
  325. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  326. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  327. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  328. package/dist/shared/foundation/index.d.ts +13 -0
  329. package/dist/shared/foundation/index.js +12 -0
  330. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  331. package/dist/shared/foundation/nonce/nonce-manager.js +180 -0
  332. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  333. package/dist/shared/foundation/normalize-unknown.js +29 -0
  334. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  335. package/dist/shared/foundation/sdk-logger.js +12 -0
  336. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  337. package/dist/shared/foundation/tx/build-request.js +25 -0
  338. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  339. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  340. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
  341. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  342. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  343. package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
  344. package/dist/shared/foundation/types/erc20.d.ts +65 -0
  345. package/dist/shared/foundation/types/erc20.js +1 -0
  346. package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
  347. package/dist/shared/foundation/types/holders-maker.js +1 -0
  348. package/dist/shared/foundation/types/index.d.ts +7 -0
  349. package/dist/shared/foundation/types/index.js +1 -0
  350. package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
  351. package/dist/shared/foundation/types/lp-inspect.js +1 -0
  352. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  353. package/dist/shared/foundation/types/multicall.js +1 -0
  354. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  355. package/dist/shared/foundation/types/private-sale.js +1 -0
  356. package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
  357. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  358. package/dist/shared/four/tax-token.d.ts +1 -1
  359. package/dist/shared/four/tax-token.js +27 -7
  360. package/dist/shared/index.d.ts +4 -0
  361. package/dist/shared/index.js +4 -0
  362. package/dist/types/distribute.d.ts +72 -0
  363. package/dist/types/distribute.js +1 -0
  364. package/dist/types 2/errors.d.ts +27 -0
  365. package/dist/types 2/errors.js +34 -0
  366. package/dist/utils/airdrop-sweep-types.d.ts +1 -0
  367. package/dist/utils/airdrop-sweep-types.js +1 -0
  368. package/dist/utils/airdrop-sweep.d.ts +4 -76
  369. package/dist/utils/airdrop-sweep.js +38 -52
  370. package/dist/utils/bundle-helpers.d.ts +9 -243
  371. package/dist/utils/bundle-helpers.js +10 -584
  372. package/dist/utils/constants.d.ts +5 -61
  373. package/dist/utils/constants.js +5 -80
  374. package/dist/utils/contract-factory.d.ts +2 -4
  375. package/dist/utils/contract-factory.js +25 -18
  376. package/dist/utils/erc20-types.d.ts +1 -0
  377. package/dist/utils/erc20-types.js +1 -0
  378. package/dist/utils/erc20.d.ts +8 -90
  379. package/dist/utils/erc20.js +94 -153
  380. package/dist/utils/errors.d.ts +10 -22
  381. package/dist/utils/errors.js +61 -79
  382. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  383. package/dist/utils/holders-maker/addresses.js +15 -0
  384. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  385. package/dist/utils/holders-maker/buy-tx.js +278 -0
  386. package/dist/utils/holders-maker/constants.d.ts +6 -0
  387. package/dist/utils/holders-maker/constants.js +7 -0
  388. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  389. package/dist/utils/holders-maker/disperse.js +90 -0
  390. package/dist/utils/holders-maker/routing.d.ts +4 -0
  391. package/dist/utils/holders-maker/routing.js +45 -0
  392. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  393. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  394. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  395. package/dist/utils/holders-maker-helpers.js +9 -0
  396. package/dist/utils/holders-maker-types.d.ts +1 -0
  397. package/dist/utils/holders-maker-types.js +1 -0
  398. package/dist/utils/holders-maker.d.ts +2 -138
  399. package/dist/utils/holders-maker.js +23 -651
  400. package/dist/utils/hop-chains.d.ts +35 -0
  401. package/dist/utils/hop-chains.js +215 -0
  402. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  403. package/dist/utils/lp-inspect-helpers.js +109 -0
  404. package/dist/utils/lp-inspect-types.d.ts +1 -0
  405. package/dist/utils/lp-inspect-types.js +1 -0
  406. package/dist/utils/lp-inspect.d.ts +2 -112
  407. package/dist/utils/lp-inspect.js +63 -195
  408. package/dist/utils/mpcExclusive.d.ts +2 -5
  409. package/dist/utils/mpcExclusive.js +4 -3
  410. package/dist/utils/private-sale-types.d.ts +1 -0
  411. package/dist/utils/private-sale-types.js +1 -0
  412. package/dist/utils/private-sale.d.ts +2 -58
  413. package/dist/utils/private-sale.js +2 -7
  414. package/dist/utils/provider-factory.d.ts +4 -0
  415. package/dist/utils/provider-factory.js +10 -0
  416. package/dist/utils/quote-helpers-types.d.ts +1 -0
  417. package/dist/utils/quote-helpers-types.js +1 -0
  418. package/dist/utils/quote-helpers.d.ts +4 -45
  419. package/dist/utils/quote-helpers.js +15 -65
  420. package/dist/utils/stealth-transfer.d.ts +2 -28
  421. package/dist/utils/stealth-transfer.js +30 -14
  422. package/dist/utils/swap-helpers.d.ts +0 -3
  423. package/dist/utils/swap-helpers.js +6 -9
  424. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  425. package/dist/utils/types/airdrop-sweep.js +1 -0
  426. package/dist/utils/types/contract-factory.d.ts +1 -0
  427. package/dist/utils/types/contract-factory.js +1 -0
  428. package/dist/utils/types/erc20.d.ts +1 -0
  429. package/dist/utils/types/erc20.js +1 -0
  430. package/dist/utils/types/errors.d.ts +1 -0
  431. package/dist/utils/types/errors.js +1 -0
  432. package/dist/utils/types/holders-maker.d.ts +1 -0
  433. package/dist/utils/types/holders-maker.js +1 -0
  434. package/dist/utils/types/hop-chains.d.ts +8 -0
  435. package/dist/utils/types/hop-chains.js +1 -0
  436. package/dist/utils/types/index.d.ts +13 -0
  437. package/dist/utils/types/index.js +1 -0
  438. package/dist/utils/types/lp-inspect.d.ts +1 -0
  439. package/dist/utils/types/lp-inspect.js +1 -0
  440. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  441. package/dist/utils/types/mpc-exclusive.js +1 -0
  442. package/dist/utils/types/private-sale.d.ts +1 -0
  443. package/dist/utils/types/private-sale.js +1 -0
  444. package/dist/utils/types/quote-helpers.d.ts +1 -0
  445. package/dist/utils/types/quote-helpers.js +1 -0
  446. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  447. package/dist/utils/types/stealth-transfer.js +1 -0
  448. package/dist/utils/types/wallet.d.ts +25 -0
  449. package/dist/utils/types/wallet.js +1 -0
  450. package/dist/utils/wallet.d.ts +2 -25
  451. package/dist/utils/wallet.js +9 -10
  452. package/package.json +55 -2
  453. package/src/abis/contracts/TaxToken.json +969 -0
  454. package/src/abis/contracts/TokenManager.json +836 -0
  455. package/src/abis/contracts/TokenManager2.json +136 -0
  456. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  457. /package/dist/{shared 2/flap/__tests__/curve.test.d.ts → bundle-core/__tests__/config-helpers.test.d.ts} +0 -0
  458. /package/dist/{shared 2/flap/portal-bundle-merkle/types.js → bundle-core/__tests__/facade-parity.test.d.ts} +0 -0
  459. /package/dist/{shared 2/abis → shared/abis 2}/TaxToken.json +0 -0
  460. /package/dist/{shared 2/abis → shared/abis 2}/TokenManager.json +0 -0
  461. /package/dist/{shared 2/abis → shared/abis 2}/TokenManager2.json +0 -0
  462. /package/dist/{shared 2/abis → shared/abis 2}/TokenManagerHelper3.json +0 -0
  463. /package/dist/{shared 2/abis → shared/abis 2}/common.d.ts +0 -0
  464. /package/dist/{shared 2/abis → shared/abis 2}/common.js +0 -0
  465. /package/dist/{shared 2/abis → shared/abis 2}/index.d.ts +0 -0
  466. /package/dist/{shared 2/abis → shared/abis 2}/index.js +0 -0
  467. /package/dist/{shared 2/clients → shared/clients 2}/blockrazor.d.ts +0 -0
  468. /package/dist/{shared 2/clients → shared/clients 2}/blockrazor.js +0 -0
  469. /package/dist/{shared 2/clients → shared/clients 2}/club48.d.ts +0 -0
  470. /package/dist/{shared 2/clients → shared/clients 2}/club48.js +0 -0
  471. /package/dist/{shared 2/clients → shared/clients 2}/emitservice.d.ts +0 -0
  472. /package/dist/{shared 2/clients → shared/clients 2}/emitservice.js +0 -0
  473. /package/dist/{shared 2/clients → shared/clients 2}/four.d.ts +0 -0
  474. /package/dist/{shared 2/clients → shared/clients 2}/four.js +0 -0
  475. /package/dist/{shared 2/clients → shared/clients 2}/merkle.d.ts +0 -0
  476. /package/dist/{shared 2/clients → shared/clients 2}/merkle.js +0 -0
  477. /package/dist/{shared 2/flap → shared/flap 2}/__tests__/curve.test.js +0 -0
  478. /package/dist/{shared 2/flap → shared/flap 2}/abi.d.ts +0 -0
  479. /package/dist/{shared 2/flap → shared/flap 2}/abi.js +0 -0
  480. /package/dist/{shared 2/flap → shared/flap 2}/constants.d.ts +0 -0
  481. /package/dist/{shared 2/flap → shared/flap 2}/constants.js +0 -0
  482. /package/dist/{shared 2/flap → shared/flap 2}/curve.d.ts +0 -0
  483. /package/dist/{shared 2/flap → shared/flap 2}/curve.js +0 -0
  484. /package/dist/{shared 2/flap → shared/flap 2}/errors.d.ts +0 -0
  485. /package/dist/{shared 2/flap → shared/flap 2}/errors.js +0 -0
  486. /package/dist/{shared 2/flap → shared/flap 2}/index.d.ts +0 -0
  487. /package/dist/{shared 2/flap → shared/flap 2}/index.js +0 -0
  488. /package/dist/{shared 2/flap → shared/flap 2}/ipfs.d.ts +0 -0
  489. /package/dist/{shared 2/flap → shared/flap 2}/ipfs.js +0 -0
  490. /package/dist/{shared 2/flap → shared/flap 2}/meta.d.ts +0 -0
  491. /package/dist/{shared 2/flap → shared/flap 2}/meta.js +0 -0
  492. /package/dist/{shared 2/flap → shared/flap 2}/permit.d.ts +0 -0
  493. /package/dist/{shared 2/flap → shared/flap 2}/permit.js +0 -0
  494. /package/dist/{shared 2/flap → shared/flap 2}/pinata.d.ts +0 -0
  495. /package/dist/{shared 2/flap → shared/flap 2}/pinata.js +0 -0
  496. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/config.d.ts +0 -0
  497. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/config.js +0 -0
  498. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/core.d.ts +0 -0
  499. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/core.js +0 -0
  500. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/create-to-dex.d.ts +0 -0
  501. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/create-to-dex.js +0 -0
  502. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/curve-to-dex.d.ts +0 -0
  503. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/curve-to-dex.js +0 -0
  504. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/index.d.ts +0 -0
  505. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/index.js +0 -0
  506. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/pancake-proxy.d.ts +0 -0
  507. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/pancake-proxy.js +0 -0
  508. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/private.d.ts +0 -0
  509. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/private.js +0 -0
  510. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap-buy-first.d.ts +0 -0
  511. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap-buy-first.js +0 -0
  512. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap.d.ts +0 -0
  513. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/swap.js +0 -0
  514. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/types.d.ts +0 -0
  515. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/utils.d.ts +0 -0
  516. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle-merkle/utils.js +0 -0
  517. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle.d.ts +0 -0
  518. /package/dist/{shared 2/flap → shared/flap 2}/portal-bundle.js +0 -0
  519. /package/dist/{shared 2/flap → shared/flap 2}/portal.d.ts +0 -0
  520. /package/dist/{shared 2/flap → shared/flap 2}/portal.js +0 -0
  521. /package/dist/{shared 2/flap → shared/flap 2}/vanity.d.ts +0 -0
  522. /package/dist/{shared 2/flap → shared/flap 2}/vanity.js +0 -0
  523. /package/dist/{shared 2/flap → shared/flap 2}/vault.d.ts +0 -0
  524. /package/dist/{shared 2/flap → shared/flap 2}/vault.js +0 -0
  525. /package/dist/{shared 2/four → shared/four 2}/index.d.ts +0 -0
  526. /package/dist/{shared 2/four → shared/four 2}/index.js +0 -0
  527. /package/dist/{shared 2/four → shared/four 2}/tax-token.d.ts +0 -0
  528. /package/dist/{shared 2/four → shared/four 2}/tax-token.js +0 -0
  529. /package/dist/{shared 2/index.d.ts → shared/index 2.js} +0 -0
  530. /package/dist/{shared 2/index.js → shared/index.d 2.ts} +0 -0
package/README.en.md CHANGED
@@ -29,6 +29,41 @@ Optional (use Pinata for IPFS uploads)
29
29
  npm i pinata
30
30
  ```
31
31
 
32
+ ## Package entry points (subpath imports)
33
+
34
+ The library is published as **ESM** (`dist` is produced by `npm run build`). The root import remains the default for full API access. For smaller dependency graphs, Node and bundlers that honor `package.json` **`exports`** may import:
35
+
36
+ **When to use which**
37
+
38
+ - **Root**: default for apps and examples that touch more than one SDK area.
39
+ - **Subpaths**: for scripts or libraries that intentionally depend on only one slice (constants, ABIs, error utilities, Merkle clients, etc.).
40
+
41
+ | Subpath | Purpose |
42
+ |---------|---------|
43
+ | `four-flap-meme-sdk` | Main entry — full surface |
44
+ | `four-flap-meme-sdk/chains` | Chain namespaces and helpers |
45
+ | `four-flap-meme-sdk/shared` | Cross-cutting modules: constants, `foundation`, `clients`, `FourUtils` |
46
+ | `four-flap-meme-sdk/clients` | HTTP / Merkle-related clients |
47
+ | `four-flap-meme-sdk/dex` | DEX helpers |
48
+ | `four-flap-meme-sdk/constants` | Chain config, gas, addresses, profit settings |
49
+ | `four-flap-meme-sdk/abis` | TokenManager JSON ABIs, common fragments, Flap ABIs (same as `src/abis` barrel) |
50
+ | `four-flap-meme-sdk/foundation` | Unknown-error normalization and optional loggers |
51
+ | `four-flap-meme-sdk/bundle-core` | Shared bundle core: `internal`, `submit`, `config-helpers` |
52
+ | `four-flap-meme-sdk/flows` | High-level flows (e.g. `createTokenFlow`) |
53
+
54
+ > **v2.0.0**: ambiguous root exports removed — see [docs/MIGRATION_EXPORTS.zh-CN.md](./docs/MIGRATION_EXPORTS.zh-CN.md).
55
+
56
+ ```typescript
57
+ import { CHAINS, GAS_LIMITS } from 'four-flap-meme-sdk/constants';
58
+ import { TokenManager } from 'four-flap-meme-sdk/abis';
59
+ import { normalizeUnknownError } from 'four-flap-meme-sdk/foundation';
60
+ ```
61
+
62
+ ### Documentation: alignment & backends
63
+
64
+ - **[docs/ALIGNMENT_STATUS.zh-CN.md](./docs/ALIGNMENT_STATUS.zh-CN.md)** — audit-style checklist (language: Chinese).
65
+ - **[docs/SUBMIT_BACKENDS.zh-CN.md](./docs/SUBMIT_BACKENDS.zh-CN.md)** — choosing Merkle, BlockRazor, direct RPC, ENI, 48.club, etc.
66
+
32
67
  ---
33
68
 
34
69
  ## Table of Contents
@@ -3503,7 +3538,7 @@ const permitData = await buildPermitPiggybackAuto(
3503
3538
  The SDK provides pre-configured addresses for all supported networks:
3504
3539
 
3505
3540
  ```typescript
3506
- import { CHAIN } from 'four-flap-meme-sdk';
3541
+ import { CHAINS } from 'four-flap-meme-sdk';
3507
3542
 
3508
3543
  // Use chain enum when calling SDK methods (addresses are handled internally)
3509
3544
  // Example:
@@ -3512,11 +3547,11 @@ import { CHAIN } from 'four-flap-meme-sdk';
3512
3547
  // await tryBuy('BSC', rpcUrl, token, amount, funds);
3513
3548
 
3514
3549
  // Chain information
3515
- console.log(CHAIN.BSC.chainId); // 56
3516
- console.log(CHAIN.BASE.chainId); // 8453
3517
- console.log(CHAIN.XLAYER.chainId); // 196
3518
- console.log(CHAIN.MORPH.chainId); // 2818
3519
- console.log(CHAIN.ARBITRUM_ONE.chainId); // 42161
3550
+ console.log(CHAINS.BSC.chainId); // 56
3551
+ console.log(CHAINS.BASE.chainId); // 8453
3552
+ console.log(CHAINS.XLAYER.chainId); // 196
3553
+ console.log(CHAINS.MORPH.chainId); // 2818
3554
+ console.log(CHAINS.ARBITRUM_ONE.chainId); // 42161
3520
3555
  ```
3521
3556
 
3522
3557
  ---
package/README.md CHANGED
@@ -20,6 +20,37 @@ npm i four-flap-meme-sdk ethers
20
20
 
21
21
  **要求**:Node.js >= 18, ESM, ethers v6
22
22
 
23
+ ### Package entry points (subpath imports)
24
+
25
+ The package ships **ESM** with `exports` in `package.json`. Use the default root import for full API coverage; use subpaths to narrow what your resolver loads (requires tooling that respects `exports`).
26
+
27
+ **When to use which**
28
+
29
+ - **Root import**: matches the docs; use when you need multiple surfaces (four.meme, Flap, bundles, several chains).
30
+ - **Subpaths**: use in scripts, internal packages, or constrained runtimes when you only need one vertical slice (constants, ABIs, error helpers, HTTP clients, etc.).
31
+
32
+ | Subpath | Purpose |
33
+ |---------|---------|
34
+ | `four-flap-meme-sdk` | Main entry — full surface (recommended default) |
35
+ | `four-flap-meme-sdk/chains` | Per-chain namespaces and chain helpers |
36
+ | `four-flap-meme-sdk/shared` | Shared layer: constants, `foundation`, `clients`, `FourUtils`, etc. |
37
+ | `four-flap-meme-sdk/clients` | HTTP / bundle / infra clients |
38
+ | `four-flap-meme-sdk/dex` | DEX helpers and types |
39
+ | `four-flap-meme-sdk/constants` | Chain IDs, gas limits, addresses, profit helpers — smallest config-only slice |
40
+ | `four-flap-meme-sdk/abis` | Compiled contract JSON ABIs, shared fragment ABIs, Flap-specific ABIs (`src/abis` entry) |
41
+ | `four-flap-meme-sdk/foundation` | `normalizeUnknownError`, `getErrorMessageFromUnknown`, injectable `SdkLogger` — no domain logic |
42
+
43
+ ```typescript
44
+ import { CHAINS, ADDRESSES } from 'four-flap-meme-sdk/constants';
45
+ import { TokenManager } from 'four-flap-meme-sdk/abis';
46
+ import { normalizeUnknownError } from 'four-flap-meme-sdk/foundation';
47
+ ```
48
+
49
+ ### Docs: architecture & submission paths
50
+
51
+ - **[docs/ALIGNMENT_STATUS.zh-CN.md](./docs/ALIGNMENT_STATUS.zh-CN.md)** — audit-style checklist (what is done vs backlog).
52
+ - **[docs/SUBMIT_BACKENDS.zh-CN.md](./docs/SUBMIT_BACKENDS.zh-CN.md)** — when to use Merkle vs BlockRazor vs direct RPC vs ENI / 48.club, etc.
53
+
23
54
  ## 获取 Merkle API Key
24
55
 
25
56
  从 [Merkle.io](https://merkle.io) 获取免费 API Key,用于 Bundle 服务。
package/README.zh-CN.md CHANGED
@@ -29,6 +29,41 @@ npm i four-flap-meme-sdk ethers
29
29
  npm i pinata
30
30
  ```
31
31
 
32
+ ## 包入口与子路径(按需引用)
33
+
34
+ 发布后包内为 **ESM**,`dist` 由 `npm run build` 生成。多数场景继续使用主入口即可;若希望缩小解析范围或只做配置层依赖,可选用 `package.json` 的 **`exports`** 子路径(需 Node/打包工具识别 `exports`)。
35
+
36
+ **如何选择**
37
+
38
+ - **主入口**:与文档示例一致;需要 four / Flap、Bundle、多链等组合能力时优先用它。
39
+ - **子路径**:在脚本、内部库或边缘运行时**只要某一竖切**(仅常量、仅 ABI、仅错误与日志、仅 HTTP 客户端等)时使用,以收敛依赖与解析面。
40
+
41
+ | 子路径 | 说明 |
42
+ |--------|------|
43
+ | `four-flap-meme-sdk` | 主入口,全量导出(默认推荐) |
44
+ | `four-flap-meme-sdk/chains` | 各链命名空间与链相关工具 |
45
+ | `four-flap-meme-sdk/shared` | 横向能力:常量、`foundation`、`clients`、`FourUtils` 等 |
46
+ | `four-flap-meme-sdk/clients` | Merkle / HTTP 等与 I/O 相关的客户端封装 |
47
+ | `four-flap-meme-sdk/dex` | DEX 路由与相关类型/辅助函数 |
48
+ | `four-flap-meme-sdk/constants` | 链 ID、Gas、常用地址、利润配置等常量(等价于深入 `shared` 中的常量模块,但更轻依赖面) |
49
+ | `four-flap-meme-sdk/abis` | 合约 JSON ABI(TokenManager 等)、公共片段 ABI、Flap 相关 ABI(与 `src/abis` 入口一致) |
50
+ | `four-flap-meme-sdk/foundation` | 错误规范化(`normalizeUnknownError` 等)与可选 `SdkLogger`,无业务逻辑 |
51
+ | `four-flap-meme-sdk/bundle-core` | Bundle 共享核心:`internal`、`submit`、`config-helpers` |
52
+ | `four-flap-meme-sdk/flows` | 高层流程(如 `createTokenFlow`) |
53
+
54
+ > **v2.0.0**:包根已移除 `TradeType` / `PROFIT_CONFIG` / `CHAIN` 等歧义导出,见 [docs/MIGRATION_EXPORTS.zh-CN.md](./docs/MIGRATION_EXPORTS.zh-CN.md)。
55
+
56
+ ```typescript
57
+ import { CHAINS, GAS_LIMITS } from 'four-flap-meme-sdk/constants';
58
+ import { TokenManager } from 'four-flap-meme-sdk/abis';
59
+ import { normalizeUnknownError } from 'four-flap-meme-sdk/foundation';
60
+ ```
61
+
62
+ ### 文档:架构对齐与提交路径
63
+
64
+ - **[docs/ALIGNMENT_STATUS.zh-CN.md](./docs/ALIGNMENT_STATUS.zh-CN.md)** — 与审计文档对照的总表(已完成 / 待办)。
65
+ - **[docs/SUBMIT_BACKENDS.zh-CN.md](./docs/SUBMIT_BACKENDS.zh-CN.md)** — 何时用 Merkle / BlockRazor / 直连 RPC / ENI / 48.club 等。
66
+
32
67
  ## 浏览器环境支持
33
68
 
34
69
  SDK 已内置 Cloudflare Workers 代理,**浏览器环境可直接使用,无需额外配置 CORS**:
@@ -4587,7 +4622,7 @@ const permitData = await buildPermitPiggybackAuto(
4587
4622
  SDK 提供所有支持网络的预配置地址:
4588
4623
 
4589
4624
  ```typescript
4590
- import { CHAIN } from 'four-flap-meme-sdk';
4625
+ import { CHAINS } from 'four-flap-meme-sdk';
4591
4626
 
4592
4627
  // 使用链枚举调用 SDK 方法(地址由 SDK 内部处理)
4593
4628
  // 示例:
@@ -4596,11 +4631,11 @@ import { CHAIN } from 'four-flap-meme-sdk';
4596
4631
  // await tryBuy('BSC', rpcUrl, token, amount, funds);
4597
4632
 
4598
4633
  // 链信息
4599
- console.log(CHAIN.BSC.chainId); // 56
4600
- console.log(CHAIN.BASE.chainId); // 8453
4601
- console.log(CHAIN.XLAYER.chainId); // 196
4602
- console.log(CHAIN.MORPH.chainId); // 2818
4603
- console.log(CHAIN.ARBITRUM_ONE.chainId); // 42161
4634
+ console.log(CHAINS.BSC.chainId); // 56
4635
+ console.log(CHAINS.BASE.chainId); // 8453
4636
+ console.log(CHAINS.XLAYER.chainId); // 196
4637
+ console.log(CHAINS.MORPH.chainId); // 2818
4638
+ console.log(CHAINS.ARBITRUM_ONE.chainId); // 42161
4604
4639
  ```
4605
4640
 
4606
4641
  ---
@@ -69,40 +69,44 @@ export const V2_ROUTER_QUOTE_ABI = [
69
69
  export const V3_ROUTER02_ABI = [
70
70
  // exactInputSingle - 单跳,不含 deadline
71
71
  {
72
- "inputs": [{
73
- "components": [
74
- { "name": "tokenIn", "type": "address" },
75
- { "name": "tokenOut", "type": "address" },
76
- { "name": "fee", "type": "uint24" },
77
- { "name": "recipient", "type": "address" },
78
- { "name": "amountIn", "type": "uint256" },
79
- { "name": "amountOutMinimum", "type": "uint256" },
80
- { "name": "sqrtPriceLimitX96", "type": "uint160" }
72
+ inputs: [
73
+ {
74
+ components: [
75
+ { name: 'tokenIn', type: 'address' },
76
+ { name: 'tokenOut', type: 'address' },
77
+ { name: 'fee', type: 'uint24' },
78
+ { name: 'recipient', type: 'address' },
79
+ { name: 'amountIn', type: 'uint256' },
80
+ { name: 'amountOutMinimum', type: 'uint256' },
81
+ { name: 'sqrtPriceLimitX96', type: 'uint160' },
81
82
  ],
82
- "name": "params",
83
- "type": "tuple"
84
- }],
85
- "name": "exactInputSingle",
86
- "outputs": [{ "name": "amountOut", "type": "uint256" }],
87
- "stateMutability": "payable",
88
- "type": "function"
83
+ name: 'params',
84
+ type: 'tuple',
85
+ },
86
+ ],
87
+ name: 'exactInputSingle',
88
+ outputs: [{ name: 'amountOut', type: 'uint256' }],
89
+ stateMutability: 'payable',
90
+ type: 'function',
89
91
  },
90
92
  // exactInput - 多跳,不含 deadline
91
93
  {
92
- "inputs": [{
93
- "components": [
94
- { "name": "path", "type": "bytes" },
95
- { "name": "recipient", "type": "address" },
96
- { "name": "amountIn", "type": "uint256" },
97
- { "name": "amountOutMinimum", "type": "uint256" }
94
+ inputs: [
95
+ {
96
+ components: [
97
+ { name: 'path', type: 'bytes' },
98
+ { name: 'recipient', type: 'address' },
99
+ { name: 'amountIn', type: 'uint256' },
100
+ { name: 'amountOutMinimum', type: 'uint256' },
98
101
  ],
99
- "name": "params",
100
- "type": "tuple"
101
- }],
102
- "name": "exactInput",
103
- "outputs": [{ "name": "amountOut", "type": "uint256" }],
104
- "stateMutability": "payable",
105
- "type": "function"
102
+ name: 'params',
103
+ type: 'tuple',
104
+ },
105
+ ],
106
+ name: 'exactInput',
107
+ outputs: [{ name: 'amountOut', type: 'uint256' }],
108
+ stateMutability: 'payable',
109
+ type: 'function',
106
110
  },
107
111
  // multicall - 带 deadline 版本
108
112
  'function multicall(uint256 deadline, bytes[] calldata data) external payable returns (bytes[] memory results)',
@@ -113,24 +117,26 @@ export const V3_ROUTER02_ABI = [
113
117
  export const V3_ROUTER_LEGACY_ABI = [
114
118
  // exactInputSingle - 包含 deadline
115
119
  {
116
- "inputs": [{
117
- "components": [
118
- { "name": "tokenIn", "type": "address" },
119
- { "name": "tokenOut", "type": "address" },
120
- { "name": "fee", "type": "uint24" },
121
- { "name": "recipient", "type": "address" },
122
- { "name": "deadline", "type": "uint256" },
123
- { "name": "amountIn", "type": "uint256" },
124
- { "name": "amountOutMinimum", "type": "uint256" },
125
- { "name": "sqrtPriceLimitX96", "type": "uint160" }
120
+ inputs: [
121
+ {
122
+ components: [
123
+ { name: 'tokenIn', type: 'address' },
124
+ { name: 'tokenOut', type: 'address' },
125
+ { name: 'fee', type: 'uint24' },
126
+ { name: 'recipient', type: 'address' },
127
+ { name: 'deadline', type: 'uint256' },
128
+ { name: 'amountIn', type: 'uint256' },
129
+ { name: 'amountOutMinimum', type: 'uint256' },
130
+ { name: 'sqrtPriceLimitX96', type: 'uint160' },
126
131
  ],
127
- "name": "params",
128
- "type": "tuple"
129
- }],
130
- "name": "exactInputSingle",
131
- "outputs": [{ "name": "amountOut", "type": "uint256" }],
132
- "stateMutability": "payable",
133
- "type": "function"
132
+ name: 'params',
133
+ type: 'tuple',
134
+ },
135
+ ],
136
+ name: 'exactInputSingle',
137
+ outputs: [{ name: 'amountOut', type: 'uint256' }],
138
+ stateMutability: 'payable',
139
+ type: 'function',
134
140
  },
135
141
  // multicall - 不带 deadline 版本
136
142
  'function multicall(bytes[] calldata data) external payable returns (bytes[] memory results)',
@@ -171,34 +177,34 @@ export const SWAP_ROUTER02_V2_ABI = [
171
177
  /** V3 QuoterV2 ABI */
172
178
  export const V3_QUOTER_ABI = [
173
179
  {
174
- "inputs": [{
175
- "components": [
176
- { "name": "tokenIn", "type": "address" },
177
- { "name": "tokenOut", "type": "address" },
178
- { "name": "amountIn", "type": "uint256" },
179
- { "name": "fee", "type": "uint24" },
180
- { "name": "sqrtPriceLimitX96", "type": "uint160" }
180
+ inputs: [
181
+ {
182
+ components: [
183
+ { name: 'tokenIn', type: 'address' },
184
+ { name: 'tokenOut', type: 'address' },
185
+ { name: 'amountIn', type: 'uint256' },
186
+ { name: 'fee', type: 'uint24' },
187
+ { name: 'sqrtPriceLimitX96', type: 'uint160' },
181
188
  ],
182
- "name": "params",
183
- "type": "tuple"
184
- }],
185
- "name": "quoteExactInputSingle",
186
- "outputs": [
187
- { "name": "amountOut", "type": "uint256" },
188
- { "name": "sqrtPriceX96After", "type": "uint160" },
189
- { "name": "initializedTicksCrossed", "type": "uint32" },
190
- { "name": "gasEstimate", "type": "uint256" }
189
+ name: 'params',
190
+ type: 'tuple',
191
+ },
191
192
  ],
192
- "stateMutability": "nonpayable",
193
- "type": "function"
194
- }
193
+ name: 'quoteExactInputSingle',
194
+ outputs: [
195
+ { name: 'amountOut', type: 'uint256' },
196
+ { name: 'sqrtPriceX96After', type: 'uint160' },
197
+ { name: 'initializedTicksCrossed', type: 'uint32' },
198
+ { name: 'gasEstimate', type: 'uint256' },
199
+ ],
200
+ stateMutability: 'nonpayable',
201
+ type: 'function',
202
+ },
195
203
  ];
196
204
  // ============================================================================
197
205
  // Uniswap V2 Factory & Pair ABI
198
206
  // ============================================================================
199
- export const V2_FACTORY_ABI = [
200
- 'function getPair(address tokenA, address tokenB) external view returns (address pair)',
201
- ];
207
+ export const V2_FACTORY_ABI = ['function getPair(address tokenA, address tokenB) external view returns (address pair)'];
202
208
  export const V2_PAIR_ABI = [
203
209
  'function token0() external view returns (address)',
204
210
  'function token1() external view returns (address)',
@@ -8,7 +8,8 @@ export const VAULT_PORTAL_ABI = [
8
8
  {
9
9
  type: 'function',
10
10
  name: 'newTaxTokenWithVault',
11
- inputs: [{
11
+ inputs: [
12
+ {
12
13
  name: 'params',
13
14
  type: 'tuple',
14
15
  internalType: 'struct IVaultPortalTypes.NewTaxTokenWithVaultParams',
@@ -37,7 +38,8 @@ export const VAULT_PORTAL_ABI = [
37
38
  { name: 'vaultFactory', type: 'address', internalType: 'address' },
38
39
  { name: 'vaultData', type: 'bytes', internalType: 'bytes' },
39
40
  ],
40
- }],
41
+ },
42
+ ],
41
43
  outputs: [{ name: 'token', type: 'address', internalType: 'address' }],
42
44
  stateMutability: 'payable',
43
45
  },
@@ -45,7 +47,8 @@ export const VAULT_PORTAL_ABI = [
45
47
  type: 'function',
46
48
  name: 'getVault',
47
49
  inputs: [{ name: 'taxToken', type: 'address', internalType: 'address' }],
48
- outputs: [{
50
+ outputs: [
51
+ {
49
52
  name: 'info',
50
53
  type: 'tuple',
51
54
  internalType: 'struct IVaultPortalTypes.VaultInfo',
@@ -56,7 +59,8 @@ export const VAULT_PORTAL_ABI = [
56
59
  { name: 'isOfficial', type: 'bool', internalType: 'bool' },
57
60
  { name: 'riskLevel', type: 'uint8', internalType: 'enum IVaultPortalTypes.RiskLevel' },
58
61
  ],
59
- }],
62
+ },
63
+ ],
60
64
  stateMutability: 'view',
61
65
  },
62
66
  {
@@ -77,9 +81,7 @@ export const VAULT_FACTORY_V2_ABI = [
77
81
  'function vaultDataSchema() public pure returns (tuple(string description, tuple(string name, string fieldType, string description, uint8 decimals)[] fields, bool isArray))',
78
82
  ];
79
83
  /** VaultBase V1 ABI */
80
- export const VAULT_BASE_ABI = [
81
- 'function description() public view returns (string)',
82
- ];
84
+ export const VAULT_BASE_ABI = ['function description() public view returns (string)'];
83
85
  /** VaultBaseV2 ABI */
84
86
  export const VAULT_BASE_V2_ABI = [
85
87
  ...VAULT_BASE_ABI,
@@ -1,9 +1,8 @@
1
1
  /**
2
- * 统一 ABI 管理入口
2
+ * 统一 ABI 管理入口(唯一数据源)
3
3
  *
4
- * 所有 ABI 集中在此目录下管理,每个 ABI 只有唯一来源。
5
- * 旧有文件(src/shared/abis/)保留为重新导出的兼容层。
4
+ * `src/shared/abis/` 保留为兼容 re-export facade。
6
5
  */
7
- export { TokenManager, TokenManager2, TokenManagerHelper3, TaxToken, } from './contracts/index.js';
6
+ export { TokenManager, TokenManager2, TokenManagerHelper3, TaxToken } from './contracts/index.js';
8
7
  export * from './common.js';
9
8
  export * from './flap/index.js';
@@ -1,11 +1,10 @@
1
1
  /**
2
- * 统一 ABI 管理入口
2
+ * 统一 ABI 管理入口(唯一数据源)
3
3
  *
4
- * 所有 ABI 集中在此目录下管理,每个 ABI 只有唯一来源。
5
- * 旧有文件(src/shared/abis/)保留为重新导出的兼容层。
4
+ * `src/shared/abis/` 保留为兼容 re-export facade。
6
5
  */
7
6
  // JSON ABI(编译后的合约接口)
8
- export { TokenManager, TokenManager2, TokenManagerHelper3, TaxToken, } from './contracts/index.js';
7
+ export { TokenManager, TokenManager2, TokenManagerHelper3, TaxToken } from './contracts/index.js';
9
8
  // 字符串格式公共 ABI
10
9
  export * from './common.js';
11
10
  // Flap 协议特定 ABI
@@ -0,0 +1,28 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { calculateBatchProfit, calculateProfit, getGasPriceMultiplier, getProfitRateBps, getTxType, } from '../config-helpers.js';
3
+ describe('bundle-core/config-helpers', () => {
4
+ it('getTxType defaults to legacy type-0', () => {
5
+ expect(getTxType({})).toBe(0);
6
+ expect(getTxType({ txType: 2 })).toBe(2);
7
+ });
8
+ it('getGasPriceMultiplier defaults to 50%', () => {
9
+ expect(getGasPriceMultiplier({})).toBe(50);
10
+ expect(getGasPriceMultiplier({ gasPriceMultiplierPercent: 120 })).toBe(120);
11
+ });
12
+ it('getProfitRateBps uses shared normal rate (40 bps)', () => {
13
+ expect(getProfitRateBps()).toBe(40);
14
+ });
15
+ it('calculateProfit splits amount by bps', () => {
16
+ const amount = 10000n;
17
+ const { profit, remaining } = calculateProfit(amount);
18
+ expect(profit).toBe(40n);
19
+ expect(remaining).toBe(9960n);
20
+ expect(profit + remaining).toBe(amount);
21
+ });
22
+ it('calculateBatchProfit aggregates per-item profit', () => {
23
+ const amounts = [10000n, 20000n];
24
+ const { totalProfit, remainingAmounts } = calculateBatchProfit(amounts);
25
+ expect(totalProfit).toBe(120n);
26
+ expect(remainingAmounts).toEqual([9960n, 19920n]);
27
+ });
28
+ });
@@ -0,0 +1,33 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import * as bundleCoreConfig from '../config-helpers.js';
3
+ import * as bundleCoreErrors from '../errors.js';
4
+ import * as bscFourConfig from '../../chains/bsc/four/config.js';
5
+ import * as tmMerkleConfig from '../../contracts/tm-bundle-merkle/config.js';
6
+ const sharedHelpers = [
7
+ 'getTxType',
8
+ 'getGasPriceMultiplier',
9
+ 'getBundleOptions',
10
+ 'getGasPriceConfig',
11
+ 'shouldExtractProfit',
12
+ 'getProfitRateBps',
13
+ 'getProfitRecipient',
14
+ 'calculateProfit',
15
+ 'calculateBatchProfit',
16
+ 'getBribeAmount',
17
+ ];
18
+ describe('bundle-core facade parity', () => {
19
+ it('bsc/four/config re-exports same config-helpers implementations', () => {
20
+ for (const name of sharedHelpers) {
21
+ expect(bscFourConfig[name]).toBe(bundleCoreConfig[name]);
22
+ }
23
+ });
24
+ it('tm-bundle-merkle/config re-exports same config-helpers implementations', () => {
25
+ for (const name of sharedHelpers) {
26
+ expect(tmMerkleConfig[name]).toBe(bundleCoreConfig[name]);
27
+ }
28
+ });
29
+ it('bsc/four and tm-bundle-merkle share bundle-core error helpers', () => {
30
+ expect(bscFourConfig.getErrorMessage).toBe(bundleCoreErrors.getBundleErrorMessage);
31
+ expect(tmMerkleConfig.getErrorMessage).toBe(bundleCoreErrors.getBundleErrorMessage);
32
+ });
33
+ });
@@ -0,0 +1,60 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { ethers } from 'ethers';
3
+ import { SIGN_FIXTURE_CHAIN_ID, SIGN_FIXTURE_RPC } from './sign-fixtures.js';
4
+ import { countSellerNonceSlots, getFourSwapProfitRateBps, planSellerNonces, toCommonBundleConfig, } from '../four-meme/swap-sign-helpers.js';
5
+ import { generateDisperseHopPaths } from '../four-meme/swap-hop-helpers.js';
6
+ import { normalizeItemsOrRecipientsAmounts, resolveHopCountInput, resolveProvidedHops, } from '../sign-context-helpers.js';
7
+ import { normalizeAmounts } from '../internal.js';
8
+ describe('swap-sign-helpers', () => {
9
+ it('toCommonBundleConfig coerces bigint gasLimit', () => {
10
+ const cfg = toCommonBundleConfig({
11
+ rpcUrl: 'http://127.0.0.1:8545',
12
+ gasLimit: 500000n,
13
+ minGasPriceGwei: 3,
14
+ chainId: 56,
15
+ });
16
+ expect(cfg.gasLimit).toBe(500000);
17
+ expect(cfg.chainId).toBe(56);
18
+ });
19
+ it('countSellerNonceSlots counts optional slots', () => {
20
+ expect(countSellerNonceSlots(false, false, false)).toBe(1);
21
+ expect(countSellerNonceSlots(true, true, true)).toBe(4);
22
+ });
23
+ it('planSellerNonces assigns sequential seller slots', () => {
24
+ const plan = planSellerNonces([10, 11, 12, 13], true, true, true);
25
+ expect(plan).toEqual({
26
+ bribeNonce: 10,
27
+ approvalNonce: 11,
28
+ sellerNonce: 12,
29
+ profitNonce: 13,
30
+ });
31
+ });
32
+ it('getFourSwapProfitRateBps respects userType', () => {
33
+ expect(getFourSwapProfitRateBps('v0')).toBeGreaterThan(0);
34
+ expect(getFourSwapProfitRateBps('v1')).toBeGreaterThan(0);
35
+ });
36
+ });
37
+ describe('swap-hop-helpers', () => {
38
+ it('generateDisperseHopPaths returns empty hops when hopCount=0', () => {
39
+ const provider = new ethers.JsonRpcProvider(SIGN_FIXTURE_RPC, SIGN_FIXTURE_CHAIN_ID);
40
+ const paths = generateDisperseHopPaths(['0xabc'], 0, provider);
41
+ expect(paths[0]?.hopWallets).toEqual([]);
42
+ });
43
+ });
44
+ describe('sign-context-helpers', () => {
45
+ it('resolveProvidedHops returns null when all hop chains empty', () => {
46
+ expect(resolveProvidedHops(2, [[], []])).toBeNull();
47
+ expect(resolveProvidedHops(2, undefined, [{ hopPrivateKeys: [] }, { hopPrivateKeys: [] }])).toBeNull();
48
+ });
49
+ it('resolveProvidedHops returns hops when any chain non-empty', () => {
50
+ const hops = resolveProvidedHops(2, [['0xabc'], []]);
51
+ expect(hops).toEqual([['0xabc'], []]);
52
+ });
53
+ it('resolveHopCountInput merges per-item hopCount', () => {
54
+ expect(resolveHopCountInput(2, 1, [{ hopCount: 3 }, {}])).toEqual([3, 1]);
55
+ });
56
+ it('normalizeItemsOrRecipientsAmounts prefers items', () => {
57
+ const out = normalizeItemsOrRecipientsAmounts(['0xa', '0xb'], [{ amount: 100n }, { amount: '200' }], '999', undefined, normalizeAmounts);
58
+ expect(out).toEqual(['100', '200']);
59
+ });
60
+ });
@@ -0,0 +1 @@
1
+ export {};