four-flap-meme-sdk 1.9.49 → 2.1.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 (567) hide show
  1. package/README.en.md +41 -6
  2. package/README.md +31 -0
  3. package/README.zh-CN.md +41 -6
  4. package/dist/__tests__/subpath-exports.test.js +34 -0
  5. package/dist/abis/common.js +74 -68
  6. package/dist/abis/flap/vault.js +9 -7
  7. package/dist/abis/index.d.ts +3 -4
  8. package/dist/abis/index.js +3 -4
  9. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  10. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  11. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  12. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  13. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  14. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  15. package/dist/bundle-core/config-helpers.d.ts +36 -0
  16. package/dist/bundle-core/config-helpers.js +57 -0
  17. package/dist/bundle-core/errors.d.ts +50 -0
  18. package/dist/bundle-core/errors.js +34 -0
  19. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  20. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  21. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  22. package/dist/bundle-core/four-meme/core-helpers.js +40 -0
  23. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  24. package/dist/bundle-core/four-meme/core.js +515 -0
  25. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  26. package/dist/{shared 2/flap/portal-bundle-merkle/pancake-proxy.js → bundle-core/four-meme/pancake-proxy.js} +277 -299
  27. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  28. package/dist/bundle-core/four-meme/private.js +465 -0
  29. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  30. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  31. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  32. package/dist/bundle-core/four-meme/swap-buy-first.js +493 -0
  33. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  34. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  35. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  36. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  37. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +27 -0
  38. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  39. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  40. package/dist/{chains/bsc/four/swap/index.js → bundle-core/four-meme/swap.js} +84 -408
  41. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  42. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  43. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  44. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  45. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  46. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  47. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  48. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  49. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  50. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  51. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  52. package/dist/bundle-core/index.d.ts +8 -0
  53. package/dist/bundle-core/index.js +8 -0
  54. package/dist/bundle-core/internal.d.ts +21 -0
  55. package/dist/bundle-core/internal.js +182 -0
  56. package/dist/bundle-core/sign-context-helpers.d.ts +25 -0
  57. package/dist/bundle-core/sign-context-helpers.js +67 -0
  58. package/dist/bundle-core/submit.d.ts +293 -0
  59. package/dist/bundle-core/submit.js +727 -0
  60. package/dist/bundle-core/types/index.d.ts +8 -0
  61. package/dist/bundle-core/types.d.ts +1 -0
  62. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  63. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -116
  64. package/dist/chains/bsc/four/config.d.ts +5 -70
  65. package/dist/chains/bsc/four/config.js +2 -115
  66. package/dist/chains/bsc/four/core.d.ts +1 -4
  67. package/dist/chains/bsc/four/core.js +1 -589
  68. package/dist/chains/bsc/four/index.d.ts +6 -6
  69. package/dist/chains/bsc/four/index.js +6 -6
  70. package/dist/chains/bsc/four/internal.d.ts +2 -50
  71. package/dist/chains/bsc/four/internal.js +2 -237
  72. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  73. package/dist/chains/bsc/four/pancake-proxy.js +1 -688
  74. package/dist/chains/bsc/four/private.d.ts +1 -27
  75. package/dist/chains/bsc/four/private.js +1 -477
  76. package/dist/chains/bsc/four/submit.d.ts +2 -315
  77. package/dist/chains/bsc/four/submit.js +2 -746
  78. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  79. package/dist/chains/bsc/four/swap-buy-first.js +2 -506
  80. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  81. package/dist/chains/bsc/four/swap-internal.js +1 -18
  82. package/dist/chains/bsc/four/swap.d.ts +2 -144
  83. package/dist/chains/bsc/four/swap.js +2 -760
  84. package/dist/chains/bsc/four/types.d.ts +1 -476
  85. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  86. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  87. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  88. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  89. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  90. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  91. package/dist/chains/bsc/four/utils.d.ts +5 -18
  92. package/dist/chains/bsc/four/utils.js +5 -1534
  93. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +159 -0
  94. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +117 -0
  95. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  96. package/dist/chains/bsc/pancake/bundle-buy-first.js +97 -207
  97. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  98. package/dist/chains/bsc/pancake/{bundle-swap/helpers.js → bundle-swap-helpers.js} +63 -70
  99. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  100. package/dist/chains/bsc/pancake/bundle-swap.js +111 -686
  101. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  102. package/dist/chains/bsc/pancake/index.js +1 -3
  103. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  104. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  105. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  106. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  107. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  108. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  109. package/dist/chains/eni/batch-router/transfer.js +54 -23
  110. package/dist/chains/eni/batch-router/utils.js +32 -6
  111. package/dist/chains/eni/bundler/sign.js +4 -4
  112. package/dist/chains/eni/bundler/submit.js +1 -4
  113. package/dist/chains/eni/constants.js +1 -1
  114. package/dist/chains/eni/index.d.ts +1 -1
  115. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  116. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  117. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  118. package/dist/chains/eni/platforms/daoaas/meta.js +8 -4
  119. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -43
  120. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  121. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  122. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  123. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  124. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -47
  125. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  126. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  127. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  128. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  129. package/dist/chains/eni/platforms/iro/index.js +4 -4
  130. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  131. package/dist/chains/eni/platforms/iro/token.js +107 -31
  132. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  133. package/dist/chains/eni/submit.js +5 -13
  134. package/dist/chains/index.d.ts +13 -0
  135. package/dist/chains/index.js +13 -0
  136. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  137. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -20
  138. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  139. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  140. package/dist/chains/xlayer/eip7702/bundle-create.js +93 -56
  141. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  142. package/dist/chains/xlayer/eip7702/bundle-sell.js +26 -74
  143. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  144. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -68
  145. package/dist/chains/xlayer/eip7702/constants.d.ts +1 -16
  146. package/dist/chains/xlayer/eip7702/constants.js +3 -21
  147. package/dist/chains/xlayer/eip7702/index.d.ts +29 -46
  148. package/dist/chains/xlayer/eip7702/index.js +27 -81
  149. package/dist/chains/xlayer/eip7702/{multi-hop-transfer/types.d.ts → multi-hop-transfer-helpers.d.ts} +17 -23
  150. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  151. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +58 -291
  152. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  153. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +57 -0
  154. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  155. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  156. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  157. package/dist/chains/xlayer/eip7702/{volume/types.d.ts → volume-helpers.d.ts} +41 -17
  158. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  159. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  160. package/dist/chains/xlayer/eip7702/volume.js +83 -158
  161. package/dist/chains/xlayer/eoa/constants.js +1 -1
  162. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  163. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  164. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  165. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  166. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +64 -276
  167. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  168. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +14 -14
  169. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  170. package/dist/chains/xlayer/eoa/index.js +8 -23
  171. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  172. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  173. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  174. package/dist/chains/xlayer/eoa/types.js +1 -3
  175. package/dist/contracts/helper3.d.ts +20 -17
  176. package/dist/contracts/helper3.js +56 -20
  177. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  178. package/dist/contracts/tm-bundle-helpers.js +72 -0
  179. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  180. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -117
  181. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -70
  182. package/dist/contracts/tm-bundle-merkle/config.js +2 -115
  183. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  184. package/dist/contracts/tm-bundle-merkle/core.js +1 -588
  185. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  186. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  187. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -50
  188. package/dist/contracts/tm-bundle-merkle/internal.js +2 -236
  189. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  190. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -687
  191. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  192. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  193. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  194. package/dist/contracts/tm-bundle-merkle/submit.js +3 -919
  195. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  196. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -505
  197. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  198. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  199. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  200. package/dist/contracts/tm-bundle-merkle/swap.js +2 -757
  201. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  202. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  203. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  204. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  205. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  206. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  207. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  208. package/dist/contracts/tm-bundle-merkle/utils.d.ts +5 -6
  209. package/dist/contracts/tm-bundle-merkle/utils.js +5 -6
  210. package/dist/contracts/tm-bundle.d.ts +3 -51
  211. package/dist/contracts/tm-bundle.js +102 -142
  212. package/dist/contracts/tm.d.ts +3 -2
  213. package/dist/contracts/tm.js +36 -32
  214. package/dist/contracts/tm1.js +9 -4
  215. package/dist/contracts/tm2.js +9 -4
  216. package/dist/dex/direct-router-helpers.d.ts +264 -0
  217. package/dist/dex/direct-router-helpers.js +539 -0
  218. package/dist/dex/direct-router.d.ts +3 -125
  219. package/dist/dex/direct-router.js +237 -652
  220. package/dist/dex/{direct-router/types.d.ts → types.d.ts} +1 -1
  221. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  222. package/dist/exports/root-bundle-and-tooling.js +30 -0
  223. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  224. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  225. package/dist/exports/root-foundations.d.ts +35 -0
  226. package/dist/exports/root-foundations.js +70 -0
  227. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  228. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  229. package/dist/flap/index.d.ts +10 -0
  230. package/dist/flap/index.js +8 -0
  231. package/dist/flows/create.d.ts +2 -2
  232. package/dist/flows/create.js +6 -6
  233. package/dist/flows/index.d.ts +1 -0
  234. package/dist/flows/index.js +1 -0
  235. package/dist/index.d.ts +20 -91
  236. package/dist/index.js +20 -215
  237. package/dist/shared/abis/common.d.ts +2 -83
  238. package/dist/shared/abis/common.js +2 -252
  239. package/dist/shared/abis/index.d.ts +5 -6
  240. package/dist/shared/abis/index.js +5 -7
  241. package/dist/shared/clients/blockrazor.js +41 -24
  242. package/dist/shared/clients/club48.js +30 -26
  243. package/dist/shared/clients/emitservice.js +2 -0
  244. package/dist/shared/clients/four.js +23 -18
  245. package/dist/shared/clients/index.d.ts +8 -0
  246. package/dist/shared/clients/index.js +8 -0
  247. package/dist/shared/clients/merkle.js +26 -30
  248. package/dist/shared/constants/addresses.d.ts +1 -1
  249. package/dist/shared/constants/addresses.js +11 -2
  250. package/dist/shared/constants/chains.d.ts +1 -1
  251. package/dist/shared/constants/chains.js +1 -1
  252. package/dist/shared/constants/gas.d.ts +1 -1
  253. package/dist/shared/constants/gas.js +2 -6
  254. package/dist/shared/constants/index.d.ts +3 -0
  255. package/dist/shared/constants/index.js +1 -0
  256. package/dist/shared/constants/quote.d.ts +30 -0
  257. package/dist/shared/constants/quote.js +37 -0
  258. package/dist/shared/flap/abi.js +1 -1
  259. package/dist/shared/flap/constants.d.ts +1 -1
  260. package/dist/shared/flap/constants.js +2 -2
  261. package/dist/shared/flap/curve.js +3 -0
  262. package/dist/shared/flap/errors.d.ts +1 -4
  263. package/dist/shared/flap/errors.js +21 -3
  264. package/dist/shared/flap/index.d.ts +2 -2
  265. package/dist/shared/flap/index.js +2 -2
  266. package/dist/shared/flap/meta.d.ts +16 -18
  267. package/dist/shared/flap/meta.js +14 -26
  268. package/dist/shared/flap/permit.js +6 -5
  269. package/dist/shared/flap/pinata.d.ts +9 -2
  270. package/dist/shared/flap/pinata.js +20 -18
  271. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  272. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  273. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  274. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  275. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  276. package/dist/shared/flap/portal-bundle-merkle/core.js +66 -156
  277. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +81 -86
  278. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +100 -92
  279. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  280. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  281. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  282. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  283. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  284. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  285. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  286. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +66 -247
  287. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  288. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  289. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +2 -71
  290. package/dist/shared/flap/portal-bundle-merkle/swap.js +103 -410
  291. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +73 -3
  292. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  293. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  294. package/dist/shared/flap/portal-bundle.js +54 -42
  295. package/dist/shared/flap/portal.js +32 -10
  296. package/dist/shared/flap/vanity.js +4 -7
  297. package/dist/shared/flap/vault.d.ts +1 -1
  298. package/dist/shared/flap/vault.js +54 -48
  299. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  300. package/dist/shared/foundation/dex/v3-path.js +35 -0
  301. package/dist/shared/foundation/gas/bundle-gas.d.ts +39 -0
  302. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  303. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  304. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  305. package/dist/shared/foundation/index.d.ts +13 -0
  306. package/dist/shared/foundation/index.js +12 -0
  307. package/dist/shared/foundation/nonce/nonce-manager.d.ts +17 -0
  308. package/dist/shared/foundation/nonce/nonce-manager.js +180 -0
  309. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  310. package/dist/shared/foundation/normalize-unknown.js +29 -0
  311. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  312. package/dist/shared/foundation/sdk-logger.js +12 -0
  313. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  314. package/dist/shared/foundation/tx/build-request.js +25 -0
  315. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  316. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  317. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  318. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  319. package/dist/{utils/erc20/types.d.ts → shared/foundation/types/erc20.d.ts} +7 -19
  320. package/dist/{utils/holders-maker/types.d.ts → shared/foundation/types/holders-maker.d.ts} +4 -12
  321. package/dist/shared/foundation/types/index.d.ts +7 -0
  322. package/dist/{utils/lp-inspect/types.d.ts → shared/foundation/types/lp-inspect.d.ts} +4 -2
  323. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  324. package/dist/shared/foundation/types/multicall.js +1 -0
  325. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  326. package/dist/shared/foundation/types/private-sale.js +1 -0
  327. package/dist/{utils/quote-helpers/types.d.ts → shared/foundation/types/quote-helpers.d.ts} +1 -0
  328. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  329. package/dist/shared/four/tax-token.d.ts +1 -1
  330. package/dist/shared/four/tax-token.js +27 -7
  331. package/dist/shared/index.d.ts +6 -0
  332. package/dist/shared/index.js +4 -0
  333. package/dist/utils/airdrop-sweep.d.ts +4 -76
  334. package/dist/utils/airdrop-sweep.js +38 -52
  335. package/dist/utils/bundle-helpers.d.ts +9 -243
  336. package/dist/utils/bundle-helpers.js +10 -584
  337. package/dist/utils/constants.d.ts +5 -61
  338. package/dist/utils/constants.js +5 -80
  339. package/dist/utils/contract-factory.d.ts +2 -4
  340. package/dist/utils/contract-factory.js +25 -18
  341. package/dist/utils/erc20.d.ts +8 -90
  342. package/dist/utils/erc20.js +94 -153
  343. package/dist/utils/errors.d.ts +10 -22
  344. package/dist/utils/errors.js +61 -79
  345. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  346. package/dist/utils/holders-maker/addresses.js +15 -0
  347. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  348. package/dist/utils/holders-maker/buy-tx.js +278 -0
  349. package/dist/utils/holders-maker/constants.d.ts +6 -0
  350. package/dist/utils/holders-maker/constants.js +7 -0
  351. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  352. package/dist/utils/holders-maker/disperse.js +90 -0
  353. package/dist/utils/holders-maker/routing.d.ts +4 -0
  354. package/dist/utils/holders-maker/routing.js +45 -0
  355. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  356. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  357. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  358. package/dist/utils/holders-maker-helpers.js +9 -0
  359. package/dist/utils/holders-maker.d.ts +2 -138
  360. package/dist/utils/holders-maker.js +23 -651
  361. package/dist/utils/hop-chains.d.ts +35 -0
  362. package/dist/utils/hop-chains.js +215 -0
  363. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  364. package/dist/utils/lp-inspect-helpers.js +109 -0
  365. package/dist/utils/lp-inspect.d.ts +2 -112
  366. package/dist/utils/lp-inspect.js +63 -195
  367. package/dist/utils/mpcExclusive.d.ts +2 -5
  368. package/dist/utils/mpcExclusive.js +4 -3
  369. package/dist/utils/private-sale.d.ts +2 -58
  370. package/dist/utils/private-sale.js +2 -7
  371. package/dist/utils/provider-factory.d.ts +4 -0
  372. package/dist/utils/provider-factory.js +10 -0
  373. package/dist/utils/quote-helpers.d.ts +4 -45
  374. package/dist/utils/quote-helpers.js +15 -65
  375. package/dist/utils/stealth-transfer.d.ts +2 -28
  376. package/dist/utils/stealth-transfer.js +30 -14
  377. package/dist/utils/swap-helpers.d.ts +0 -3
  378. package/dist/utils/swap-helpers.js +6 -9
  379. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  380. package/dist/utils/types/airdrop-sweep.js +1 -0
  381. package/dist/utils/types/contract-factory.d.ts +1 -0
  382. package/dist/utils/types/contract-factory.js +1 -0
  383. package/dist/utils/types/erc20.d.ts +1 -0
  384. package/dist/utils/types/erc20.js +1 -0
  385. package/dist/utils/types/errors.d.ts +1 -0
  386. package/dist/utils/types/errors.js +1 -0
  387. package/dist/utils/types/holders-maker.d.ts +1 -0
  388. package/dist/utils/types/holders-maker.js +1 -0
  389. package/dist/utils/types/hop-chains.d.ts +8 -0
  390. package/dist/utils/types/hop-chains.js +1 -0
  391. package/dist/utils/types/index.d.ts +13 -0
  392. package/dist/utils/types/index.js +1 -0
  393. package/dist/utils/types/lp-inspect.d.ts +1 -0
  394. package/dist/utils/types/lp-inspect.js +1 -0
  395. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  396. package/dist/utils/types/mpc-exclusive.js +1 -0
  397. package/dist/utils/types/private-sale.d.ts +1 -0
  398. package/dist/utils/types/private-sale.js +1 -0
  399. package/dist/utils/types/quote-helpers.d.ts +1 -0
  400. package/dist/utils/types/quote-helpers.js +1 -0
  401. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  402. package/dist/utils/types/stealth-transfer.js +1 -0
  403. package/dist/utils/types/wallet.d.ts +25 -0
  404. package/dist/utils/types/wallet.js +1 -0
  405. package/dist/utils/wallet.d.ts +2 -25
  406. package/dist/utils/wallet.js +9 -10
  407. package/package.json +120 -2
  408. package/src/abis/contracts/TaxToken.json +969 -0
  409. package/src/abis/contracts/TokenManager.json +836 -0
  410. package/src/abis/contracts/TokenManager2.json +136 -0
  411. package/src/abis/contracts/TokenManagerHelper3.json +993 -0
  412. package/dist/chains/bsc/four/submit/blockrazor.d.ts +0 -18
  413. package/dist/chains/bsc/four/submit/blockrazor.js +0 -86
  414. package/dist/chains/bsc/four/submit/direct.d.ts +0 -66
  415. package/dist/chains/bsc/four/submit/direct.js +0 -452
  416. package/dist/chains/bsc/four/submit/helpers.d.ts +0 -18
  417. package/dist/chains/bsc/four/submit/helpers.js +0 -57
  418. package/dist/chains/bsc/four/submit/index.d.ts +0 -12
  419. package/dist/chains/bsc/four/submit/index.js +0 -11
  420. package/dist/chains/bsc/four/submit/merkle.d.ts +0 -18
  421. package/dist/chains/bsc/four/submit/merkle.js +0 -74
  422. package/dist/chains/bsc/four/submit/types.d.ts +0 -143
  423. package/dist/chains/bsc/four/swap/index.d.ts +0 -32
  424. package/dist/chains/bsc/four/swap/types.d.ts +0 -70
  425. package/dist/chains/bsc/four/utils/index.d.ts +0 -20
  426. package/dist/chains/bsc/four/utils/index.js +0 -1558
  427. package/dist/chains/bsc/pancake/bundle-buy-first/index.d.ts +0 -8
  428. package/dist/chains/bsc/pancake/bundle-buy-first/index.js +0 -907
  429. package/dist/chains/bsc/pancake/bundle-buy-first/types.d.ts +0 -73
  430. package/dist/chains/bsc/pancake/bundle-swap/helpers.d.ts +0 -102
  431. package/dist/chains/bsc/pancake/bundle-swap/index.d.ts +0 -50
  432. package/dist/chains/bsc/pancake/bundle-swap/index.js +0 -1066
  433. package/dist/chains/bsc/pancake/bundle-swap/types.d.ts +0 -202
  434. package/dist/chains/bsc/pancake/bundle-swap/types.js +0 -3
  435. package/dist/chains/xlayer/eip7702/bundle-swap/index.d.ts +0 -72
  436. package/dist/chains/xlayer/eip7702/bundle-swap/index.js +0 -921
  437. package/dist/chains/xlayer/eip7702/bundle-swap/types.d.ts +0 -65
  438. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.d.ts +0 -128
  439. package/dist/chains/xlayer/eip7702/multi-hop-transfer/index.js +0 -857
  440. package/dist/chains/xlayer/eip7702/volume/index.d.ts +0 -96
  441. package/dist/chains/xlayer/eip7702/volume/index.js +0 -793
  442. package/dist/dex/direct-router/index.d.ts +0 -70
  443. package/dist/dex/direct-router/index.js +0 -1410
  444. package/dist/shared/abis/TaxToken.json +0 -969
  445. package/dist/shared/abis/TokenManager.json +0 -836
  446. package/dist/shared/abis/TokenManager2.json +0 -136
  447. package/dist/shared/abis/TokenManagerHelper3.json +0 -993
  448. package/dist/shared/flap/__tests__/curve.test.js +0 -85
  449. package/dist/shared/flap/portal/index.d.ts +0 -12
  450. package/dist/shared/flap/portal/index.js +0 -11
  451. package/dist/shared/flap/portal/portal.d.ts +0 -47
  452. package/dist/shared/flap/portal/portal.js +0 -218
  453. package/dist/shared/flap/portal/types.d.ts +0 -227
  454. package/dist/shared/flap/portal/types.js +0 -80
  455. package/dist/shared/flap/portal/writer.d.ts +0 -121
  456. package/dist/shared/flap/portal/writer.js +0 -265
  457. package/dist/shared/flap/portal-bundle-merkle/core/index.d.ts +0 -18
  458. package/dist/shared/flap/portal-bundle-merkle/core/index.js +0 -938
  459. package/dist/shared/flap/portal-bundle-merkle/swap/index.d.ts +0 -42
  460. package/dist/shared/flap/portal-bundle-merkle/swap/index.js +0 -1448
  461. package/dist/shared/flap/portal-bundle-merkle/swap/types.d.ts +0 -84
  462. package/dist/shared/flap/portal-bundle-merkle/utils/index.d.ts +0 -17
  463. package/dist/shared/flap/portal-bundle-merkle/utils/index.js +0 -1024
  464. package/dist/shared/flap/portal-bundle-merkle/utils/types.d.ts +0 -16
  465. package/dist/shared 2/abis/TaxToken.json +0 -105
  466. package/dist/shared 2/abis/TokenManager.json +0 -836
  467. package/dist/shared 2/abis/TokenManager2.json +0 -60
  468. package/dist/shared 2/abis/TokenManagerHelper3.json +0 -993
  469. package/dist/shared 2/abis/common.d.ts +0 -85
  470. package/dist/shared 2/abis/common.js +0 -254
  471. package/dist/shared 2/abis/index.d.ts +0 -8
  472. package/dist/shared 2/abis/index.js +0 -8
  473. package/dist/shared 2/clients/blockrazor.d.ts +0 -314
  474. package/dist/shared 2/clients/blockrazor.js +0 -596
  475. package/dist/shared 2/clients/club48.d.ts +0 -154
  476. package/dist/shared 2/clients/club48.js +0 -331
  477. package/dist/shared 2/clients/emitservice.d.ts +0 -47
  478. package/dist/shared 2/clients/emitservice.js +0 -44
  479. package/dist/shared 2/clients/four.d.ts +0 -132
  480. package/dist/shared 2/clients/four.js +0 -281
  481. package/dist/shared 2/clients/merkle.d.ts +0 -210
  482. package/dist/shared 2/clients/merkle.js +0 -400
  483. package/dist/shared 2/flap/__tests__/curve.test.js +0 -85
  484. package/dist/shared 2/flap/abi.d.ts +0 -4
  485. package/dist/shared 2/flap/abi.js +0 -4
  486. package/dist/shared 2/flap/constants.d.ts +0 -128
  487. package/dist/shared 2/flap/constants.js +0 -143
  488. package/dist/shared 2/flap/curve.d.ts +0 -33
  489. package/dist/shared 2/flap/curve.js +0 -84
  490. package/dist/shared 2/flap/errors.d.ts +0 -37
  491. package/dist/shared 2/flap/errors.js +0 -114
  492. package/dist/shared 2/flap/index.d.ts +0 -22
  493. package/dist/shared 2/flap/index.js +0 -33
  494. package/dist/shared 2/flap/ipfs.d.ts +0 -21
  495. package/dist/shared 2/flap/ipfs.js +0 -38
  496. package/dist/shared 2/flap/meta.d.ts +0 -30
  497. package/dist/shared 2/flap/meta.js +0 -195
  498. package/dist/shared 2/flap/permit.d.ts +0 -16
  499. package/dist/shared 2/flap/permit.js +0 -67
  500. package/dist/shared 2/flap/pinata.d.ts +0 -40
  501. package/dist/shared 2/flap/pinata.js +0 -106
  502. package/dist/shared 2/flap/portal-bundle-merkle/config.d.ts +0 -79
  503. package/dist/shared 2/flap/portal-bundle-merkle/config.js +0 -133
  504. package/dist/shared 2/flap/portal-bundle-merkle/core.d.ts +0 -18
  505. package/dist/shared 2/flap/portal-bundle-merkle/core.js +0 -938
  506. package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.d.ts +0 -125
  507. package/dist/shared 2/flap/portal-bundle-merkle/create-to-dex.js +0 -665
  508. package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -88
  509. package/dist/shared 2/flap/portal-bundle-merkle/curve-to-dex.js +0 -446
  510. package/dist/shared 2/flap/portal-bundle-merkle/index.d.ts +0 -14
  511. package/dist/shared 2/flap/portal-bundle-merkle/index.js +0 -26
  512. package/dist/shared 2/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -28
  513. package/dist/shared 2/flap/portal-bundle-merkle/private.d.ts +0 -17
  514. package/dist/shared 2/flap/portal-bundle-merkle/private.js +0 -549
  515. package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
  516. package/dist/shared 2/flap/portal-bundle-merkle/swap-buy-first.js +0 -831
  517. package/dist/shared 2/flap/portal-bundle-merkle/swap.d.ts +0 -201
  518. package/dist/shared 2/flap/portal-bundle-merkle/swap.js +0 -1359
  519. package/dist/shared 2/flap/portal-bundle-merkle/types.d.ts +0 -358
  520. package/dist/shared 2/flap/portal-bundle-merkle/utils.d.ts +0 -89
  521. package/dist/shared 2/flap/portal-bundle-merkle/utils.js +0 -963
  522. package/dist/shared 2/flap/portal-bundle.d.ts +0 -119
  523. package/dist/shared 2/flap/portal-bundle.js +0 -584
  524. package/dist/shared 2/flap/portal.d.ts +0 -392
  525. package/dist/shared 2/flap/portal.js +0 -559
  526. package/dist/shared 2/flap/vanity.d.ts +0 -48
  527. package/dist/shared 2/flap/vanity.js +0 -110
  528. package/dist/shared 2/flap/vault.d.ts +0 -240
  529. package/dist/shared 2/flap/vault.js +0 -366
  530. package/dist/shared 2/four/index.d.ts +0 -7
  531. package/dist/shared 2/four/index.js +0 -22
  532. package/dist/shared 2/four/tax-token.d.ts +0 -176
  533. package/dist/shared 2/four/tax-token.js +0 -302
  534. package/dist/shared 2/index.d.ts +0 -10
  535. package/dist/shared 2/index.js +0 -10
  536. package/dist/utils/__tests__/errors.test.js +0 -76
  537. package/dist/utils/erc20/index.d.ts +0 -242
  538. package/dist/utils/erc20/index.js +0 -645
  539. package/dist/utils/holders-maker/helpers.d.ts +0 -43
  540. package/dist/utils/holders-maker/helpers.js +0 -371
  541. package/dist/utils/holders-maker/index.d.ts +0 -26
  542. package/dist/utils/holders-maker/index.js +0 -218
  543. package/dist/utils/holders-maker/types.js +0 -4
  544. package/dist/utils/lp-inspect/index.d.ts +0 -44
  545. package/dist/utils/lp-inspect/index.js +0 -937
  546. package/dist/utils/quote-helpers/index.d.ts +0 -107
  547. package/dist/utils/quote-helpers/index.js +0 -346
  548. /package/dist/{chains/bsc/four/submit/types.js → __tests__/subpath-exports.test.d.ts} +0 -0
  549. /package/dist/{chains/bsc/four/swap/types.js → bundle-core/__tests__/config-helpers.test.d.ts} +0 -0
  550. /package/dist/{chains/bsc/four/utils/types.d.ts → bundle-core/__tests__/facade-parity.test.d.ts} +0 -0
  551. /package/dist/{chains/bsc/four/utils/types.js → bundle-core/__tests__/sign-context-helpers.test.d.ts} +0 -0
  552. /package/dist/{chains/bsc/pancake/bundle-buy-first/types.js → bundle-core/__tests__/sign-fixture.test.d.ts} +0 -0
  553. /package/dist/{chains/xlayer/eip7702/multi-hop-transfer/types.js → bundle-core/four-meme/types/buy-first.js} +0 -0
  554. /package/dist/{chains/xlayer/eip7702/volume/types.js → bundle-core/four-meme/types/core-flow.js} +0 -0
  555. /package/dist/{dex/direct-router/types.js → bundle-core/four-meme/types/index.js} +0 -0
  556. /package/dist/{shared 2/flap/__tests__/curve.test.d.ts → bundle-core/four-meme/types/swap-internal.js} +0 -0
  557. /package/dist/{chains/xlayer/eip7702/bundle-swap → bundle-core/four-meme}/types.js +0 -0
  558. /package/dist/{shared/flap/__tests__/curve.test.d.ts → bundle-core/types/index.js} +0 -0
  559. /package/dist/{shared 2/flap/portal-bundle-merkle → bundle-core}/types.js +0 -0
  560. /package/dist/{shared/flap/portal-bundle-merkle/core/types.d.ts → chains/xlayer/eip7702/multi-hop-transfer-helpers.js} +0 -0
  561. /package/dist/{shared/flap/portal-bundle-merkle/core → dex}/types.js +0 -0
  562. /package/dist/shared/{flap/portal-bundle-merkle/swap/types.js → foundation/tx/wallet-sign-patch.d.ts} +0 -0
  563. /package/dist/shared/{flap/portal-bundle-merkle/utils/types.js → foundation/types/airdrop-sweep.js} +0 -0
  564. /package/dist/{utils/__tests__/errors.test.d.ts → shared/foundation/types/erc20.js} +0 -0
  565. /package/dist/{utils/erc20/types.js → shared/foundation/types/holders-maker.js} +0 -0
  566. /package/dist/{utils/lp-inspect/types.js → shared/foundation/types/index.js} +0 -0
  567. /package/dist/{utils/quote-helpers/types.js → shared/foundation/types/lp-inspect.js} +0 -0
@@ -1,18 +0,0 @@
1
- import type { BlockRazorSubmitConfig, BlockRazorSubmitResult } from './types.js';
2
- export declare function submitBundleToBlockRazor(signedTransactions: string[], config: BlockRazorSubmitConfig): Promise<BlockRazorSubmitResult>;
3
- /**
4
- * 批量提交多个 Bundle 到 BlockRazor(顺序执行)
5
- *
6
- * @param bundles 多个 Bundle 的签名交易数组
7
- * @param config BlockRazor 提交配置
8
- * @returns Bundle 提交结果数组
9
- */
10
- export declare function submitMultipleBundlesToBlockRazor(bundles: string[][], config: BlockRazorSubmitConfig): Promise<BlockRazorSubmitResult[]>;
11
- /**
12
- * 并行提交多个 Bundle 到 BlockRazor(适用于独立的 Bundle)
13
- *
14
- * @param bundles 多个 Bundle 的签名交易数组
15
- * @param config BlockRazor 提交配置
16
- * @returns Bundle 提交结果数组
17
- */
18
- export declare function submitMultipleBundlesToBlockRazorParallel(bundles: string[][], config: BlockRazorSubmitConfig): Promise<BlockRazorSubmitResult[]>;
@@ -1,86 +0,0 @@
1
- import { BlockRazorClient } from '../../../../shared/clients/blockrazor.js';
2
- const blockRazorClientCache = new Map();
3
- const CLIENT_CACHE_TTL_MS = 60 * 1000;
4
- function getBlockRazorClient(config) {
5
- const cacheKey = `${config.apiKey || ''}-${config.builderRpcUrl || ''}`;
6
- const now = Date.now();
7
- const cached = blockRazorClientCache.get(cacheKey);
8
- if (cached && cached.expireAt > now)
9
- return cached.client;
10
- const client = new BlockRazorClient({
11
- apiKey: config.apiKey,
12
- customRpcUrl: config.customRpcUrl,
13
- builderRpcUrl: config.builderRpcUrl,
14
- chainId: 56,
15
- });
16
- blockRazorClientCache.set(cacheKey, { client, expireAt: now + CLIENT_CACHE_TTL_MS });
17
- return client;
18
- }
19
- export async function submitBundleToBlockRazor(signedTransactions, config) {
20
- try {
21
- const totalTransactions = signedTransactions?.length ?? 0;
22
- // 验证输入
23
- if (!signedTransactions || signedTransactions.length === 0) {
24
- return {
25
- code: false,
26
- totalTransactions,
27
- error: 'signedTransactions cannot be empty'
28
- };
29
- }
30
- // ✅ 使用缓存的 BlockRazorClient
31
- const client = getBlockRazorClient(config);
32
- // 提交 Bundle
33
- const bundleResult = await client.sendBundle({
34
- transactions: signedTransactions,
35
- blockOffset: config.blockOffset ?? 100,
36
- maxBlockOffset: config.maxBlockOffset ?? 100,
37
- noMerge: config.noMerge ?? false,
38
- revertingTxHashes: config.revertingTxHashes,
39
- autoRetry: config.autoRetry ?? false,
40
- maxRetries: config.maxRetries ?? 3
41
- });
42
- // ✅ 提交成功
43
- return {
44
- code: true,
45
- totalTransactions,
46
- bundleHash: bundleResult.bundleHash,
47
- txHashes: bundleResult.txHashes,
48
- maxBlockNumber: bundleResult.maxBlockNumber,
49
- txCount: bundleResult.txCount
50
- };
51
- }
52
- catch (error) {
53
- // ❌ 提交失败
54
- return {
55
- code: false,
56
- totalTransactions: signedTransactions?.length ?? 0,
57
- error: error?.message || String(error)
58
- };
59
- }
60
- }
61
- /**
62
- * 批量提交多个 Bundle 到 BlockRazor(顺序执行)
63
- *
64
- * @param bundles 多个 Bundle 的签名交易数组
65
- * @param config BlockRazor 提交配置
66
- * @returns Bundle 提交结果数组
67
- */
68
- export async function submitMultipleBundlesToBlockRazor(bundles, config) {
69
- const results = [];
70
- for (const signedTransactions of bundles) {
71
- const result = await submitBundleToBlockRazor(signedTransactions, config);
72
- results.push(result);
73
- }
74
- return results;
75
- }
76
- /**
77
- * 并行提交多个 Bundle 到 BlockRazor(适用于独立的 Bundle)
78
- *
79
- * @param bundles 多个 Bundle 的签名交易数组
80
- * @param config BlockRazor 提交配置
81
- * @returns Bundle 提交结果数组
82
- */
83
- export async function submitMultipleBundlesToBlockRazorParallel(bundles, config) {
84
- const promises = bundles.map(signedTransactions => submitBundleToBlockRazor(signedTransactions, config));
85
- return await Promise.all(promises);
86
- }
@@ -1,66 +0,0 @@
1
- import type { DirectSubmitConfig, DirectSubmitResult } from './types.js';
2
- export declare function submitDirectToRpc(signedTransactions: string[], config: DirectSubmitConfig): Promise<DirectSubmitResult>;
3
- /**
4
- * ✅ 顺序广播并等待确认(用于多跳交易等需要顺序执行的场景)
5
- *
6
- * 每笔交易广播后会等待上链确认,确保后续交易能正确执行
7
- *
8
- * ⚠️ 多跳场景:如果某笔交易失败,会立即停止(因为后续交易肯定也会失败)
9
- *
10
- * @param signedTransactions 签名后的交易数组
11
- * @param config 直接广播配置
12
- * @returns 广播结果
13
- */
14
- export declare function submitDirectToRpcSequential(signedTransactions: string[], config: DirectSubmitConfig): Promise<DirectSubmitResult>;
15
- /**
16
- * ✅ 顺序广播但不等待确认(用于 AA handleOps + tail 等 nonce 连续的场景)
17
- *
18
- * 按顺序逐笔发送交易,每笔只等待广播成功(RPC 返回 txHash),不等待链上确认。
19
- * 这样可以保证交易按顺序进入 mempool,同时避免等待确认超时。
20
- *
21
- * @param signedTransactions 签名后的交易数组
22
- * @param config 直接广播配置
23
- * @returns 广播结果
24
- */
25
- export declare function submitDirectToRpcSequentialNoWait(signedTransactions: string[], config: DirectSubmitConfig): Promise<DirectSubmitResult>;
26
- /**
27
- * 并行逐笔广播到 RPC(速度更快,但可能有 nonce 冲突)
28
- *
29
- * ⚠️ 注意:仅适用于不同钱包的交易,同一钱包的多笔交易应使用顺序广播
30
- *
31
- * @param signedTransactions 签名后的交易数组
32
- * @param config 直接广播配置
33
- * @returns 广播结果
34
- */
35
- export declare function submitDirectToRpcParallel(signedTransactions: string[], config: DirectSubmitConfig): Promise<DirectSubmitResult>;
36
- /**
37
- * ✅ 智能广播到 RPC(自动选择并行或顺序)
38
- *
39
- * 根据交易的发送者地址自动决定广播策略:
40
- * - 如果所有交易来自不同钱包:使用并行广播(速度快)
41
- * - 如果存在同一钱包的多笔交易:使用顺序广播(确保 nonce 顺序)
42
- *
43
- * @param signedTransactions 签名后的交易数组
44
- * @param config 直接广播配置
45
- * @param options 额外选项
46
- * @returns 广播结果(包含使用的模式)
47
- *
48
- * @example
49
- * ```typescript
50
- * import { submitDirectToRpcSmart } from 'four-flap-meme-sdk';
51
- *
52
- * const result = await submitDirectToRpcSmart(signedTransactions, {
53
- * rpcUrl: 'https://xlayerrpc.okx.com',
54
- * chainId: 196,
55
- * chainName: 'XLAYER'
56
- * });
57
- *
58
- * console.log('使用模式:', result.mode); // 'parallel' 或 'sequential'
59
- * ```
60
- */
61
- export declare function submitDirectToRpcSmart(signedTransactions: string[], config: DirectSubmitConfig, options?: {
62
- /** 顺序模式时是否等待确认(默认 false) */
63
- waitConfirmation?: boolean;
64
- }): Promise<DirectSubmitResult & {
65
- mode: 'parallel' | 'sequential';
66
- }>;
@@ -1,452 +0,0 @@
1
- import { ethers } from 'ethers';
2
- import { CHAINS } from '../../../../shared/constants/index.js';
3
- import { recoverTxHashIfAlreadySeen } from './helpers.js';
4
- export async function submitDirectToRpc(signedTransactions, config) {
5
- const totalTransactions = signedTransactions?.length ?? 0;
6
- // 验证输入
7
- if (!signedTransactions || signedTransactions.length === 0) {
8
- return {
9
- code: false,
10
- totalTransactions: 0,
11
- bundleHash: 'direct',
12
- txHashes: [],
13
- txCount: 0,
14
- error: 'signedTransactions cannot be empty'
15
- };
16
- }
17
- if (!config.rpcUrl) {
18
- return {
19
- code: false,
20
- totalTransactions,
21
- bundleHash: 'direct',
22
- txHashes: [],
23
- txCount: totalTransactions,
24
- error: 'rpcUrl is required in config'
25
- };
26
- }
27
- const chainId = config.chainId ?? 143;
28
- const chainName = config.chainName ?? 'MONAD';
29
- // 创建 Provider
30
- const provider = new ethers.JsonRpcProvider(config.rpcUrl, {
31
- chainId,
32
- name: chainName
33
- });
34
- // ✅ 并行广播所有交易
35
- const broadcastPromises = signedTransactions.map(async (signedTx, i) => {
36
- try {
37
- const txResponse = await provider.broadcastTransaction(signedTx);
38
- // 如果需要等待确认
39
- if (config.waitForConfirmation) {
40
- try {
41
- const receipt = await provider.waitForTransaction(txResponse.hash, 1, config.confirmationTimeout ?? 30000);
42
- if (receipt && receipt.status === 0) {
43
- console.warn(`⚠️ [${chainName}] 交易 ${txResponse.hash} 执行失败(已上链但状态为0)`);
44
- }
45
- }
46
- catch (waitError) {
47
- console.warn(`⚠️ [${chainName}] 等待交易确认超时: ${txResponse.hash}`);
48
- }
49
- }
50
- return {
51
- index: i,
52
- success: true,
53
- txHash: txResponse.hash
54
- };
55
- }
56
- catch (error) {
57
- const errorMessage = error?.message || String(error);
58
- console.error(`❌ [${chainName}] 交易 ${i + 1}/${totalTransactions} 广播失败:`, errorMessage);
59
- // ✅ 兼容:nonce too low / already known 等情况下,交易可能已经被接收
60
- const recovered = await recoverTxHashIfAlreadySeen(provider, signedTx, errorMessage);
61
- if (recovered) {
62
- if (config.waitForConfirmation) {
63
- try {
64
- await provider.waitForTransaction(recovered, 1, config.confirmationTimeout ?? 30000);
65
- }
66
- catch { }
67
- }
68
- return { index: i, success: true, txHash: recovered, error: errorMessage };
69
- }
70
- return {
71
- index: i,
72
- success: false,
73
- error: errorMessage
74
- };
75
- }
76
- });
77
- const results = await Promise.all(broadcastPromises);
78
- // 按索引排序结果
79
- results.sort((a, b) => a.index - b.index);
80
- const txHashes = results.filter(r => r.success && r.txHash).map(r => r.txHash);
81
- const errors = results.filter(r => !r.success).map(r => `交易 ${r.index + 1}: ${r.error}`);
82
- return {
83
- code: txHashes.length > 0,
84
- totalTransactions,
85
- bundleHash: 'direct',
86
- txHashes,
87
- txCount: totalTransactions,
88
- error: errors.length > 0 ? errors.join('; ') : undefined
89
- };
90
- }
91
- /**
92
- * ✅ 顺序广播并等待确认(用于多跳交易等需要顺序执行的场景)
93
- *
94
- * 每笔交易广播后会等待上链确认,确保后续交易能正确执行
95
- *
96
- * ⚠️ 多跳场景:如果某笔交易失败,会立即停止(因为后续交易肯定也会失败)
97
- *
98
- * @param signedTransactions 签名后的交易数组
99
- * @param config 直接广播配置
100
- * @returns 广播结果
101
- */
102
- export async function submitDirectToRpcSequential(signedTransactions, config) {
103
- const totalTransactions = signedTransactions?.length ?? 0;
104
- if (!signedTransactions || signedTransactions.length === 0) {
105
- return {
106
- code: false,
107
- totalTransactions: 0,
108
- bundleHash: 'direct',
109
- txHashes: [],
110
- txCount: 0,
111
- error: 'signedTransactions cannot be empty'
112
- };
113
- }
114
- if (!config.rpcUrl) {
115
- return {
116
- code: false,
117
- totalTransactions,
118
- bundleHash: 'direct',
119
- txHashes: [],
120
- txCount: totalTransactions,
121
- error: 'rpcUrl is required in config'
122
- };
123
- }
124
- const chainId = config.chainId ?? CHAINS.MONAD.chainId;
125
- const chainName = config.chainName ?? 'MONAD';
126
- // ✅ XLayer 链默认 120 秒超时(网络可能较慢)
127
- const confirmationTimeout = config.confirmationTimeout ?? (chainId === CHAINS.XLAYER.chainId ? CHAINS.XLAYER.confirmationTimeout : CHAINS.BSC.confirmationTimeout);
128
- const provider = new ethers.JsonRpcProvider(config.rpcUrl, {
129
- chainId,
130
- name: chainName
131
- });
132
- const results = [];
133
- const txHashes = [];
134
- const errors = [];
135
- console.log(`📤 [${chainName}] 开始顺序广播 ${totalTransactions} 笔交易(等待每笔确认)`);
136
- // 顺序广播并等待确认
137
- for (let i = 0; i < signedTransactions.length; i++) {
138
- const signedTx = signedTransactions[i];
139
- try {
140
- // 广播交易
141
- const txResponse = await provider.broadcastTransaction(signedTx);
142
- console.log(`📡 [${chainName}] 交易 ${i + 1}/${totalTransactions} 广播成功: ${txResponse.hash},等待确认...`);
143
- // ✅ 等待交易确认
144
- const receipt = await provider.waitForTransaction(txResponse.hash, 1, // 等待1个确认
145
- confirmationTimeout);
146
- if (receipt && receipt.status === 1) {
147
- console.log(`✅ [${chainName}] 交易 ${i + 1}/${totalTransactions} 已确认: ${txResponse.hash}`);
148
- results.push({
149
- index: i,
150
- success: true,
151
- txHash: txResponse.hash
152
- });
153
- txHashes.push(txResponse.hash);
154
- }
155
- else {
156
- const errorMsg = `交易执行失败(status=${receipt?.status})`;
157
- console.error(`❌ [${chainName}] 交易 ${i + 1}/${totalTransactions} 上链失败: ${errorMsg}`);
158
- results.push({
159
- index: i,
160
- success: false,
161
- txHash: txResponse.hash,
162
- error: errorMsg
163
- });
164
- errors.push(`交易 ${i + 1}: ${errorMsg}`);
165
- // ✅ 多跳场景:如果某笔失败,后续交易肯定也会失败,立即停止
166
- console.warn(`⚠️ [${chainName}] 多跳模式检测到失败,停止后续 ${totalTransactions - i - 1} 笔交易`);
167
- break;
168
- }
169
- }
170
- catch (error) {
171
- const errorMessage = error?.message || String(error);
172
- console.error(`❌ [${chainName}] 交易 ${i + 1}/${totalTransactions} 广播/确认失败:`, errorMessage);
173
- // ✅ 兼容:nonce too low / already known 等情况下,交易可能已经被接收
174
- const recovered = await recoverTxHashIfAlreadySeen(provider, signedTx, errorMessage);
175
- if (recovered) {
176
- console.log(`🔄 [${chainName}] 交易 ${i + 1} 可能已广播,尝试等待确认: ${recovered}`);
177
- // 顺序模式依赖确认:尽量等待一下
178
- try {
179
- const receipt = await provider.waitForTransaction(recovered, 1, confirmationTimeout);
180
- if (receipt && receipt.status === 1) {
181
- console.log(`✅ [${chainName}] 交易 ${i + 1}/${totalTransactions} 恢复成功: ${recovered}`);
182
- results.push({ index: i, success: true, txHash: recovered, error: errorMessage });
183
- txHashes.push(recovered);
184
- continue;
185
- }
186
- const errorMsg = `交易执行失败(status=${receipt?.status})`;
187
- console.error(`❌ [${chainName}] 交易 ${i + 1} 恢复失败: ${errorMsg}`);
188
- results.push({ index: i, success: false, txHash: recovered, error: `${errorMessage} | ${errorMsg}` });
189
- errors.push(`交易 ${i + 1}: ${errorMessage} | ${errorMsg}`);
190
- // ✅ 多跳场景:失败则停止
191
- console.warn(`⚠️ [${chainName}] 多跳模式检测到失败,停止后续 ${totalTransactions - i - 1} 笔交易`);
192
- break;
193
- }
194
- catch (waitError) {
195
- // 等待超时:对于多跳场景,不能假设成功,需要停止
196
- const waitErrorMsg = waitError?.message || String(waitError);
197
- console.error(`⏱️ [${chainName}] 交易 ${i + 1} 等待确认超时: ${waitErrorMsg}`);
198
- results.push({ index: i, success: false, txHash: recovered, error: `${errorMessage} | 等待确认超时: ${waitErrorMsg}` });
199
- errors.push(`交易 ${i + 1}: ${errorMessage} | 等待确认超时`);
200
- // ✅ 多跳场景:超时也停止
201
- console.warn(`⚠️ [${chainName}] 多跳模式检测到超时,停止后续 ${totalTransactions - i - 1} 笔交易`);
202
- break;
203
- }
204
- }
205
- results.push({
206
- index: i,
207
- success: false,
208
- error: errorMessage
209
- });
210
- errors.push(`交易 ${i + 1}: ${errorMessage}`);
211
- // ✅ 多跳场景:如果某笔失败,后续交易肯定也会失败,立即停止
212
- console.warn(`⚠️ [${chainName}] 多跳模式检测到失败,停止后续 ${totalTransactions - i - 1} 笔交易`);
213
- break;
214
- }
215
- }
216
- console.log(`📊 [${chainName}] 顺序广播完成: 成功 ${txHashes.length}/${totalTransactions}`);
217
- return {
218
- code: txHashes.length > 0,
219
- totalTransactions,
220
- bundleHash: 'direct',
221
- txHashes,
222
- txCount: totalTransactions,
223
- error: errors.length > 0 ? errors.join('; ') : undefined
224
- };
225
- }
226
- /**
227
- * ✅ 顺序广播但不等待确认(用于 AA handleOps + tail 等 nonce 连续的场景)
228
- *
229
- * 按顺序逐笔发送交易,每笔只等待广播成功(RPC 返回 txHash),不等待链上确认。
230
- * 这样可以保证交易按顺序进入 mempool,同时避免等待确认超时。
231
- *
232
- * @param signedTransactions 签名后的交易数组
233
- * @param config 直接广播配置
234
- * @returns 广播结果
235
- */
236
- export async function submitDirectToRpcSequentialNoWait(signedTransactions, config) {
237
- const totalTransactions = signedTransactions?.length ?? 0;
238
- if (!signedTransactions || signedTransactions.length === 0) {
239
- return {
240
- code: false,
241
- totalTransactions: 0,
242
- bundleHash: 'direct',
243
- txHashes: [],
244
- txCount: 0,
245
- error: 'signedTransactions cannot be empty'
246
- };
247
- }
248
- if (!config.rpcUrl) {
249
- return {
250
- code: false,
251
- totalTransactions,
252
- bundleHash: 'direct',
253
- txHashes: [],
254
- txCount: totalTransactions,
255
- error: 'rpcUrl is required in config'
256
- };
257
- }
258
- const chainId = config.chainId ?? 143;
259
- const chainName = config.chainName ?? 'MONAD';
260
- const provider = new ethers.JsonRpcProvider(config.rpcUrl, {
261
- chainId,
262
- name: chainName
263
- });
264
- const results = [];
265
- const txHashes = [];
266
- const errors = [];
267
- // ✅ 顺序广播,每笔只等待广播成功(不等待链上确认)
268
- for (let i = 0; i < signedTransactions.length; i++) {
269
- const signedTx = signedTransactions[i];
270
- try {
271
- // 广播交易,等待 RPC 返回 txHash
272
- const txResponse = await provider.broadcastTransaction(signedTx);
273
- results.push({
274
- index: i,
275
- success: true,
276
- txHash: txResponse.hash
277
- });
278
- txHashes.push(txResponse.hash);
279
- console.log(`✅ [${chainName}] 交易 ${i + 1}/${totalTransactions} 广播成功: ${txResponse.hash}`);
280
- }
281
- catch (error) {
282
- const errorMessage = error?.message || String(error);
283
- console.error(`❌ [${chainName}] 交易 ${i + 1}/${totalTransactions} 广播失败:`, errorMessage);
284
- // ✅ 兼容:nonce too low / already known 等情况下,交易可能已经被接收
285
- const recovered = await recoverTxHashIfAlreadySeen(provider, signedTx, errorMessage);
286
- if (recovered) {
287
- results.push({ index: i, success: true, txHash: recovered, error: errorMessage });
288
- txHashes.push(recovered);
289
- continue;
290
- }
291
- results.push({
292
- index: i,
293
- success: false,
294
- error: errorMessage
295
- });
296
- errors.push(`交易 ${i + 1}: ${errorMessage}`);
297
- // ✅ 如果某笔失败,继续尝试后续交易(可能是 nonce 问题可以自动恢复)
298
- }
299
- }
300
- return {
301
- code: txHashes.length > 0,
302
- totalTransactions,
303
- bundleHash: 'direct',
304
- txHashes,
305
- txCount: totalTransactions,
306
- error: errors.length > 0 ? errors.join('; ') : undefined
307
- };
308
- }
309
- /**
310
- * 并行逐笔广播到 RPC(速度更快,但可能有 nonce 冲突)
311
- *
312
- * ⚠️ 注意:仅适用于不同钱包的交易,同一钱包的多笔交易应使用顺序广播
313
- *
314
- * @param signedTransactions 签名后的交易数组
315
- * @param config 直接广播配置
316
- * @returns 广播结果
317
- */
318
- export async function submitDirectToRpcParallel(signedTransactions, config) {
319
- const totalTransactions = signedTransactions?.length ?? 0;
320
- if (!signedTransactions || signedTransactions.length === 0) {
321
- return {
322
- code: false,
323
- totalTransactions: 0,
324
- bundleHash: 'direct',
325
- txHashes: [],
326
- txCount: 0,
327
- error: 'signedTransactions cannot be empty'
328
- };
329
- }
330
- if (!config.rpcUrl) {
331
- return {
332
- code: false,
333
- totalTransactions,
334
- bundleHash: 'direct',
335
- txHashes: [],
336
- txCount: totalTransactions,
337
- error: 'rpcUrl is required in config'
338
- };
339
- }
340
- const chainId = config.chainId ?? 143;
341
- const chainName = config.chainName ?? 'MONAD';
342
- const provider = new ethers.JsonRpcProvider(config.rpcUrl, {
343
- chainId,
344
- name: chainName
345
- });
346
- // 并行广播
347
- const broadcastPromises = signedTransactions.map(async (signedTx, i) => {
348
- try {
349
- const txResponse = await provider.broadcastTransaction(signedTx);
350
- return {
351
- index: i,
352
- success: true,
353
- txHash: txResponse.hash
354
- };
355
- }
356
- catch (error) {
357
- return {
358
- index: i,
359
- success: false,
360
- error: error?.message || String(error)
361
- };
362
- }
363
- });
364
- const results = await Promise.all(broadcastPromises);
365
- const txHashes = results.filter(r => r.success && r.txHash).map(r => r.txHash);
366
- const errors = results.filter(r => !r.success).map(r => `交易 ${r.index + 1}: ${r.error}`);
367
- return {
368
- code: txHashes.length > 0,
369
- totalTransactions,
370
- bundleHash: 'direct',
371
- txHashes,
372
- txCount: totalTransactions,
373
- error: errors.length > 0 ? errors.join('; ') : undefined
374
- };
375
- }
376
- /**
377
- * ✅ 智能广播到 RPC(自动选择并行或顺序)
378
- *
379
- * 根据交易的发送者地址自动决定广播策略:
380
- * - 如果所有交易来自不同钱包:使用并行广播(速度快)
381
- * - 如果存在同一钱包的多笔交易:使用顺序广播(确保 nonce 顺序)
382
- *
383
- * @param signedTransactions 签名后的交易数组
384
- * @param config 直接广播配置
385
- * @param options 额外选项
386
- * @returns 广播结果(包含使用的模式)
387
- *
388
- * @example
389
- * ```typescript
390
- * import { submitDirectToRpcSmart } from 'four-flap-meme-sdk';
391
- *
392
- * const result = await submitDirectToRpcSmart(signedTransactions, {
393
- * rpcUrl: 'https://xlayerrpc.okx.com',
394
- * chainId: 196,
395
- * chainName: 'XLAYER'
396
- * });
397
- *
398
- * console.log('使用模式:', result.mode); // 'parallel' 或 'sequential'
399
- * ```
400
- */
401
- export async function submitDirectToRpcSmart(signedTransactions, config, options) {
402
- const totalTransactions = signedTransactions?.length ?? 0;
403
- if (!signedTransactions || signedTransactions.length === 0) {
404
- return {
405
- code: false,
406
- totalTransactions: 0,
407
- bundleHash: 'direct',
408
- txHashes: [],
409
- txCount: 0,
410
- error: 'signedTransactions cannot be empty',
411
- mode: 'parallel'
412
- };
413
- }
414
- // 检测是否有同一钱包的多笔交易
415
- const hasMultipleFromSameWallet = (() => {
416
- if (signedTransactions.length < 2)
417
- return false;
418
- const seen = new Set();
419
- for (const raw of signedTransactions) {
420
- if (!raw)
421
- continue;
422
- try {
423
- const tx = ethers.Transaction.from(raw);
424
- const from = (tx.from || '').toLowerCase();
425
- if (!from)
426
- continue;
427
- if (seen.has(from))
428
- return true;
429
- seen.add(from);
430
- }
431
- catch {
432
- // ignore parse errors
433
- }
434
- }
435
- return false;
436
- })();
437
- const chainName = config.chainName ?? 'UNKNOWN';
438
- if (hasMultipleFromSameWallet) {
439
- console.log(`🔄 [${chainName}] 检测到同一钱包多笔交易,使用顺序广播`);
440
- // 使用顺序广播
441
- const result = options?.waitConfirmation
442
- ? await submitDirectToRpcSequential(signedTransactions, config)
443
- : await submitDirectToRpcSequentialNoWait(signedTransactions, config);
444
- return { ...result, mode: 'sequential' };
445
- }
446
- else {
447
- console.log(`⚡ [${chainName}] 所有交易来自不同钱包,使用并行广播`);
448
- // 使用并行广播
449
- const result = await submitDirectToRpcParallel(signedTransactions, config);
450
- return { ...result, mode: 'parallel' };
451
- }
452
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * 独立的Bundle提交方法
3
- *
4
- * 用于服务器端接收前端构建的签名交易后,提交到Merkle或BlockRazor
5
- * 以及 Monad 等不支持 Bundle 的链的逐笔广播
6
- */
7
- import { MerkleClient } from '../../../../shared/clients/merkle.js';
8
- import { ethers } from 'ethers';
9
- import type { MerkleSubmitConfig } from './types.js';
10
- /**
11
- * 获取或创建 MerkleClient(带缓存)
12
- */
13
- export declare function getMerkleClient(config: MerkleSubmitConfig): MerkleClient;
14
- /**
15
- * 精简的Merkle提交配置(只包含提交需要的字段)
16
- */
17
- export declare function shouldTreatBroadcastErrorAsMaybeSent(msg: string): boolean;
18
- export declare function recoverTxHashIfAlreadySeen(provider: ethers.JsonRpcProvider, signedTx: string, errorMessage: string): Promise<string | undefined>;