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
@@ -1,32 +1,35 @@
1
1
  import { JsonRpcProvider, Wallet } from 'ethers';
2
+ /** 与 Helper3 `getTokenInfo` 返回值一致(作 `calcBuyAmount` 等函数的 `ti` 入参) */
3
+ export type TokenManagerHelper3TokenInfo = {
4
+ version: bigint;
5
+ tokenManager: string;
6
+ quote: string;
7
+ lastPrice: bigint;
8
+ tradingFeeRate: bigint;
9
+ minTradingFee: bigint;
10
+ launchTime: bigint;
11
+ offers: bigint;
12
+ maxOffers: bigint;
13
+ funds: bigint;
14
+ maxFunds: bigint;
15
+ liquidityAdded: boolean;
16
+ };
2
17
  type Providerish = JsonRpcProvider;
3
18
  type Signerish = Wallet;
4
- /** TokenManagerHelper3 合约返回的代币信息结构 */
5
- interface TokenInfo {
6
- addr: string;
7
- name: string;
8
- symbol: string;
9
- decimals: number;
10
- totalSupply: bigint;
11
- balance: bigint;
12
- price: bigint;
13
- marketCap: bigint;
14
- [key: number]: unknown;
15
- }
16
19
  export declare class Helper3 {
17
20
  readonly address: string;
18
21
  readonly provider: Providerish;
19
22
  protected constructor(address: string, provider: Providerish);
20
23
  static connectByChain(chain: 'BSC' | 'BASE' | 'ARBITRUM_ONE', rpcUrl: string): Helper3;
21
24
  private get contract();
22
- getTokenInfo(token: string): Promise<any>;
25
+ getTokenInfo(token: string): Promise<TokenManagerHelper3TokenInfo>;
23
26
  tryBuy(token: string, amount: bigint, funds: bigint): Promise<any>;
24
27
  trySell(token: string, amount: bigint): Promise<any>;
25
28
  calcInitialPrice(maxRaising: bigint, totalSupply: bigint, offers: bigint, reserves: bigint): Promise<any>;
26
- calcBuyAmount(ti: TokenInfo, funds: bigint): Promise<any>;
27
- calcBuyCost(ti: TokenInfo, amount: bigint): Promise<any>;
28
- calcSellCost(ti: TokenInfo, amount: bigint): Promise<any>;
29
- calcTradingFee(ti: TokenInfo, funds: bigint): Promise<any>;
29
+ calcBuyAmount(ti: TokenManagerHelper3TokenInfo, funds: bigint): Promise<any>;
30
+ calcBuyCost(ti: TokenManagerHelper3TokenInfo, amount: bigint): Promise<any>;
31
+ calcSellCost(ti: TokenManagerHelper3TokenInfo, amount: bigint): Promise<any>;
32
+ calcTradingFee(ti: TokenManagerHelper3TokenInfo, funds: bigint): Promise<any>;
30
33
  getPancakePair(token: string): Promise<any>;
31
34
  WETH(): Promise<any>;
32
35
  WHITE_LIST(): Promise<any>;
@@ -1,7 +1,10 @@
1
1
  import { Contract, JsonRpcProvider, Wallet } from 'ethers';
2
- import Helper3Abi from '../shared/abis/TokenManagerHelper3.json' with { type: 'json' };
3
- import { ADDRESSES } from '../utils/constants.js';
2
+ import Helper3Abi from '../abis/contracts/TokenManagerHelper3.json' with { type: 'json' };
3
+ import { ADDRESSES } from '../shared/constants/index.js';
4
+ const HELPER3_ABI = Helper3Abi;
4
5
  export class Helper3 {
6
+ address;
7
+ provider;
5
8
  constructor(address, provider) {
6
9
  this.address = address;
7
10
  this.provider = provider;
@@ -15,25 +18,56 @@ export class Helper3 {
15
18
  return new Helper3(addresses[chain], new JsonRpcProvider(rpcUrl));
16
19
  }
17
20
  get contract() {
18
- return new Contract(this.address, Helper3Abi, this.provider);
19
- }
20
- async getTokenInfo(token) { return await this.contract.getTokenInfo(token); }
21
- async tryBuy(token, amount, funds) { return await this.contract.tryBuy(token, amount, funds); }
22
- async trySell(token, amount) { return await this.contract.trySell(token, amount); }
23
- async calcInitialPrice(maxRaising, totalSupply, offers, reserves) { return await this.contract.calcInitialPrice(maxRaising, totalSupply, offers, reserves); }
24
- async calcBuyAmount(ti, funds) { return await this.contract.calcBuyAmount(ti, funds); }
25
- async calcBuyCost(ti, amount) { return await this.contract.calcBuyCost(ti, amount); }
26
- async calcSellCost(ti, amount) { return await this.contract.calcSellCost(ti, amount); }
27
- async calcTradingFee(ti, funds) { return await this.contract.calcTradingFee(ti, funds); }
28
- async getPancakePair(token) { return await this.contract.getPancakePair(token); }
29
- async WETH() { return await this.contract.WETH(); }
30
- async WHITE_LIST() { return await this.contract.WHITE_LIST(); }
31
- async calcEthIn(token, amount) { return await this.contract.calcEthIn(token, amount); }
32
- async calcEthOut(token, amount) { return await this.contract.calcEthOut(token, amount); }
33
- async calcTokenIn(token, amountEth) { return await this.contract.calcTokenIn(token, amountEth); }
34
- async calcTokenOut(token, amountEth) { return await this.contract.calcTokenOut(token, amountEth); }
21
+ return new Contract(this.address, HELPER3_ABI, this.provider);
22
+ }
23
+ async getTokenInfo(token) {
24
+ return await this.contract.getTokenInfo(token);
25
+ }
26
+ async tryBuy(token, amount, funds) {
27
+ return await this.contract.tryBuy(token, amount, funds);
28
+ }
29
+ async trySell(token, amount) {
30
+ return await this.contract.trySell(token, amount);
31
+ }
32
+ async calcInitialPrice(maxRaising, totalSupply, offers, reserves) {
33
+ return await this.contract.calcInitialPrice(maxRaising, totalSupply, offers, reserves);
34
+ }
35
+ async calcBuyAmount(ti, funds) {
36
+ return await this.contract.calcBuyAmount(ti, funds);
37
+ }
38
+ async calcBuyCost(ti, amount) {
39
+ return await this.contract.calcBuyCost(ti, amount);
40
+ }
41
+ async calcSellCost(ti, amount) {
42
+ return await this.contract.calcSellCost(ti, amount);
43
+ }
44
+ async calcTradingFee(ti, funds) {
45
+ return await this.contract.calcTradingFee(ti, funds);
46
+ }
47
+ async getPancakePair(token) {
48
+ return await this.contract.getPancakePair(token);
49
+ }
50
+ async WETH() {
51
+ return await this.contract.WETH();
52
+ }
53
+ async WHITE_LIST() {
54
+ return await this.contract.WHITE_LIST();
55
+ }
56
+ async calcEthIn(token, amount) {
57
+ return await this.contract.calcEthIn(token, amount);
58
+ }
59
+ async calcEthOut(token, amount) {
60
+ return await this.contract.calcEthOut(token, amount);
61
+ }
62
+ async calcTokenIn(token, amountEth) {
63
+ return await this.contract.calcTokenIn(token, amountEth);
64
+ }
65
+ async calcTokenOut(token, amountEth) {
66
+ return await this.contract.calcTokenOut(token, amountEth);
67
+ }
35
68
  }
36
69
  export class Helper3Writer extends Helper3 {
70
+ signer;
37
71
  constructor(address, signer) {
38
72
  super(address, signer.provider);
39
73
  this.signer = signer;
@@ -48,7 +82,9 @@ export class Helper3Writer extends Helper3 {
48
82
  const signer = new Wallet(privateKey, provider);
49
83
  return new Helper3Writer(addresses[chain], signer);
50
84
  }
51
- get writeContract() { return new Contract(this.address, Helper3Abi, this.signer); }
85
+ get writeContract() {
86
+ return new Contract(this.address, HELPER3_ABI, this.signer);
87
+ }
52
88
  async buyWithEth(origin, token, to, funds, minAmount) {
53
89
  const tx = await this.writeContract.buyWithEth(origin, token, to, funds, minAmount, { value: funds });
54
90
  return await tx.wait();
@@ -0,0 +1,88 @@
1
+ import { JsonRpcProvider } from 'ethers';
2
+ import type { TransactionRequest } from 'ethers';
3
+ import type { SoulPointSignatureMode, VNormalizationMode } from '../shared/clients/club48.js';
4
+ import { BundleStatus } from '../shared/clients/club48.js';
5
+ import type { GeneratedWallet } from '../utils/wallet.js';
6
+ /**
7
+ * four.meme Bundle 交易方法
8
+ * 使用 48.club Bundle 服务实现原子化交易
9
+ */
10
+ export { BUNDLE_ERRORS as ERRORS, getBundleErrorMessage as getErrorMessage } from '../bundle-core/errors.js';
11
+ export type FourBundleConfig = {
12
+ rpcUrl: string;
13
+ fourApiUrl?: string;
14
+ club48Endpoint?: string;
15
+ club48ExplorerEndpoint?: string;
16
+ spMode?: SoulPointSignatureMode;
17
+ spVMode?: VNormalizationMode;
18
+ spPrivateKey?: string;
19
+ bundleBlockOffset?: number;
20
+ noMerge?: boolean;
21
+ tipAmountWei?: bigint;
22
+ txType?: 0 | 2;
23
+ gasLimitMultiplier?: number;
24
+ customSubmitFn?: (signedTxs: string[]) => Promise<string>;
25
+ };
26
+ /**
27
+ * 等待交易上链(不使用 club48 客户端)
28
+ */
29
+ export type FourProviderBundleWaitStatus = {
30
+ status: 'INCLUDED';
31
+ includedBlock?: number;
32
+ } | {
33
+ status: 'FAILED';
34
+ } | {
35
+ status: 'PENDING';
36
+ };
37
+ export declare function waitForBundleWithProvider(provider: JsonRpcProvider, firstTxSigned: string, _bundleUuid: string): Promise<FourProviderBundleWaitStatus>;
38
+ /**
39
+ * 估算 gas 并应用用户配置的倍数
40
+ */
41
+ export declare function estimateGasWithMultiplier(provider: JsonRpcProvider, txRequest: TransactionRequest, multiplier?: number): Promise<bigint>;
42
+ /**
43
+ * 获取交易类型(用户可配置)
44
+ */
45
+ export declare function getTxType(config: FourBundleConfig): 0 | 2;
46
+ /**
47
+ * 构建完整的交易请求(包含 gas 估算和交易类型)
48
+ */
49
+ export declare function buildTxRequest(provider: JsonRpcProvider, unsigned: TransactionRequest, from: string, nonce: number, gasPrice: bigint, config: FourBundleConfig, value?: bigint): Promise<TransactionRequest & {
50
+ gasLimit: bigint;
51
+ chainId: number;
52
+ type: 0 | 2;
53
+ }>;
54
+ export type FourCreateWithBundleBuyParams = {
55
+ privateKeys: string[];
56
+ buyAmounts: string[];
57
+ b0Amount?: string;
58
+ tokenInfo: {
59
+ name: string;
60
+ symbol: string;
61
+ description: string;
62
+ imageUrl?: string;
63
+ imageFile?: Blob;
64
+ label?: 'Meme' | 'AI' | 'Defi' | 'Games' | 'Infra' | 'De-Sci' | 'Social' | 'Depin' | 'Charity' | 'Others';
65
+ preSale?: string;
66
+ webUrl?: string;
67
+ twitterUrl?: string;
68
+ telegramUrl?: string;
69
+ };
70
+ config: FourBundleConfig;
71
+ };
72
+ export type FourCreateWithBundleBuyResult = {
73
+ bundleUuid: string;
74
+ tokenAddress?: string;
75
+ status: BundleStatus | FourProviderBundleWaitStatus;
76
+ createTx: string;
77
+ buyTxs: string[];
78
+ profitTxs: string[];
79
+ profitHopWallets?: GeneratedWallet[];
80
+ };
81
+ /**
82
+ * four.meme: 创建代币 + 捆绑购买
83
+ *
84
+ * 用户只需传入:
85
+ * - dev 私钥 + N 个买家私钥
86
+ * - 对应的购买金额
87
+ * - 代币基本信息
88
+ */
@@ -0,0 +1,72 @@
1
+ import { ethers } from 'ethers';
2
+ /**
3
+ * four.meme Bundle 交易方法
4
+ * 使用 48.club Bundle 服务实现原子化交易
5
+ */
6
+ // 错误信息国际化(实现见 bundle-core/errors)
7
+ export { BUNDLE_ERRORS as ERRORS, getBundleErrorMessage as getErrorMessage } from '../bundle-core/errors.js';
8
+ export async function waitForBundleWithProvider(provider, firstTxSigned, _bundleUuid) {
9
+ const maxAttempts = 60; // 最多等待 60 秒
10
+ for (let i = 0; i < maxAttempts; i++) {
11
+ await new Promise((resolve) => setTimeout(resolve, 1000));
12
+ try {
13
+ const txHash = ethers.Transaction.from(firstTxSigned).hash;
14
+ if (!txHash)
15
+ continue;
16
+ const receipt = await provider.getTransactionReceipt(txHash);
17
+ if (receipt) {
18
+ if (receipt.status === 1) {
19
+ return { status: 'INCLUDED', includedBlock: receipt.blockNumber };
20
+ }
21
+ else {
22
+ return { status: 'FAILED' };
23
+ }
24
+ }
25
+ }
26
+ catch (_error) {
27
+ // 继续等待
28
+ }
29
+ }
30
+ return { status: 'PENDING' };
31
+ }
32
+ // ========================================
33
+ // 辅助函数:估算 gas 并应用配置
34
+ // ========================================
35
+ /**
36
+ * 估算 gas 并应用用户配置的倍数
37
+ */
38
+ export async function estimateGasWithMultiplier(provider, txRequest, multiplier) {
39
+ const estimated = await provider.estimateGas(txRequest);
40
+ const mult = multiplier ?? 1.2; // 默认 20% 安全余量
41
+ return BigInt(Math.ceil(Number(estimated) * mult));
42
+ }
43
+ /**
44
+ * 获取交易类型(用户可配置)
45
+ */
46
+ export function getTxType(config) {
47
+ return config.txType ?? 0; // 默认 Legacy (type 0),适用于 48.club/BSC
48
+ }
49
+ /**
50
+ * 构建完整的交易请求(包含 gas 估算和交易类型)
51
+ */
52
+ export async function buildTxRequest(provider, unsigned, from, nonce, gasPrice, config, value) {
53
+ const gasLimit = await estimateGasWithMultiplier(provider, { ...unsigned, from, value }, config.gasLimitMultiplier);
54
+ const txType = getTxType(config);
55
+ return {
56
+ ...unsigned,
57
+ from,
58
+ nonce,
59
+ gasLimit,
60
+ gasPrice,
61
+ chainId: 56,
62
+ type: txType,
63
+ };
64
+ }
65
+ /**
66
+ * four.meme: 创建代币 + 捆绑购买
67
+ *
68
+ * 用户只需传入:
69
+ * - dev 私钥 + N 个买家私钥
70
+ * - 对应的购买金额
71
+ * - 代币基本信息
72
+ */
@@ -1,26 +1 @@
1
- import type { FourSignConfig } from './types.js';
2
- /** ✅ 批量授权参数(直接提交到链上) */
3
- export type ApproveFourTokenManagerBatchParams = {
4
- privateKeys: string[];
5
- tokenAddress: string;
6
- amounts: string[];
7
- config: FourSignConfig;
8
- };
9
- /** ✅ 批量授权结果(包含提交状态) */
10
- export type ApproveFourTokenManagerBatchResult = {
11
- success: boolean;
12
- signedTransactions: string[];
13
- approvedCount: number;
14
- skippedCount: number;
15
- txHashes?: string[];
16
- message: string;
17
- };
18
- /**
19
- * 批量授权代币给 TokenManager(用于 Private Buy/Sell)
20
- * ✅ 直接通过 RPC 提交到链上并等待确认
21
- * ✅ 不需要 Merkle API Key,使用普通 RPC 即可
22
- * ✅ 专门用于授权给 TokenManagerOriginal 合约
23
- * ✅ 用于 fourBatchPrivateSell 和 fourBatchSellWithBundleMerkle
24
- * ✅ 优化:并行获取 gasPrice、decimals、allowances
25
- */
26
- export declare function approveFourTokenManagerBatch(params: ApproveFourTokenManagerBatchParams): Promise<ApproveFourTokenManagerBatchResult>;
1
+ export { approveFourTokenManagerBatch, type ApproveFourTokenManagerBatchParams, type ApproveFourTokenManagerBatchResult, } from '../../bundle-core/four-meme/approve-tokenmanager.js';
@@ -1,117 +1 @@
1
- import { ethers, Wallet } from 'ethers';
2
- import { NonceManager, getOptimizedGasPrice } from '../../utils/bundle-helpers.js';
3
- import { ADDRESSES } from '../../utils/constants.js';
4
- import { ERC20_ABI } from '../../shared/abis/common.js';
5
- import { getTxType, getGasPriceConfig } from './config.js';
6
- import { batchCheckAllowances } from '../../utils/erc20.js';
7
- /**
8
- * 批量授权代币给 TokenManager(用于 Private Buy/Sell)
9
- * ✅ 直接通过 RPC 提交到链上并等待确认
10
- * ✅ 不需要 Merkle API Key,使用普通 RPC 即可
11
- * ✅ 专门用于授权给 TokenManagerOriginal 合约
12
- * ✅ 用于 fourBatchPrivateSell 和 fourBatchSellWithBundleMerkle
13
- * ✅ 优化:并行获取 gasPrice、decimals、allowances
14
- */
15
- export async function approveFourTokenManagerBatch(params) {
16
- const { privateKeys, tokenAddress, amounts, config } = params;
17
- if (privateKeys.length === 0 || amounts.length !== privateKeys.length) {
18
- throw new Error('Private key count and amount count must match');
19
- }
20
- const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
21
- const chainId = config.chainId ?? 56;
22
- // ✅ 直接使用传入的 RPC URL 创建 provider(不依赖 Merkle)
23
- const provider = new ethers.JsonRpcProvider(config.rpcUrl, {
24
- chainId: chainId,
25
- name: 'BSC'
26
- });
27
- const wallets = privateKeys.map(k => new Wallet(k, provider));
28
- const allMax = amounts.every(a => a === 'max');
29
- // ✅ 优化:并行获取 gasPrice、decimals(如果需要)、allowances
30
- const [gasPrice, decimals, allowances] = await Promise.all([
31
- getOptimizedGasPrice(provider, getGasPriceConfig(config)),
32
- allMax
33
- ? Promise.resolve(18) // 如果都是 'max',不需要查询 decimals
34
- : (async () => {
35
- try {
36
- const tokenContract = new ethers.Contract(tokenAddress, ERC20_ABI, provider);
37
- return await tokenContract.decimals();
38
- }
39
- catch (error) {
40
- const msg = error instanceof Error ? error.message : String(error);
41
- const enhanced = new Error(`查询代币 decimals 失败: ${msg}`);
42
- Object.assign(enhanced, { cause: error });
43
- throw enhanced;
44
- }
45
- })(),
46
- batchCheckAllowances(provider, tokenAddress, wallets.map(w => w.address), tmAddr)
47
- ]);
48
- const amountsBigInt = amounts.map(a => a === 'max' ? ethers.MaxUint256 : ethers.parseUnits(a, decimals));
49
- // 只授权不足的
50
- // ✅ 策略:如果授权额度 < MaxUint256 / 2n,就重新授权(确保授权足够大)
51
- const APPROVAL_THRESHOLD = ethers.MaxUint256 / 2n;
52
- const needApproval = wallets.filter((_, i) => allowances[i] < APPROVAL_THRESHOLD);
53
- const needApprovalAmounts = amountsBigInt.filter((_, i) => allowances[i] < APPROVAL_THRESHOLD);
54
- const skippedCount = wallets.length - needApproval.length;
55
- if (needApproval.length === 0) {
56
- return {
57
- success: true,
58
- signedTransactions: [],
59
- approvedCount: 0,
60
- skippedCount: skippedCount,
61
- message: '所有钱包已授权,无需重复授权'
62
- };
63
- }
64
- // ✅ 优化:计算 gasLimit(不需要 RPC)
65
- const getGasLimit = (cfg) => {
66
- if (cfg.gasLimit)
67
- return BigInt(cfg.gasLimit);
68
- if (cfg.gasLimitMultiplier)
69
- return BigInt(Math.ceil(60000 * cfg.gasLimitMultiplier));
70
- return 60000n; // 默认授权 gas limit
71
- };
72
- const finalGasLimit = getGasLimit(config);
73
- const txType = getTxType(config);
74
- // ✅ 优化:并行获取 nonces 和构建未签名交易
75
- const nonceManager = new NonceManager(provider);
76
- const needApprovalTokens = needApproval.map(w => new ethers.Contract(tokenAddress, ERC20_ABI, w));
77
- const [nonces, unsignedApprovals] = await Promise.all([
78
- nonceManager.getNextNoncesForWallets(needApproval), // ✅ 批量获取 nonces(JSON-RPC 批量请求)
79
- Promise.all(needApprovalTokens.map((token, i) => token.approve.populateTransaction(tmAddr, needApprovalAmounts[i])))
80
- ]);
81
- // ✅ 并行签名所有授权交易
82
- const signedTxs = await Promise.all(unsignedApprovals.map((unsigned, i) => needApproval[i].signTransaction({
83
- ...unsigned,
84
- from: needApproval[i].address,
85
- nonce: nonces[i],
86
- gasLimit: finalGasLimit,
87
- gasPrice,
88
- chainId,
89
- type: txType
90
- })));
91
- nonceManager.clearTemp();
92
- try {
93
- // ✅ 并行广播所有授权交易
94
- const txResponses = await Promise.all(signedTxs.map(tx => provider.broadcastTransaction(tx)));
95
- const txHashes = txResponses.map(r => r.hash);
96
- // ✅ 并行等待所有授权交易确认(至少1个确认)
97
- await Promise.all(txResponses.map(tx => tx.wait(1)));
98
- return {
99
- success: true,
100
- signedTransactions: signedTxs,
101
- approvedCount: signedTxs.length,
102
- skippedCount: skippedCount,
103
- txHashes: txHashes,
104
- message: `授权成功!共 ${signedTxs.length} 个钱包已授权,跳过 ${skippedCount} 个已授权钱包`
105
- };
106
- }
107
- catch (error) {
108
- const msg = error instanceof Error ? error.message : String(error);
109
- return {
110
- success: false,
111
- signedTransactions: signedTxs,
112
- approvedCount: 0,
113
- skippedCount: skippedCount,
114
- message: `授权提交失败: ${msg}`,
115
- };
116
- }
117
- }
1
+ export { approveFourTokenManagerBatch, } from '../../bundle-core/four-meme/approve-tokenmanager.js';
@@ -1,73 +1,8 @@
1
+ /**
2
+ * TM-Merkle bundle 配置 helper(实现见 bundle-core/)
3
+ */
1
4
  import type { FourBundleMerkleConfig, FourSignConfig } from './types.js';
2
5
  export type { FourBundleMerkleConfig, FourSignConfig };
3
6
  export type FourAnyConfig = FourBundleMerkleConfig | FourSignConfig;
4
- export declare const ERRORS: {
5
- NO_PRIVATE_KEY: {
6
- en: string;
7
- zh: string;
8
- };
9
- AMOUNT_MISMATCH: {
10
- en: (buyCount: number, buyerCount: number) => string;
11
- zh: (buyCount: number, buyerCount: number) => string;
12
- };
13
- IMAGE_REQUIRED: {
14
- en: string;
15
- zh: string;
16
- };
17
- KEY_AMOUNT_MISMATCH: {
18
- en: string;
19
- zh: string;
20
- };
21
- SELL_KEY_AMOUNT_MISMATCH: {
22
- en: string;
23
- zh: string;
24
- };
25
- };
26
- export declare function getErrorMessage(key: keyof typeof ERRORS, ...args: unknown[]): string;
27
- export declare function getTxType(config: FourAnyConfig): 0 | 2;
28
- export declare function getGasPriceMultiplier(config: FourAnyConfig): number;
29
- export declare function getBundleOptions(config: FourBundleMerkleConfig, blockOffset?: number): {
30
- blockOffset: number;
31
- minBlockOffset: number;
32
- autoRetry: boolean;
33
- maxRetries: number;
34
- };
35
- export declare function getGasPriceConfig(config: FourAnyConfig): {
36
- baseGasPrice?: bigint;
37
- multiplierPercent: number;
38
- };
39
- /**
40
- * 判断是否需要提取利润
41
- * ✅ 强制开启,始终返回 true
42
- */
43
- export declare function shouldExtractProfit(_config?: FourAnyConfig): boolean;
44
- /**
45
- * 获取利润比例(基点)
46
- * ✅ 硬编码:30 bps = 0.3% = 千分之3
47
- */
48
- export declare function getProfitRateBps(_config?: FourAnyConfig): number;
49
- /**
50
- * 获取利润接收地址
51
- */
52
- export declare function getProfitRecipient(_config?: FourAnyConfig): string;
53
- /**
54
- * 计算利润金额
55
- * ✅ 强制提取利润:使用硬编码的利润率
56
- */
57
- export declare function calculateProfit(amount: bigint, _config?: FourAnyConfig): {
58
- profit: bigint;
59
- remaining: bigint;
60
- };
61
- /**
62
- * 批量计算利润
63
- * ✅ 强制提取利润:使用硬编码的利润率
64
- */
65
- export declare function calculateBatchProfit(amounts: bigint[], config?: FourAnyConfig): {
66
- totalProfit: bigint;
67
- remainingAmounts: bigint[];
68
- };
69
- /**
70
- * 获取贿赂金额(Wei)
71
- * ✅ 从配置中读取贿赂金额,转换为 Wei
72
- */
73
- export declare function getBribeAmount(config?: FourAnyConfig): bigint;
7
+ export { BUNDLE_ERRORS as ERRORS, getBundleErrorMessage as getErrorMessage } from '../../bundle-core/errors.js';
8
+ export { getTxType, getGasPriceMultiplier, getBundleOptions, getGasPriceConfig, shouldExtractProfit, getProfitRateBps, getProfitRecipient, calculateProfit, calculateBatchProfit, getBribeAmount, } from '../../bundle-core/config-helpers.js';
@@ -1,115 +1,2 @@
1
- import { ethers } from 'ethers';
2
- import { getProfitRecipient as getProfitRecipientShared, getProfitRateBps as getProfitRateBpsShared } from '../../shared/constants/index.js';
3
- // 错误信息国际化
4
- export const ERRORS = {
5
- NO_PRIVATE_KEY: {
6
- en: 'At least 1 private key (creator) is required',
7
- zh: '至少需要 1 个私钥(创建者)'
8
- },
9
- AMOUNT_MISMATCH: {
10
- en: (buyCount, buyerCount) => `Buy amount count (${buyCount}) must equal buyer count (${buyerCount})`,
11
- zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})`
12
- },
13
- IMAGE_REQUIRED: {
14
- en: 'Either imageUrl or imageFile must be provided',
15
- zh: '必须提供 imageUrl 或 imageFile'
16
- },
17
- KEY_AMOUNT_MISMATCH: {
18
- en: 'Private key count and amount count must match',
19
- zh: '私钥和购买金额数量必须一致'
20
- },
21
- SELL_KEY_AMOUNT_MISMATCH: {
22
- en: 'Private key count and sell amount count must match',
23
- zh: '私钥和卖出数量必须一致'
24
- }
25
- };
26
- export function getErrorMessage(key, ...args) {
27
- const lang = (process.env.LANG || process.env.LANGUAGE || 'en').toLowerCase().includes('zh') ? 'zh' : 'en';
28
- const message = ERRORS[key][lang];
29
- return typeof message === 'function' ? message(...args) : message;
30
- }
31
- export function getTxType(config) {
32
- return config.txType ?? 0;
33
- }
34
- export function getGasPriceMultiplier(config) {
35
- return config.gasPriceMultiplierPercent ?? 50;
36
- }
37
- export function getBundleOptions(config, blockOffset) {
38
- return {
39
- blockOffset: blockOffset ?? config.bundleBlockOffset ?? 3,
40
- minBlockOffset: config.minBlockOffset ?? 3,
41
- autoRetry: config.autoRetryBundle ?? false,
42
- maxRetries: config.maxBundleRetries ?? 2
43
- };
44
- }
45
- export function getGasPriceConfig(config) {
46
- const gasPriceConfig = { multiplierPercent: 0 };
47
- // ✅ 如果用户明确设置了 minGasPriceGwei,就直接使用它作为 baseGasPrice(不增幅)
48
- if (config.minGasPriceGwei !== undefined) {
49
- gasPriceConfig.baseGasPrice = ethers.parseUnits(String(config.minGasPriceGwei), 'gwei');
50
- gasPriceConfig.multiplierPercent = 0; // 不增幅
51
- }
52
- else {
53
- // 否则使用默认增幅策略
54
- gasPriceConfig.multiplierPercent = getGasPriceMultiplier(config);
55
- }
56
- return gasPriceConfig;
57
- }
58
- // ========================================
59
- // 利润提取相关辅助函数
60
- // ========================================
61
- /**
62
- * 判断是否需要提取利润
63
- * ✅ 强制开启,始终返回 true
64
- */
65
- export function shouldExtractProfit(_config) {
66
- return true; // 强制提取利润
67
- }
68
- /**
69
- * 获取利润比例(基点)
70
- * ✅ 硬编码:30 bps = 0.3% = 千分之3
71
- */
72
- export function getProfitRateBps(_config) {
73
- return getProfitRateBpsShared('normal');
74
- }
75
- /**
76
- * 获取利润接收地址
77
- */
78
- export function getProfitRecipient(_config) {
79
- return getProfitRecipientShared();
80
- }
81
- /**
82
- * 计算利润金额
83
- * ✅ 强制提取利润:使用硬编码的利润率
84
- */
85
- export function calculateProfit(amount, _config) {
86
- // ✅ 强制提取利润
87
- const profit = (amount * BigInt(getProfitRateBpsShared('normal'))) / 10000n;
88
- const remaining = amount - profit;
89
- return { profit, remaining };
90
- }
91
- /**
92
- * 批量计算利润
93
- * ✅ 强制提取利润:使用硬编码的利润率
94
- */
95
- export function calculateBatchProfit(amounts, config) {
96
- let totalProfit = 0n;
97
- const remainingAmounts = [];
98
- for (const amount of amounts) {
99
- const { profit, remaining } = calculateProfit(amount, config);
100
- totalProfit += profit;
101
- remainingAmounts.push(remaining);
102
- }
103
- return { totalProfit, remainingAmounts };
104
- }
105
- /**
106
- * 获取贿赂金额(Wei)
107
- * ✅ 从配置中读取贿赂金额,转换为 Wei
108
- */
109
- export function getBribeAmount(config) {
110
- const cfg = config;
111
- if (!cfg || !cfg.bribeAmount || cfg.bribeAmount <= 0) {
112
- return 0n;
113
- }
114
- return ethers.parseEther(String(cfg.bribeAmount));
115
- }
1
+ export { BUNDLE_ERRORS as ERRORS, getBundleErrorMessage as getErrorMessage } from '../../bundle-core/errors.js';
2
+ export { getTxType, getGasPriceMultiplier, getBundleOptions, getGasPriceConfig, shouldExtractProfit, getProfitRateBps, getProfitRecipient, calculateProfit, calculateBatchProfit, getBribeAmount, } from '../../bundle-core/config-helpers.js';
@@ -1,4 +1 @@
1
- import { FourCreateWithBundleBuySignParams, FourCreateWithBundleBuyMerkleResult, FourBatchBuySignParams, FourBatchBuyMerkleResult, FourBatchSellSignParams, FourBatchSellMerkleResult } from './types.js';
2
- export declare function createTokenWithBundleBuyMerkle(params: FourCreateWithBundleBuySignParams): Promise<FourCreateWithBundleBuyMerkleResult>;
3
- export declare function batchBuyWithBundleMerkle(params: FourBatchBuySignParams): Promise<FourBatchBuyMerkleResult>;
4
- export declare function batchSellWithBundleMerkle(params: FourBatchSellSignParams): Promise<FourBatchSellMerkleResult>;
1
+ export { createTokenWithBundleBuyMerkle, batchBuyWithBundleMerkle, batchSellWithBundleMerkle, } from '../../bundle-core/four-meme/core.js';