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,82 +1,16 @@
1
+ /**
2
+ * tm-bundle - 主函数
3
+ */
1
4
  import { ethers, Wallet, JsonRpcProvider } from 'ethers';
2
- import { Club48Client, sendBatchPrivateTransactions, BUILDER_CONTROL_EOA } from '../shared/clients/club48.js';
3
- import { ADDRESSES } from '../utils/constants.js';
4
- import { getProfitRecipient, getProfitRateBps } from '../shared/constants/index.js';
5
- import { GAS_LIMITS } from '../shared/constants/index.js';
5
+ import { Club48Client, sendBatchPrivateTransactions, BUILDER_CONTROL_EOA, } from '../shared/clients/club48.js';
6
+ import { ADDRESSES } from '../shared/constants/index.js';
7
+ import { GAS_LIMITS, getProfitRateBps, getProfitRecipient } from '../shared/constants/index.js';
6
8
  import { buildProfitHopTransactions, PROFIT_HOP_COUNT } from '../utils/bundle-helpers.js';
7
- import TM2Abi from '../shared/abis/TokenManager2.json' with { type: 'json' };
9
+ import TM2Abi from '../abis/contracts/TokenManager2.json' with { type: 'json' };
8
10
  import { FourClient, buildLoginMessage } from '../shared/clients/four.js';
9
11
  import { trySell } from './tm.js';
10
- /**
11
- * four.meme Bundle 交易方法
12
- * 使用 48.club Bundle 服务实现原子化交易
13
- */
14
- // 错误信息国际化
15
- const ERRORS = {
16
- NO_PRIVATE_KEY: {
17
- en: 'At least 1 private key (creator) is required',
18
- zh: '至少需要 1 个私钥(创建者)'
19
- },
20
- AMOUNT_MISMATCH: {
21
- en: (buyCount, buyerCount) => `Buy amount count (${buyCount}) must equal buyer count (${buyerCount})`,
22
- zh: (buyCount, buyerCount) => `购买金额数量(${buyCount})必须等于买家数量(${buyerCount})`
23
- },
24
- IMAGE_REQUIRED: {
25
- en: 'Either imageUrl or imageFile must be provided',
26
- zh: '必须提供 imageUrl 或 imageFile'
27
- },
28
- KEY_AMOUNT_MISMATCH: {
29
- en: 'Private key count and amount count must match',
30
- zh: '私钥和购买金额数量必须一致'
31
- },
32
- SELL_KEY_AMOUNT_MISMATCH: {
33
- en: 'Private key count and sell amount count must match',
34
- zh: '私钥和卖出数量必须一致'
35
- }
36
- };
37
- // 获取错误信息(根据环境语言)
38
- function getErrorMessage(key, ...args) {
39
- const lang = (process.env.LANG || process.env.LANGUAGE || 'en').toLowerCase().includes('zh') ? 'zh' : 'en';
40
- const message = ERRORS[key][lang];
41
- return typeof message === 'function' ? message(...args) : message;
42
- }
43
- // ========================================
44
- // 辅助函数
45
- // ========================================
46
- /**
47
- * 等待交易上链(不使用 club48 客户端)
48
- */
49
- async function waitForBundleWithProvider(provider, firstTxSigned, _bundleUuid) {
50
- const maxAttempts = 60; // 最多等待 60 秒
51
- for (let i = 0; i < maxAttempts; i++) {
52
- await new Promise(resolve => setTimeout(resolve, 1000));
53
- try {
54
- const txHash = ethers.keccak256(firstTxSigned);
55
- const receipt = await provider.getTransactionReceipt(txHash);
56
- if (receipt) {
57
- if (receipt.status === 1) {
58
- return { status: 'INCLUDED', includedBlock: receipt.blockNumber };
59
- }
60
- else {
61
- return { status: 'FAILED' };
62
- }
63
- }
64
- }
65
- catch (error) {
66
- // 继续等待
67
- console.warn(`waitForBundleWithProvider:`, error instanceof Error ? error.message : String(error));
68
- }
69
- }
70
- return { status: 'PENDING' };
71
- }
72
- /**
73
- * four.meme: 创建代币 + 捆绑购买
74
- *
75
- * 用户只需传入:
76
- * - dev 私钥 + N 个买家私钥
77
- * - 对应的购买金额
78
- * - 代币基本信息
79
- */
12
+ import { getErrorMessage, waitForBundleWithProvider, } from './tm-bundle-helpers.js';
13
+ const TM2_ABI = TM2Abi;
80
14
  export async function createTokenWithBundleBuy(params) {
81
15
  const { privateKeys, buyAmounts, tokenInfo, config } = params;
82
16
  if (privateKeys.length === 0) {
@@ -92,7 +26,7 @@ export async function createTokenWithBundleBuy(params) {
92
26
  if (!config.customSubmitFn) {
93
27
  club48 = new Club48Client({
94
28
  endpoint: 'https://puissant-bsc.48.club',
95
- explorerEndpoint: config.club48ExplorerEndpoint
29
+ explorerEndpoint: config.club48ExplorerEndpoint,
96
30
  });
97
31
  }
98
32
  const fourClient = new FourClient({ baseUrl: config.fourApiUrl });
@@ -100,7 +34,7 @@ export async function createTokenWithBundleBuy(params) {
100
34
  const nonce = await fourClient.generateNonce({
101
35
  accountAddress: devWallet.address,
102
36
  verifyType: 'LOGIN',
103
- networkCode: 'BSC'
37
+ networkCode: 'BSC',
104
38
  });
105
39
  const loginSignature = await devWallet.signMessage(buildLoginMessage(nonce));
106
40
  const accessToken = await fourClient.loginDex({
@@ -110,9 +44,9 @@ export async function createTokenWithBundleBuy(params) {
110
44
  address: devWallet.address,
111
45
  networkCode: 'BSC',
112
46
  signature: loginSignature,
113
- verifyType: 'LOGIN'
47
+ verifyType: 'LOGIN',
114
48
  },
115
- walletName: 'MetaMask'
49
+ walletName: 'MetaMask',
116
50
  });
117
51
  // 2. 上传图片(如果需要)
118
52
  let imgUrl = tokenInfo.imageUrl || '';
@@ -180,13 +114,15 @@ export async function createTokenWithBundleBuy(params) {
180
114
  const b0AmountWei = ethers.parseEther(b0AmountStr);
181
115
  const preSaleWei = tokenInfo.preSale ? ethers.parseEther(tokenInfo.preSale) : 0n;
182
116
  const valueWei = b0AmountWei + preSaleWei;
183
- const tm2 = new ethers.Contract(tmAddr, TM2Abi, devWallet);
184
- const createTxUnsigned = await tm2.createToken.populateTransaction(createResp.createArg, createResp.signature, { value: valueWei });
117
+ const tm2 = new ethers.Contract(tmAddr, TM2_ABI, devWallet);
118
+ const createTxUnsigned = await tm2.createToken.populateTransaction(createResp.createArg, createResp.signature, {
119
+ value: valueWei,
120
+ });
185
121
  // 估算 gas 并添加 20% 安全余量
186
122
  const estimatedCreateGas = await provider.estimateGas({
187
123
  ...createTxUnsigned,
188
124
  from: devWallet.address,
189
- value: valueWei
125
+ value: valueWei,
190
126
  });
191
127
  const createGasLimit = (estimatedCreateGas * 120n) / 100n;
192
128
  const createTxRequest = {
@@ -196,14 +132,14 @@ export async function createTokenWithBundleBuy(params) {
196
132
  gasLimit: createGasLimit,
197
133
  gasPrice: gasPrice,
198
134
  chainId: 56,
199
- type: 0 // Legacy transaction (required for BSC on 48.club)
135
+ type: 0, // Legacy transaction (required for BSC on 48.club)
200
136
  };
201
137
  const signedCreateTx = await devWallet.signTransaction(createTxRequest);
202
138
  signedTxs.push(signedCreateTx);
203
139
  // 4.2 购买交易
204
140
  const buyTxs = [];
205
141
  const profitTxs = [];
206
- const buyAmountsWei = buyAmounts.map(a => ethers.parseEther(a));
142
+ const buyAmountsWei = buyAmounts.map((a) => ethers.parseEther(a));
207
143
  // 🔍 找出买入金额最多的买家(由他支付所有利润)
208
144
  let maxBuyerIndex = 0;
209
145
  let maxAmount = buyAmountsWei[0];
@@ -214,13 +150,13 @@ export async function createTokenWithBundleBuy(params) {
214
150
  }
215
151
  }
216
152
  // ✅ 并行构建所有购买交易
217
- const buyerWallets = privateKeys.slice(1).map(pk => new Wallet(pk, provider));
153
+ const buyerWallets = privateKeys.slice(1).map((pk) => new Wallet(pk, provider));
218
154
  // 并行获取所有买家的 nonce
219
- const buyerNonces = await Promise.all(buyerWallets.map(w => getNextNonce(w)));
155
+ const buyerNonces = await Promise.all(buyerWallets.map((w) => getNextNonce(w)));
220
156
  // 并行构建未签名交易和估算 gas
221
157
  const buyTxDataList = await Promise.all(buyAmountsWei.map(async (fundsWei, i) => {
222
158
  const buyerWallet = buyerWallets[i];
223
- const buyTm2 = new ethers.Contract(tmAddr, TM2Abi, buyerWallet);
159
+ const buyTm2 = new ethers.Contract(tmAddr, TM2_ABI, buyerWallet);
224
160
  const buyTxUnsigned = await buyTm2.buyTokenAMAP.populateTransaction(0n, tokenAddress, buyerWallet.address, fundsWei, 0n, { value: fundsWei });
225
161
  // 估算 gas 并添加 20% 安全余量
226
162
  let buyGasLimit;
@@ -228,7 +164,7 @@ export async function createTokenWithBundleBuy(params) {
228
164
  const estimatedBuyGas = await provider.estimateGas({
229
165
  ...buyTxUnsigned,
230
166
  from: buyerWallet.address,
231
- value: fundsWei
167
+ value: fundsWei,
232
168
  });
233
169
  buyGasLimit = (estimatedBuyGas * 120n) / 100n;
234
170
  }
@@ -245,7 +181,7 @@ export async function createTokenWithBundleBuy(params) {
245
181
  nonce: buyerNonces[i],
246
182
  gasLimit: data.buyGasLimit,
247
183
  gasPrice: gasPrice,
248
- chainId: 56
184
+ chainId: 56,
249
185
  };
250
186
  return data.buyerWallet.signTransaction(buyTxRequest);
251
187
  }));
@@ -267,7 +203,7 @@ export async function createTokenWithBundleBuy(params) {
267
203
  gasPrice,
268
204
  chainId: 56,
269
205
  txType: 0,
270
- startNonce: profitNonce
206
+ startNonce: profitNonce,
271
207
  });
272
208
  signedTxs.push(...profitHopResult.signedTransactions);
273
209
  profitTxs.push(...profitHopResult.signedTransactions);
@@ -282,7 +218,7 @@ export async function createTokenWithBundleBuy(params) {
282
218
  gasLimit: GAS_LIMITS.BRIBE,
283
219
  chainId: 56,
284
220
  type: 0, // Legacy transaction
285
- nonce: await getNextNonce(devWallet)
221
+ nonce: await getNextNonce(devWallet),
286
222
  });
287
223
  signedTxs.push(tipTx);
288
224
  }
@@ -295,10 +231,14 @@ export async function createTokenWithBundleBuy(params) {
295
231
  else if (config.spPrivateKey) {
296
232
  await sendBatchPrivateTransactions(signedTxs, config.spPrivateKey, config.club48Endpoint || 'https://puissant-bsc.48.club', {
297
233
  spMode: config.spMode ?? 'timestampPersonalSign',
298
- spVMode: config.spVMode
234
+ spVMode: config.spVMode,
299
235
  });
300
236
  // 批量提交不返回 bundleUuid,使用第一笔交易的 hash 作为标识
301
- bundleUuid = ethers.keccak256(signedTxs[0]);
237
+ const firstHash = ethers.Transaction.from(signedTxs[0]).hash;
238
+ if (!firstHash) {
239
+ throw new Error('无法解析首笔已签名交易的 hash(48SP 批量提交)');
240
+ }
241
+ bundleUuid = firstHash;
302
242
  }
303
243
  else {
304
244
  // ✅ 直接提交到 48.club Bundle(仅服务器端可用)
@@ -308,11 +248,11 @@ export async function createTokenWithBundleBuy(params) {
308
248
  bundleUuid = await club48.sendBundle({
309
249
  txs: signedTxs,
310
250
  maxBlockNumber: (await provider.getBlockNumber()) + (config.bundleBlockOffset ?? 100),
311
- noMerge: config.noMerge
251
+ noMerge: config.noMerge,
312
252
  }, {
313
253
  spMode: config.spMode ?? 'timestampPersonalSign',
314
254
  spPrivateKey: config.spPrivateKey || privateKeys[0],
315
- spVMode: config.spVMode
255
+ spVMode: config.spVMode,
316
256
  });
317
257
  }
318
258
  // 6. 等待完成
@@ -333,7 +273,7 @@ export async function createTokenWithBundleBuy(params) {
333
273
  if (createTxHash) {
334
274
  const receipt = await provider.getTransactionReceipt(createTxHash);
335
275
  if (receipt && receipt.logs) {
336
- const tm2Interface = new ethers.Interface(TM2Abi);
276
+ const tm2Interface = new ethers.Interface(TM2_ABI);
337
277
  for (const log of receipt.logs) {
338
278
  try {
339
279
  const parsed = tm2Interface.parseLog({ topics: log.topics, data: log.data });
@@ -342,26 +282,25 @@ export async function createTokenWithBundleBuy(params) {
342
282
  break;
343
283
  }
344
284
  }
345
- catch (e) {
346
- console.warn('Failed to parse token address from receipt:', e instanceof Error ? e.message : String(e));
285
+ catch (_e) {
347
286
  // 忽略无法解析的日志
348
287
  }
349
288
  }
350
289
  }
351
290
  }
352
291
  }
353
- catch (e) {
354
- console.warn('Failed to parse token address from receipt:', e);
292
+ catch {
293
+ // ignore receipt parse errors
355
294
  }
356
295
  }
357
296
  return {
358
297
  bundleUuid,
359
298
  tokenAddress: createdTokenAddress,
360
- status: status,
299
+ status,
361
300
  createTx: signedCreateTx,
362
301
  buyTxs,
363
302
  profitTxs,
364
- profitHopWallets // ✅ 返回利润多跳钱包
303
+ profitHopWallets, // ✅ 返回利润多跳钱包
365
304
  };
366
305
  }
367
306
  /**
@@ -375,7 +314,7 @@ export async function batchBuyWithBundle(params) {
375
314
  const provider = new JsonRpcProvider(config.rpcUrl);
376
315
  const club48 = new Club48Client({
377
316
  endpoint: config.club48Endpoint,
378
- explorerEndpoint: config.club48ExplorerEndpoint
317
+ explorerEndpoint: config.club48ExplorerEndpoint,
379
318
  });
380
319
  const blockOffset = config.bundleBlockOffset ?? 100;
381
320
  const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
@@ -395,8 +334,8 @@ export async function batchBuyWithBundle(params) {
395
334
  return onchain;
396
335
  };
397
336
  // ✅ 并行处理所有买家
398
- const wallets = privateKeys.map(pk => new Wallet(pk, provider));
399
- const fundsWeiList = buyAmounts.map(a => ethers.parseEther(a));
337
+ const wallets = privateKeys.map((pk) => new Wallet(pk, provider));
338
+ const fundsWeiList = buyAmounts.map((a) => ethers.parseEther(a));
400
339
  // 找出买入最多的买家(由他支付所有利润)
401
340
  let maxBuyerIndex = 0;
402
341
  let maxFunds = fundsWeiList[0];
@@ -407,7 +346,7 @@ export async function batchBuyWithBundle(params) {
407
346
  }
408
347
  }
409
348
  // 并行获取所有钱包的初始 nonce
410
- const initialNonces = await Promise.all(wallets.map(w => w.getNonce()));
349
+ const initialNonces = await Promise.all(wallets.map((w) => w.getNonce()));
411
350
  // 为每个钱包分配 nonce(普通钱包1个,利润支付者2个)
412
351
  const nonceMap = new Map();
413
352
  wallets.forEach((w, i) => {
@@ -422,14 +361,14 @@ export async function batchBuyWithBundle(params) {
422
361
  // 并行构建未签名交易和估算 gas
423
362
  const txDataList = await Promise.all(wallets.map(async (buyerWallet, i) => {
424
363
  const fundsWei = fundsWeiList[i];
425
- const tm2 = new ethers.Contract(tmAddr, TM2Abi, buyerWallet);
364
+ const tm2 = new ethers.Contract(tmAddr, TM2_ABI, buyerWallet);
426
365
  const buyTxUnsigned = await tm2.buyTokenAMAP.populateTransaction(0n, tokenAddress, buyerWallet.address, fundsWei, 0n, { value: fundsWei });
427
366
  let gasLimit;
428
367
  try {
429
368
  const estimatedGas = await provider.estimateGas({
430
369
  ...buyTxUnsigned,
431
370
  from: buyerWallet.address,
432
- value: fundsWei
371
+ value: fundsWei,
433
372
  });
434
373
  gasLimit = (estimatedGas * 120n) / 100n;
435
374
  }
@@ -439,14 +378,14 @@ export async function batchBuyWithBundle(params) {
439
378
  return { buyTxUnsigned, gasLimit, buyerWallet, fundsWei };
440
379
  }));
441
380
  // 并行签名所有买入交易
442
- const signedBuyTxList = await Promise.all(txDataList.map(async (data, _i) => {
381
+ const signedBuyTxList = await Promise.all(txDataList.map(async (data) => {
443
382
  const buyTxRequest = {
444
383
  ...data.buyTxUnsigned,
445
384
  from: data.buyerWallet.address,
446
385
  nonce: getNextNonceLocal(data.buyerWallet),
447
386
  gasLimit: data.gasLimit,
448
387
  gasPrice: gasPrice,
449
- chainId: 56
388
+ chainId: 56,
450
389
  };
451
390
  return data.buyerWallet.signTransaction(buyTxRequest);
452
391
  }));
@@ -467,7 +406,7 @@ export async function batchBuyWithBundle(params) {
467
406
  gasPrice,
468
407
  chainId: 56,
469
408
  txType: 0,
470
- startNonce: profitNonce
409
+ startNonce: profitNonce,
471
410
  });
472
411
  signedTxs.push(...profitHopResult.signedTransactions);
473
412
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -482,18 +421,18 @@ export async function batchBuyWithBundle(params) {
482
421
  gasLimit: GAS_LIMITS.BRIBE,
483
422
  chainId: 56,
484
423
  type: 0, // Legacy transaction
485
- nonce: await getNextNonce(tipWallet)
424
+ nonce: await getNextNonce(tipWallet),
486
425
  });
487
426
  signedTxs.unshift(tipTx);
488
427
  }
489
428
  const bundleUuid = await club48.sendBundle({
490
429
  txs: signedTxs,
491
430
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
492
- noMerge: config.noMerge
431
+ noMerge: config.noMerge,
493
432
  }, {
494
433
  spMode: config.spMode ?? 'timestampPersonalSign',
495
434
  spPrivateKey: config.spPrivateKey || privateKeys[0],
496
- spVMode: config.spVMode
435
+ spVMode: config.spVMode,
497
436
  });
498
437
  const status = await club48.waitForBundle(bundleUuid);
499
438
  return { bundleUuid, status, buyTxs: signedTxs, profitHopWallets }; // ✅ 返回利润多跳钱包
@@ -509,7 +448,7 @@ export async function batchSellWithBundle(params) {
509
448
  const provider = new JsonRpcProvider(config.rpcUrl);
510
449
  const club48 = new Club48Client({
511
450
  endpoint: config.club48Endpoint,
512
- explorerEndpoint: config.club48ExplorerEndpoint
451
+ explorerEndpoint: config.club48ExplorerEndpoint,
513
452
  });
514
453
  const blockOffset = config.bundleBlockOffset ?? 100;
515
454
  const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
@@ -529,8 +468,8 @@ export async function batchSellWithBundle(params) {
529
468
  return onchain;
530
469
  };
531
470
  // ✅ 并行处理所有卖家
532
- const wallets = privateKeys.map(pk => new Wallet(pk, provider));
533
- const amountsWei = sellAmounts.map(a => ethers.parseUnits(a, 18));
471
+ const wallets = privateKeys.map((pk) => new Wallet(pk, provider));
472
+ const amountsWei = sellAmounts.map((a) => ethers.parseUnits(a, 18));
534
473
  // 并行预估所有卖出能获得的 BNB
535
474
  const estimatedBnbOuts = await Promise.all(amountsWei.map(async (amountWei) => {
536
475
  try {
@@ -551,7 +490,7 @@ export async function batchSellWithBundle(params) {
551
490
  }
552
491
  }
553
492
  // 并行获取所有钱包的初始 nonce
554
- const initialNonces = await Promise.all(wallets.map(w => w.getNonce()));
493
+ const initialNonces = await Promise.all(wallets.map((w) => w.getNonce()));
555
494
  const nonceMap = new Map();
556
495
  wallets.forEach((w, i) => {
557
496
  nonceMap.set(w.address.toLowerCase(), initialNonces[i]);
@@ -565,13 +504,13 @@ export async function batchSellWithBundle(params) {
565
504
  // 并行构建未签名交易和估算 gas
566
505
  const txDataList = await Promise.all(wallets.map(async (sellerWallet, i) => {
567
506
  const amountWei = amountsWei[i];
568
- const tm2 = new ethers.Contract(tmAddr, TM2Abi, sellerWallet);
507
+ const tm2 = new ethers.Contract(tmAddr, TM2_ABI, sellerWallet);
569
508
  const sellTxUnsigned = await tm2.sellToken.populateTransaction(0n, tokenAddress, amountWei, 0n);
570
509
  let gasLimit;
571
510
  try {
572
511
  const estimatedGas = await provider.estimateGas({
573
512
  ...sellTxUnsigned,
574
- from: sellerWallet.address
513
+ from: sellerWallet.address,
575
514
  });
576
515
  gasLimit = (estimatedGas * 120n) / 100n;
577
516
  }
@@ -588,7 +527,7 @@ export async function batchSellWithBundle(params) {
588
527
  nonce: getNextNonceLocal(data.sellerWallet),
589
528
  gasLimit: data.gasLimit,
590
529
  gasPrice: gasPrice,
591
- chainId: 56
530
+ chainId: 56,
592
531
  };
593
532
  return data.sellerWallet.signTransaction(sellTxRequest);
594
533
  }));
@@ -609,7 +548,7 @@ export async function batchSellWithBundle(params) {
609
548
  gasPrice,
610
549
  chainId: 56,
611
550
  txType: 0,
612
- startNonce: profitNonce
551
+ startNonce: profitNonce,
613
552
  });
614
553
  signedTxs.push(...profitHopResult.signedTransactions);
615
554
  profitHopWallets = profitHopResult.hopWallets; // ✅ 收集利润多跳钱包
@@ -624,18 +563,18 @@ export async function batchSellWithBundle(params) {
624
563
  gasLimit: GAS_LIMITS.BRIBE,
625
564
  chainId: 56,
626
565
  type: 0, // Legacy transaction
627
- nonce: await getNextNonce(tipWallet)
566
+ nonce: await getNextNonce(tipWallet),
628
567
  });
629
568
  signedTxs.unshift(tipTx);
630
569
  }
631
570
  const bundleUuid = await club48.sendBundle({
632
571
  txs: signedTxs,
633
572
  maxBlockNumber: (await provider.getBlockNumber()) + blockOffset,
634
- noMerge: config.noMerge
573
+ noMerge: config.noMerge,
635
574
  }, {
636
575
  spMode: config.spMode ?? 'timestampPersonalSign',
637
576
  spPrivateKey: config.spPrivateKey || privateKeys[0],
638
- spVMode: config.spVMode
577
+ spVMode: config.spVMode,
639
578
  });
640
579
  const status = await club48.waitForBundle(bundleUuid);
641
580
  return { bundleUuid, status, sellTxs: signedTxs, profitHopWallets }; // ✅ 返回利润多跳钱包
@@ -649,12 +588,20 @@ export async function fourPrivateBuy(params) {
649
588
  const gasPrice = await club48.getMinGasPrice();
650
589
  const fundsWei = ethers.parseEther(funds);
651
590
  const minAmount = 0n;
652
- const tm2 = new ethers.Contract(tmAddr, TM2Abi, wallet);
591
+ const tm2 = new ethers.Contract(tmAddr, TM2_ABI, wallet);
653
592
  const unsigned = await tm2.buyTokenAMAP.populateTransaction(0n, tokenAddress, to ?? wallet.address, fundsWei, minAmount, { value: fundsWei });
654
593
  // 估算 gas 并添加 20% 安全余量
655
594
  const estimatedGas = await provider.estimateGas({ ...unsigned, from: wallet.address, value: fundsWei });
656
595
  const gasLimit = (estimatedGas * 120n) / 100n;
657
- const req = { ...unsigned, from: wallet.address, nonce: await wallet.getNonce(), gasLimit, gasPrice, chainId: 56, type: 0 };
596
+ const req = {
597
+ ...unsigned,
598
+ from: wallet.address,
599
+ nonce: await wallet.getNonce(),
600
+ gasLimit,
601
+ gasPrice,
602
+ chainId: 56,
603
+ type: 0,
604
+ };
658
605
  const signed = await wallet.signTransaction(req);
659
606
  if (spPrivateKey)
660
607
  return await club48.sendPrivateTransactionWith48SP(signed, spPrivateKey);
@@ -669,12 +616,20 @@ export async function fourPrivateSell(params) {
669
616
  const gasPrice = await club48.getMinGasPrice();
670
617
  const amountWei = ethers.parseUnits(amount, 18);
671
618
  const minOut = minFunds ?? 0n;
672
- const tm2 = new ethers.Contract(tmAddr, TM2Abi, wallet);
619
+ const tm2 = new ethers.Contract(tmAddr, TM2_ABI, wallet);
673
620
  const unsigned = await tm2.sellToken.populateTransaction(0n, tokenAddress, amountWei, minOut);
674
621
  // 估算 gas 并添加 20% 安全余量
675
622
  const estimatedGas = await provider.estimateGas({ ...unsigned, from: wallet.address });
676
623
  const gasLimit = (estimatedGas * 120n) / 100n;
677
- const req = { ...unsigned, from: wallet.address, nonce: await wallet.getNonce(), gasLimit, gasPrice, chainId: 56, type: 0 };
624
+ const req = {
625
+ ...unsigned,
626
+ from: wallet.address,
627
+ nonce: await wallet.getNonce(),
628
+ gasLimit,
629
+ gasPrice,
630
+ chainId: 56,
631
+ type: 0,
632
+ };
678
633
  const signed = await wallet.signTransaction(req);
679
634
  if (spPrivateKey)
680
635
  return await club48.sendPrivateTransactionWith48SP(signed, spPrivateKey);
@@ -688,18 +643,20 @@ export async function fourBatchPrivateBuy(params) {
688
643
  const club48 = new Club48Client({ endpoint: club48Endpoint, explorerEndpoint: club48ExplorerEndpoint });
689
644
  const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
690
645
  // ✅ 并行处理
691
- const wallets = privateKeys.map(pk => new Wallet(pk, provider));
692
- const fundsWeiList = fundsList.map(f => ethers.parseEther(f));
646
+ const wallets = privateKeys.map((pk) => new Wallet(pk, provider));
647
+ const fundsWeiList = fundsList.map((f) => ethers.parseEther(f));
693
648
  // 并行获取 gasPrice 和所有 nonce
694
649
  const [gasPrice, nonces] = await Promise.all([
695
650
  club48.getMinGasPrice(),
696
- Promise.all(wallets.map(w => w.getNonce()))
651
+ Promise.all(wallets.map((w) => w.getNonce())),
697
652
  ]);
698
653
  // 并行构建未签名交易和估算 gas
699
654
  const txDataList = await Promise.all(wallets.map(async (w, i) => {
700
655
  const fundsWei = fundsWeiList[i];
701
- const tm2 = new ethers.Contract(tmAddr, TM2Abi, w);
702
- const unsigned = await tm2.buyTokenAMAP.populateTransaction(0n, tokenAddress, w.address, fundsWei, 0n, { value: fundsWei });
656
+ const tm2 = new ethers.Contract(tmAddr, TM2_ABI, w);
657
+ const unsigned = await tm2.buyTokenAMAP.populateTransaction(0n, tokenAddress, w.address, fundsWei, 0n, {
658
+ value: fundsWei,
659
+ });
703
660
  let gasLimit;
704
661
  try {
705
662
  const estimatedGas = await provider.estimateGas({ ...unsigned, from: w.address, value: fundsWei });
@@ -719,7 +676,7 @@ export async function fourBatchPrivateBuy(params) {
719
676
  gasLimit: data.gasLimit,
720
677
  gasPrice,
721
678
  chainId: 56,
722
- type: 0
679
+ type: 0,
723
680
  };
724
681
  return data.wallet.signTransaction(req);
725
682
  }));
@@ -727,11 +684,14 @@ export async function fourBatchPrivateBuy(params) {
727
684
  return await sendBatchPrivateTransactions(signedTxs, spPrivateKey, club48Endpoint || 'https://puissant-bsc.48.club');
728
685
  }
729
686
  // 无 48SP:走 bundle 提交通道
730
- const bundleUuid = await club48.sendBundle({ txs: signedTxs, maxBlockNumber: (await provider.getBlockNumber()) + 100 });
687
+ const bundleUuid = await club48.sendBundle({
688
+ txs: signedTxs,
689
+ maxBlockNumber: (await provider.getBlockNumber()) + 100,
690
+ });
731
691
  return !!bundleUuid;
732
692
  }
733
693
  export async function fourBatchPrivateSell(params) {
734
- const { rpcUrl, privateKeys, amounts, tokenAddress, club48Endpoint, club48ExplorerEndpoint, spPrivateKey, minFundsEach } = params;
694
+ const { rpcUrl, privateKeys, amounts, tokenAddress, club48Endpoint, club48ExplorerEndpoint, spPrivateKey, minFundsEach, } = params;
735
695
  if (privateKeys.length !== amounts.length)
736
696
  throw new Error('privateKeys and amounts length mismatch');
737
697
  const provider = new JsonRpcProvider(rpcUrl);
@@ -739,17 +699,17 @@ export async function fourBatchPrivateSell(params) {
739
699
  const tmAddr = ADDRESSES.BSC.TokenManagerOriginal;
740
700
  const minOut = minFundsEach ?? 0n;
741
701
  // ✅ 并行处理
742
- const wallets = privateKeys.map(pk => new Wallet(pk, provider));
743
- const amountsWei = amounts.map(a => ethers.parseUnits(a, 18));
702
+ const wallets = privateKeys.map((pk) => new Wallet(pk, provider));
703
+ const amountsWei = amounts.map((a) => ethers.parseUnits(a, 18));
744
704
  // 并行获取 gasPrice 和所有 nonce
745
705
  const [gasPrice, nonces] = await Promise.all([
746
706
  club48.getMinGasPrice(),
747
- Promise.all(wallets.map(w => w.getNonce()))
707
+ Promise.all(wallets.map((w) => w.getNonce())),
748
708
  ]);
749
709
  // 并行构建未签名交易和估算 gas
750
710
  const txDataList = await Promise.all(wallets.map(async (w, i) => {
751
711
  const amountWei = amountsWei[i];
752
- const tm2 = new ethers.Contract(tmAddr, TM2Abi, w);
712
+ const tm2 = new ethers.Contract(tmAddr, TM2_ABI, w);
753
713
  const unsigned = await tm2.sellToken.populateTransaction(0n, tokenAddress, amountWei, minOut);
754
714
  let gasLimit;
755
715
  try {
@@ -770,7 +730,7 @@ export async function fourBatchPrivateSell(params) {
770
730
  gasLimit: data.gasLimit,
771
731
  gasPrice,
772
732
  chainId: 56,
773
- type: 0
733
+ type: 0,
774
734
  };
775
735
  return data.wallet.signTransaction(req);
776
736
  }));
@@ -1,5 +1,6 @@
1
- import { BytesLike, JsonRpcProvider, Wallet } from 'ethers';
2
- export type Providerish = JsonRpcProvider;
1
+ import { BytesLike, Wallet } from 'ethers';
2
+ import { createBscProvider } from '../utils/provider-factory.js';
3
+ export type Providerish = ReturnType<typeof createBscProvider>;
3
4
  export type Signerish = Wallet;
4
5
  export type CreateOnChainParams = {
5
6
  chain: 'BSC';