four-flap-meme-sdk 2.2.8 → 2.2.11

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 (474) hide show
  1. package/README.en.md +6 -41
  2. package/README.md +0 -31
  3. package/README.zh-CN.md +6 -41
  4. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +26 -1
  5. package/dist/chains/bsc/four/approve-tokenmanager.js +113 -1
  6. package/dist/chains/bsc/four/config.d.ts +67 -5
  7. package/dist/chains/bsc/four/config.js +114 -2
  8. package/dist/chains/bsc/four/core.d.ts +4 -1
  9. package/dist/chains/bsc/four/core.js +592 -1
  10. package/dist/chains/bsc/four/index.d.ts +6 -6
  11. package/dist/chains/bsc/four/index.js +6 -6
  12. package/dist/chains/bsc/four/internal.d.ts +46 -2
  13. package/dist/chains/bsc/four/internal.js +239 -2
  14. package/dist/chains/bsc/four/pancake-proxy.d.ts +28 -1
  15. package/dist/chains/bsc/four/pancake-proxy.js +687 -1
  16. package/dist/chains/bsc/four/private.d.ts +27 -1
  17. package/dist/chains/bsc/four/private.js +477 -1
  18. package/dist/chains/bsc/four/submit.d.ts +315 -2
  19. package/dist/chains/bsc/four/submit.js +752 -2
  20. package/dist/chains/bsc/four/swap-buy-first.d.ts +55 -2
  21. package/dist/chains/bsc/four/swap-buy-first.js +507 -2
  22. package/dist/chains/bsc/four/swap-internal.d.ts +3 -1
  23. package/dist/chains/bsc/four/swap-internal.js +18 -1
  24. package/dist/chains/bsc/four/swap.d.ts +144 -2
  25. package/dist/chains/bsc/four/swap.js +766 -2
  26. package/dist/chains/bsc/four/types.d.ts +476 -1
  27. package/dist/chains/bsc/four/utils.d.ts +18 -5
  28. package/dist/chains/bsc/four/utils.js +1552 -5
  29. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +91 -1
  30. package/dist/chains/bsc/pancake/bundle-buy-first.js +212 -97
  31. package/dist/chains/bsc/pancake/bundle-swap.d.ts +79 -1
  32. package/dist/chains/bsc/pancake/bundle-swap.js +726 -114
  33. package/dist/chains/bsc/pancake/index.d.ts +2 -4
  34. package/dist/chains/bsc/pancake/index.js +3 -1
  35. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  36. package/dist/chains/bsc/platforms/iro/factory.js +1 -3
  37. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  38. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  39. package/dist/chains/bsc/platforms/iro/pool.js +10 -31
  40. package/dist/chains/bsc/platforms/iro/token.js +1 -4
  41. package/dist/chains/eni/batch-router/bundle-approve.js +3 -4
  42. package/dist/chains/eni/batch-router/transfer.js +25 -55
  43. package/dist/chains/eni/batch-router/utils.js +6 -32
  44. package/dist/chains/eni/bundler/sign.js +6 -5
  45. package/dist/chains/eni/bundler/submit.js +4 -1
  46. package/dist/chains/eni/constants.js +1 -1
  47. package/dist/chains/eni/index.d.ts +1 -2
  48. package/dist/chains/eni/index.js +0 -1
  49. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  50. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  51. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  52. package/dist/chains/eni/platforms/daoaas/meta.js +6 -9
  53. package/dist/chains/eni/platforms/daoaas/portal-direct.js +44 -28
  54. package/dist/chains/eni/platforms/daoaas/portal.js +6 -10
  55. package/dist/chains/eni/platforms/dswap/liquidity.js +26 -58
  56. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  57. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  58. package/dist/chains/eni/platforms/fair-launch/launcher.js +46 -87
  59. package/dist/chains/eni/platforms/fair-launch/pool.js +1 -4
  60. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  61. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  62. package/dist/chains/eni/platforms/iro/factory.js +1 -3
  63. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  64. package/dist/chains/eni/platforms/iro/index.js +4 -4
  65. package/dist/chains/eni/platforms/iro/pool.js +26 -90
  66. package/dist/chains/eni/platforms/iro/token.js +31 -107
  67. package/dist/chains/eni/platforms/iro/whitelist.js +18 -6
  68. package/dist/chains/index.d.ts +0 -13
  69. package/dist/chains/index.js +0 -13
  70. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +26 -2
  71. package/dist/chains/xlayer/eip7702/bundle-approve.js +21 -11
  72. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +6 -2
  73. package/dist/chains/xlayer/eip7702/bundle-buy.js +51 -13
  74. package/dist/chains/xlayer/eip7702/bundle-create.js +59 -93
  75. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +6 -2
  76. package/dist/chains/xlayer/eip7702/bundle-sell.js +111 -29
  77. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +65 -3
  78. package/dist/chains/xlayer/eip7702/bundle-swap.js +245 -51
  79. package/dist/chains/xlayer/eip7702/constants.d.ts +16 -1
  80. package/dist/chains/xlayer/eip7702/constants.js +21 -3
  81. package/dist/chains/xlayer/eip7702/index.d.ts +46 -28
  82. package/dist/chains/xlayer/eip7702/index.js +81 -28
  83. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +203 -2
  84. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +307 -63
  85. package/dist/chains/xlayer/eip7702/types.d.ts +0 -88
  86. package/dist/chains/xlayer/eip7702/utils.d.ts +3 -0
  87. package/dist/chains/xlayer/eip7702/utils.js +28 -23
  88. package/dist/chains/xlayer/eip7702/volume.d.ts +184 -6
  89. package/dist/chains/xlayer/eip7702/volume.js +164 -89
  90. package/dist/chains/xlayer/eoa/constants.js +1 -1
  91. package/dist/chains/xlayer/eoa/dex-helpers.js +5 -5
  92. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +95 -1
  93. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +299 -66
  94. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  95. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +23 -18
  96. package/dist/chains/xlayer/eoa/index.d.ts +6 -10
  97. package/dist/chains/xlayer/eoa/index.js +23 -8
  98. package/dist/chains/xlayer/eoa/portal-ops.js +2 -7
  99. package/dist/chains/xlayer/eoa/router-manager.js +3 -3
  100. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  101. package/dist/chains/xlayer/eoa/types.js +3 -1
  102. package/dist/chains/xlayer/index.d.ts +2 -3
  103. package/dist/chains/xlayer/index.js +7 -4
  104. package/dist/contracts/helper3.d.ts +5 -20
  105. package/dist/contracts/helper3.js +20 -56
  106. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +26 -1
  107. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +113 -1
  108. package/dist/contracts/tm-bundle-merkle/config.d.ts +67 -5
  109. package/dist/contracts/tm-bundle-merkle/config.js +114 -2
  110. package/dist/contracts/tm-bundle-merkle/core.d.ts +4 -1
  111. package/dist/contracts/tm-bundle-merkle/core.js +591 -1
  112. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  113. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  114. package/dist/contracts/tm-bundle-merkle/internal.d.ts +46 -2
  115. package/dist/contracts/tm-bundle-merkle/internal.js +238 -2
  116. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +28 -1
  117. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +686 -1
  118. package/dist/contracts/tm-bundle-merkle/private.d.ts +27 -1
  119. package/dist/contracts/tm-bundle-merkle/private.js +476 -1
  120. package/dist/contracts/tm-bundle-merkle/submit.d.ts +314 -3
  121. package/dist/contracts/tm-bundle-merkle/submit.js +928 -3
  122. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +55 -2
  123. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +506 -2
  124. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +3 -1
  125. package/dist/contracts/tm-bundle-merkle/swap-internal.js +18 -1
  126. package/dist/contracts/tm-bundle-merkle/swap.d.ts +144 -2
  127. package/dist/contracts/tm-bundle-merkle/swap.js +764 -2
  128. package/dist/contracts/tm-bundle-merkle/types.d.ts +476 -1
  129. package/dist/contracts/tm-bundle-merkle/utils.d.ts +18 -6
  130. package/dist/contracts/tm-bundle-merkle/utils.js +1501 -6
  131. package/dist/contracts/tm-bundle.d.ts +51 -3
  132. package/dist/contracts/tm-bundle.js +177 -108
  133. package/dist/contracts/tm.d.ts +2 -3
  134. package/dist/contracts/tm.js +32 -37
  135. package/dist/contracts/tm1.js +4 -9
  136. package/dist/contracts/tm2.js +4 -9
  137. package/dist/dex/direct-router.d.ts +125 -3
  138. package/dist/dex/direct-router.js +666 -237
  139. package/dist/flows/create.d.ts +1 -2
  140. package/dist/flows/create.js +6 -6
  141. package/dist/index.d.ts +87 -20
  142. package/dist/index.js +217 -20
  143. package/dist/shared/abis/TaxToken.json +105 -0
  144. package/dist/shared/abis/TokenManager2.json +60 -0
  145. package/dist/shared/abis/common.d.ts +83 -2
  146. package/dist/shared/abis/common.js +254 -2
  147. package/dist/shared/abis/index.d.ts +6 -5
  148. package/dist/shared/abis/index.js +7 -5
  149. package/dist/shared/clients/blockrazor.js +25 -39
  150. package/dist/shared/clients/club48.d.ts +2 -2
  151. package/dist/shared/clients/club48.js +29 -34
  152. package/dist/shared/clients/emitservice.js +0 -2
  153. package/dist/shared/clients/four.d.ts +6 -21
  154. package/dist/shared/clients/four.js +24 -29
  155. package/dist/shared/clients/merkle.js +34 -27
  156. package/dist/shared/constants/addresses.d.ts +1 -1
  157. package/dist/shared/constants/addresses.js +2 -11
  158. package/dist/shared/constants/chains.d.ts +1 -1
  159. package/dist/shared/constants/chains.js +1 -1
  160. package/dist/shared/constants/gas.d.ts +1 -1
  161. package/dist/shared/constants/gas.js +6 -2
  162. package/dist/shared/constants/index.d.ts +0 -3
  163. package/dist/shared/constants/index.js +0 -1
  164. package/dist/shared/flap/abi.js +1 -1
  165. package/dist/shared/flap/constants.d.ts +2 -1
  166. package/dist/shared/flap/constants.js +4 -3
  167. package/dist/shared/flap/curve.js +0 -3
  168. package/dist/shared/flap/errors.d.ts +4 -1
  169. package/dist/shared/flap/errors.js +1 -20
  170. package/dist/shared/flap/index.d.ts +5 -4
  171. package/dist/shared/flap/index.js +5 -4
  172. package/dist/shared/flap/launch-v6.d.ts +127 -0
  173. package/dist/shared/flap/launch-v6.js +123 -0
  174. package/dist/shared/flap/meta.d.ts +18 -22
  175. package/dist/shared/flap/meta.js +17 -12
  176. package/dist/shared/flap/permit.js +2 -5
  177. package/dist/shared/flap/pinata.d.ts +6 -22
  178. package/dist/shared/flap/pinata.js +26 -21
  179. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +72 -3
  180. package/dist/shared/flap/portal-bundle-merkle/config.js +124 -4
  181. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +4 -0
  182. package/dist/shared/flap/portal-bundle-merkle/core.js +151 -142
  183. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +4 -17
  184. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +86 -86
  185. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +92 -100
  186. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +7 -11
  187. package/dist/shared/flap/portal-bundle-merkle/index.js +7 -4
  188. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +68 -71
  189. package/dist/shared/flap/portal-bundle-merkle/private.js +114 -61
  190. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +64 -1
  191. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +247 -66
  192. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +71 -2
  193. package/dist/shared/flap/portal-bundle-merkle/swap.js +410 -103
  194. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +12 -88
  195. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +80 -1
  196. package/dist/shared/flap/portal-bundle-merkle/utils.js +265 -145
  197. package/dist/shared/flap/portal-bundle.js +56 -55
  198. package/dist/shared/flap/portal-create-token.d.ts +19 -37
  199. package/dist/shared/flap/portal-create-token.js +124 -121
  200. package/dist/shared/flap/portal.d.ts +2 -1
  201. package/dist/shared/flap/portal.js +28 -36
  202. package/dist/shared/flap/vanity.d.ts +6 -6
  203. package/dist/shared/flap/vanity.js +21 -15
  204. package/dist/shared/flap/vault.d.ts +93 -25
  205. package/dist/shared/flap/vault.js +126 -75
  206. package/dist/shared/four/tax-token.d.ts +1 -1
  207. package/dist/shared/four/tax-token.js +7 -27
  208. package/dist/shared/index.d.ts +0 -6
  209. package/dist/shared/index.js +0 -4
  210. package/dist/utils/airdrop-sweep.d.ts +76 -4
  211. package/dist/utils/airdrop-sweep.js +55 -42
  212. package/dist/utils/bundle-helpers.d.ts +243 -9
  213. package/dist/utils/bundle-helpers.js +584 -10
  214. package/dist/utils/constants.d.ts +61 -5
  215. package/dist/utils/constants.js +80 -5
  216. package/dist/utils/contract-factory.d.ts +4 -2
  217. package/dist/utils/contract-factory.js +18 -25
  218. package/dist/utils/erc20.d.ts +89 -7
  219. package/dist/utils/erc20.js +125 -94
  220. package/dist/utils/errors.d.ts +1 -12
  221. package/dist/utils/errors.js +1 -60
  222. package/dist/utils/holders-maker.d.ts +138 -2
  223. package/dist/utils/holders-maker.js +661 -26
  224. package/dist/utils/lp-inspect.d.ts +112 -2
  225. package/dist/utils/lp-inspect.js +223 -73
  226. package/dist/utils/mpcExclusive.d.ts +5 -2
  227. package/dist/utils/mpcExclusive.js +3 -4
  228. package/dist/utils/private-sale.d.ts +58 -2
  229. package/dist/utils/private-sale.js +15 -4
  230. package/dist/utils/provider-factory.d.ts +0 -4
  231. package/dist/utils/provider-factory.js +0 -10
  232. package/dist/utils/quote-helpers.d.ts +45 -4
  233. package/dist/utils/quote-helpers.js +74 -17
  234. package/dist/utils/stealth-transfer.d.ts +28 -2
  235. package/dist/utils/stealth-transfer.js +15 -31
  236. package/dist/utils/swap-helpers.d.ts +15 -2
  237. package/dist/utils/swap-helpers.js +11 -6
  238. package/dist/utils/wallet.d.ts +25 -2
  239. package/dist/utils/wallet.js +10 -13
  240. package/package.json +4 -160
  241. package/dist/__tests__/subpath-exports.test.d.ts +0 -1
  242. package/dist/__tests__/subpath-exports.test.js +0 -64
  243. package/dist/abis/common.d.ts +0 -85
  244. package/dist/abis/common.js +0 -264
  245. package/dist/abis/contracts/TaxToken.json +0 -969
  246. package/dist/abis/contracts/TokenManager2.json +0 -136
  247. package/dist/abis/contracts/index.d.ts +0 -5
  248. package/dist/abis/contracts/index.js +0 -5
  249. package/dist/abis/flap/index.d.ts +0 -3
  250. package/dist/abis/flap/index.js +0 -3
  251. package/dist/abis/flap/portal-events.d.ts +0 -6
  252. package/dist/abis/flap/portal-events.js +0 -17
  253. package/dist/abis/flap/portal.d.ts +0 -6
  254. package/dist/abis/flap/portal.js +0 -37
  255. package/dist/abis/flap/vault.d.ts +0 -171
  256. package/dist/abis/flap/vault.js +0 -91
  257. package/dist/abis/index.d.ts +0 -8
  258. package/dist/abis/index.js +0 -11
  259. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +0 -1
  260. package/dist/bundle-core/__tests__/config-helpers.test.js +0 -28
  261. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +0 -1
  262. package/dist/bundle-core/__tests__/facade-parity.test.js +0 -33
  263. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +0 -1
  264. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +0 -60
  265. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +0 -1
  266. package/dist/bundle-core/__tests__/sign-fixture.test.js +0 -220
  267. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +0 -10
  268. package/dist/bundle-core/__tests__/sign-fixtures.js +0 -16
  269. package/dist/bundle-core/config-helpers.d.ts +0 -36
  270. package/dist/bundle-core/config-helpers.js +0 -57
  271. package/dist/bundle-core/errors.d.ts +0 -50
  272. package/dist/bundle-core/errors.js +0 -35
  273. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +0 -7
  274. package/dist/bundle-core/four-meme/approve-tokenmanager.js +0 -99
  275. package/dist/bundle-core/four-meme/core-helpers.d.ts +0 -8
  276. package/dist/bundle-core/four-meme/core-helpers.js +0 -40
  277. package/dist/bundle-core/four-meme/core.d.ts +0 -4
  278. package/dist/bundle-core/four-meme/core.js +0 -515
  279. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +0 -28
  280. package/dist/bundle-core/four-meme/pancake-proxy.js +0 -679
  281. package/dist/bundle-core/four-meme/private.d.ts +0 -27
  282. package/dist/bundle-core/four-meme/private.js +0 -465
  283. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +0 -2
  284. package/dist/bundle-core/four-meme/sign-context-helpers.js +0 -2
  285. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +0 -8
  286. package/dist/bundle-core/four-meme/swap-buy-first.js +0 -493
  287. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +0 -6
  288. package/dist/bundle-core/four-meme/swap-hop-helpers.js +0 -63
  289. package/dist/bundle-core/four-meme/swap-internal.d.ts +0 -3
  290. package/dist/bundle-core/four-meme/swap-internal.js +0 -18
  291. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +0 -27
  292. package/dist/bundle-core/four-meme/swap-sign-helpers.js +0 -105
  293. package/dist/bundle-core/four-meme/swap.d.ts +0 -17
  294. package/dist/bundle-core/four-meme/swap.js +0 -505
  295. package/dist/bundle-core/four-meme/types/buy-first.d.ts +0 -50
  296. package/dist/bundle-core/four-meme/types/buy-first.js +0 -1
  297. package/dist/bundle-core/four-meme/types/core-flow.d.ts +0 -63
  298. package/dist/bundle-core/four-meme/types/core-flow.js +0 -1
  299. package/dist/bundle-core/four-meme/types/index.d.ts +0 -600
  300. package/dist/bundle-core/four-meme/types/index.js +0 -1
  301. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +0 -19
  302. package/dist/bundle-core/four-meme/types/swap-internal.js +0 -1
  303. package/dist/bundle-core/four-meme/types.d.ts +0 -1
  304. package/dist/bundle-core/four-meme/types.js +0 -1
  305. package/dist/bundle-core/four-meme/utils-disperse.d.ts +0 -7
  306. package/dist/bundle-core/four-meme/utils-disperse.js +0 -396
  307. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +0 -8
  308. package/dist/bundle-core/four-meme/utils-pairwise.js +0 -328
  309. package/dist/bundle-core/four-meme/utils-sweep.d.ts +0 -8
  310. package/dist/bundle-core/four-meme/utils-sweep.js +0 -744
  311. package/dist/bundle-core/index.d.ts +0 -8
  312. package/dist/bundle-core/index.js +0 -8
  313. package/dist/bundle-core/internal.d.ts +0 -21
  314. package/dist/bundle-core/internal.js +0 -182
  315. package/dist/bundle-core/sign-context-helpers.d.ts +0 -25
  316. package/dist/bundle-core/sign-context-helpers.js +0 -67
  317. package/dist/bundle-core/submit.d.ts +0 -293
  318. package/dist/bundle-core/submit.js +0 -727
  319. package/dist/bundle-core/types/index.d.ts +0 -8
  320. package/dist/bundle-core/types/index.js +0 -1
  321. package/dist/bundle-core/types.d.ts +0 -1
  322. package/dist/bundle-core/types.js +0 -1
  323. package/dist/chains/bsc/four/utils-disperse.d.ts +0 -1
  324. package/dist/chains/bsc/four/utils-disperse.js +0 -1
  325. package/dist/chains/bsc/four/utils-pairwise.d.ts +0 -1
  326. package/dist/chains/bsc/four/utils-pairwise.js +0 -1
  327. package/dist/chains/bsc/four/utils-sweep.d.ts +0 -1
  328. package/dist/chains/bsc/four/utils-sweep.js +0 -1
  329. package/dist/chains/bsc/iro.d.ts +0 -5
  330. package/dist/chains/bsc/iro.js +0 -4
  331. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +0 -159
  332. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +0 -117
  333. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +0 -241
  334. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +0 -565
  335. package/dist/chains/eni/flat-aliases.d.ts +0 -10
  336. package/dist/chains/eni/flat-aliases.js +0 -8
  337. package/dist/chains/eni/submit.d.ts +0 -43
  338. package/dist/chains/eni/submit.js +0 -286
  339. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +0 -13
  340. package/dist/chains/xlayer/eip7702/flat-aliases.js +0 -10
  341. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +0 -79
  342. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +0 -1
  343. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +0 -26
  344. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +0 -57
  345. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +0 -148
  346. package/dist/chains/xlayer/eip7702/volume-helpers.js +0 -48
  347. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +0 -126
  348. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +0 -228
  349. package/dist/contracts/tm-bundle-helpers.d.ts +0 -88
  350. package/dist/contracts/tm-bundle-helpers.js +0 -72
  351. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +0 -1
  352. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +0 -1
  353. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +0 -1
  354. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +0 -1
  355. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +0 -1
  356. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +0 -1
  357. package/dist/dex/direct-router-helpers.d.ts +0 -264
  358. package/dist/dex/direct-router-helpers.js +0 -539
  359. package/dist/dex/types.d.ts +0 -81
  360. package/dist/dex/types.js +0 -1
  361. package/dist/exports/root-bundle-and-tooling.d.ts +0 -27
  362. package/dist/exports/root-bundle-and-tooling.js +0 -30
  363. package/dist/exports/root-eni-and-bsc-iro.d.ts +0 -26
  364. package/dist/exports/root-eni-and-bsc-iro.js +0 -66
  365. package/dist/exports/root-foundations.d.ts +0 -35
  366. package/dist/exports/root-foundations.js +0 -70
  367. package/dist/exports/root-swap-dex-and-xlayer.d.ts +0 -30
  368. package/dist/exports/root-swap-dex-and-xlayer.js +0 -78
  369. package/dist/flap/index.d.ts +0 -10
  370. package/dist/flap/index.js +0 -8
  371. package/dist/flows/index.d.ts +0 -1
  372. package/dist/flows/index.js +0 -1
  373. package/dist/merkle/index.d.ts +0 -12
  374. package/dist/merkle/index.js +0 -11
  375. package/dist/shared/clients/index.d.ts +0 -8
  376. package/dist/shared/clients/index.js +0 -8
  377. package/dist/shared/constants/quote.d.ts +0 -30
  378. package/dist/shared/constants/quote.js +0 -37
  379. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +0 -32
  380. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +0 -83
  381. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +0 -125
  382. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +0 -113
  383. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +0 -149
  384. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +0 -259
  385. package/dist/shared/foundation/dex/v3-path.d.ts +0 -6
  386. package/dist/shared/foundation/dex/v3-path.js +0 -35
  387. package/dist/shared/foundation/gas/bundle-gas.d.ts +0 -49
  388. package/dist/shared/foundation/gas/bundle-gas.js +0 -93
  389. package/dist/shared/foundation/gas/profit-hop.d.ts +0 -20
  390. package/dist/shared/foundation/gas/profit-hop.js +0 -72
  391. package/dist/shared/foundation/index.d.ts +0 -13
  392. package/dist/shared/foundation/index.js +0 -12
  393. package/dist/shared/foundation/nonce/nonce-manager.d.ts +0 -17
  394. package/dist/shared/foundation/nonce/nonce-manager.js +0 -183
  395. package/dist/shared/foundation/normalize-unknown.d.ts +0 -9
  396. package/dist/shared/foundation/normalize-unknown.js +0 -29
  397. package/dist/shared/foundation/sdk-logger.d.ts +0 -13
  398. package/dist/shared/foundation/sdk-logger.js +0 -12
  399. package/dist/shared/foundation/tx/build-request.d.ts +0 -17
  400. package/dist/shared/foundation/tx/build-request.js +0 -25
  401. package/dist/shared/foundation/tx/sign-batch.d.ts +0 -5
  402. package/dist/shared/foundation/tx/sign-batch.js +0 -26
  403. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +0 -1
  404. package/dist/shared/foundation/tx/wallet-sign-patch.js +0 -18
  405. package/dist/shared/foundation/types/airdrop-sweep.d.ts +0 -79
  406. package/dist/shared/foundation/types/airdrop-sweep.js +0 -1
  407. package/dist/shared/foundation/types/erc20.d.ts +0 -65
  408. package/dist/shared/foundation/types/erc20.js +0 -1
  409. package/dist/shared/foundation/types/holders-maker.d.ts +0 -64
  410. package/dist/shared/foundation/types/holders-maker.js +0 -1
  411. package/dist/shared/foundation/types/index.d.ts +0 -7
  412. package/dist/shared/foundation/types/index.js +0 -1
  413. package/dist/shared/foundation/types/lp-inspect.d.ts +0 -102
  414. package/dist/shared/foundation/types/lp-inspect.js +0 -1
  415. package/dist/shared/foundation/types/multicall.d.ts +0 -5
  416. package/dist/shared/foundation/types/multicall.js +0 -1
  417. package/dist/shared/foundation/types/private-sale.d.ts +0 -35
  418. package/dist/shared/foundation/types/private-sale.js +0 -1
  419. package/dist/shared/foundation/types/quote-helpers.d.ts +0 -17
  420. package/dist/shared/foundation/types/quote-helpers.js +0 -1
  421. package/dist/types/errors.d.ts +0 -27
  422. package/dist/types/errors.js +0 -34
  423. package/dist/utils/holders-maker/addresses.d.ts +0 -12
  424. package/dist/utils/holders-maker/addresses.js +0 -15
  425. package/dist/utils/holders-maker/buy-tx.d.ts +0 -44
  426. package/dist/utils/holders-maker/buy-tx.js +0 -278
  427. package/dist/utils/holders-maker/constants.d.ts +0 -6
  428. package/dist/utils/holders-maker/constants.js +0 -7
  429. package/dist/utils/holders-maker/disperse.d.ts +0 -18
  430. package/dist/utils/holders-maker/disperse.js +0 -90
  431. package/dist/utils/holders-maker/routing.d.ts +0 -4
  432. package/dist/utils/holders-maker/routing.js +0 -45
  433. package/dist/utils/holders-maker/transfer-tx.d.ts +0 -4
  434. package/dist/utils/holders-maker/transfer-tx.js +0 -67
  435. package/dist/utils/holders-maker-helpers.d.ts +0 -9
  436. package/dist/utils/holders-maker-helpers.js +0 -9
  437. package/dist/utils/hop-chains.d.ts +0 -35
  438. package/dist/utils/hop-chains.js +0 -215
  439. package/dist/utils/lp-inspect-helpers.d.ts +0 -9
  440. package/dist/utils/lp-inspect-helpers.js +0 -109
  441. package/dist/utils/types/airdrop-sweep.d.ts +0 -1
  442. package/dist/utils/types/airdrop-sweep.js +0 -1
  443. package/dist/utils/types/contract-factory.d.ts +0 -1
  444. package/dist/utils/types/contract-factory.js +0 -1
  445. package/dist/utils/types/erc20.d.ts +0 -1
  446. package/dist/utils/types/erc20.js +0 -1
  447. package/dist/utils/types/errors.d.ts +0 -1
  448. package/dist/utils/types/errors.js +0 -1
  449. package/dist/utils/types/holders-maker.d.ts +0 -1
  450. package/dist/utils/types/holders-maker.js +0 -1
  451. package/dist/utils/types/hop-chains.d.ts +0 -8
  452. package/dist/utils/types/hop-chains.js +0 -1
  453. package/dist/utils/types/index.d.ts +0 -13
  454. package/dist/utils/types/index.js +0 -1
  455. package/dist/utils/types/lp-inspect.d.ts +0 -1
  456. package/dist/utils/types/lp-inspect.js +0 -1
  457. package/dist/utils/types/mpc-exclusive.d.ts +0 -5
  458. package/dist/utils/types/mpc-exclusive.js +0 -1
  459. package/dist/utils/types/private-sale.d.ts +0 -1
  460. package/dist/utils/types/private-sale.js +0 -1
  461. package/dist/utils/types/quote-helpers.d.ts +0 -1
  462. package/dist/utils/types/quote-helpers.js +0 -1
  463. package/dist/utils/types/stealth-transfer.d.ts +0 -44
  464. package/dist/utils/types/stealth-transfer.js +0 -1
  465. package/dist/utils/types/wallet.d.ts +0 -25
  466. package/dist/utils/types/wallet.js +0 -1
  467. package/dist/vanity/index.d.ts +0 -5
  468. package/dist/vanity/index.js +0 -5
  469. package/src/abis/contracts/TaxToken.json +0 -969
  470. package/src/abis/contracts/TokenManager.json +0 -836
  471. package/src/abis/contracts/TokenManager2.json +0 -136
  472. package/src/abis/contracts/TokenManagerHelper3.json +0 -993
  473. /package/dist/{abis/contracts → shared/abis}/TokenManager.json +0 -0
  474. /package/dist/{abis/contracts → shared/abis}/TokenManagerHelper3.json +0 -0
@@ -1,8 +1,7 @@
1
1
  import { Contract, Wallet, JsonRpcProvider, Interface, parseUnits } from 'ethers';
2
- import { ADDRESSES, ZERO_ADDRESS, getMulticall3Address } from '../shared/constants/index.js';
2
+ import { ADDRESSES, ZERO_ADDRESS, getMulticall3Address } from './constants.js';
3
3
  import { NonceManager } from './bundle-helpers.js';
4
- import { ERC20_ABI, MULTICALL3_ABI } from '../abis/common.js';
5
- import { getErrorMessageFromUnknown } from '../shared/foundation/index.js';
4
+ import { ERC20_ABI, MULTICALL3_ABI } from '../shared/abis/common.js';
6
5
  // ============================================================================
7
6
  // ✅ Max approval(与 BSC 策略一致:阈值判断,避免频繁重复授权)
8
7
  // ============================================================================
@@ -23,15 +22,14 @@ async function validateContractAddress(provider, address, label) {
23
22
  }
24
23
  }
25
24
  catch (error) {
26
- const msg = getErrorMessageFromUnknown(error);
27
- if (msg.includes('无效或未部署')) {
28
- throw error instanceof Error ? error : new Error(msg);
25
+ if (error.message.includes('无效或未部署')) {
26
+ throw error;
29
27
  }
30
- const code = error !== null && typeof error === 'object' && 'code' in error ? error.code : undefined;
31
- if (msg.includes('bad address checksum') || code === 'INVALID_ARGUMENT') {
28
+ // 如果是 checksum 错误,提供更友好的提示
29
+ if (error.message.includes('bad address checksum') || error.code === 'INVALID_ARGUMENT') {
32
30
  throw new Error(`❌ ${label} 地址格式错误,请使用正确的 checksum 格式: ${address}`);
33
31
  }
34
- throw new Error(`❌ 无法验证 ${label} 地址 ${address}: ${msg}`);
32
+ throw new Error(`❌ 无法验证 ${label} 地址 ${address}: ${error.message}`);
35
33
  }
36
34
  }
37
35
  /**
@@ -51,7 +49,7 @@ async function ensureAllowance(rpcUrl, privateKey, token, owner, spender, requir
51
49
  current = await erc20.allowance(owner, spender);
52
50
  }
53
51
  catch (error) {
54
- throw new Error(`❌ 调用 allowance 失败(Token 可能不是 ERC20): ${getErrorMessageFromUnknown(error)}`);
52
+ throw new Error(`❌ 调用 allowance 失败(Token 可能不是 ERC20): ${error.message}`);
55
53
  }
56
54
  if (current >= required) {
57
55
  return {
@@ -69,17 +67,27 @@ async function ensureAllowance(rpcUrl, privateKey, token, owner, spender, requir
69
67
  txReceipt: receipt,
70
68
  };
71
69
  }
72
- async function checkAllowanceForSpender(rpcUrl, token, owner, amount, spender, spenderLabel) {
70
+ /**
71
+ * 检查代币授权状态 - Four.meme V1(只读,不发送交易)
72
+ * @returns 是否已授权足够的额度
73
+ */
74
+ export async function checkSellApprovalV1(chain, rpcUrl, token, owner, amount) {
75
+ const proxyAddresses = {
76
+ BSC: ADDRESSES.BSC.TokenManagerV1, // FourMeme 代理合约 V1 (BSC)
77
+ BASE: ADDRESSES.BASE.TokenManagerHelper3, // FourMeme 代理合约 (BASE)
78
+ ARBITRUM_ONE: ADDRESSES.ARBITRUM_ONE.TokenManagerHelper3, // FourMeme 代理合约 (ARBITRUM)
79
+ };
73
80
  const provider = new JsonRpcProvider(rpcUrl);
81
+ // ✅ 验证 token 和代理合约地址
74
82
  await validateContractAddress(provider, token, 'Token');
75
- await validateContractAddress(provider, spender, spenderLabel);
83
+ await validateContractAddress(provider, proxyAddresses[chain], `Four.meme V1 Proxy (${chain})`);
76
84
  const erc20 = new Contract(token, ERC20_ABI, provider);
77
85
  let current;
78
86
  try {
79
- current = await erc20.allowance(owner, spender);
87
+ current = await erc20.allowance(owner, proxyAddresses[chain]);
80
88
  }
81
89
  catch (error) {
82
- throw new Error(`❌ 调用 allowance 失败(Token 可能不是 ERC20): ${getErrorMessageFromUnknown(error)}`);
90
+ throw new Error(`❌ 调用 allowance 失败(Token 可能不是 ERC20): ${error.message}`);
83
91
  }
84
92
  return {
85
93
  isApproved: current >= amount,
@@ -87,42 +95,61 @@ async function checkAllowanceForSpender(rpcUrl, token, owner, amount, spender, s
87
95
  requiredAllowance: amount,
88
96
  };
89
97
  }
90
- async function checkSellApprovalForProxy(_chain, rpcUrl, token, owner, amount, proxyAddress, proxyLabel) {
91
- return checkAllowanceForSpender(rpcUrl, token, owner, amount, proxyAddress, proxyLabel);
92
- }
93
- const FOUR_MEME_V1_PROXY = {
94
- BSC: ADDRESSES.BSC.TokenManagerV1,
95
- BASE: ADDRESSES.BASE.TokenManagerHelper3,
96
- ARBITRUM_ONE: ADDRESSES.ARBITRUM_ONE.TokenManagerHelper3,
97
- };
98
- const FOUR_MEME_V2_PROXY = {
99
- BSC: ADDRESSES.BSC.TokenManagerV2,
100
- BASE: ADDRESSES.BASE.TokenManagerHelper3,
101
- ARBITRUM_ONE: ADDRESSES.ARBITRUM_ONE.TokenManagerHelper3,
102
- };
103
- /**
104
- * 检查代币授权状态 - Four.meme V1(只读,不发送交易)
105
- */
106
- export async function checkSellApprovalV1(chain, rpcUrl, token, owner, amount) {
107
- return checkSellApprovalForProxy(chain, rpcUrl, token, owner, amount, FOUR_MEME_V1_PROXY[chain], `Four.meme V1 Proxy (${chain})`);
108
- }
109
98
  /**
110
99
  * 确保代币已授权给 Four.meme V1 代理合约
100
+ * 用于 Four.meme V1 代币的卖出操作
101
+ * @returns 授权结果,包含是否已授权、当前额度、交易回执等信息
111
102
  */
112
103
  export async function ensureSellApprovalV1(chain, rpcUrl, privateKey, token, owner, amount) {
113
- return ensureAllowance(rpcUrl, privateKey, token, owner, FOUR_MEME_V1_PROXY[chain], amount);
104
+ // 授权给 FourMeme 代理合约 V1(收费版)
105
+ const proxyAddresses = {
106
+ BSC: ADDRESSES.BSC.TokenManagerV1, // FourMeme 代理合约 V1 (BSC)
107
+ BASE: ADDRESSES.BASE.TokenManagerHelper3, // FourMeme 代理合约 (BASE)
108
+ ARBITRUM_ONE: ADDRESSES.ARBITRUM_ONE.TokenManagerHelper3, // FourMeme 代理合约 (ARBITRUM)
109
+ };
110
+ return await ensureAllowance(rpcUrl, privateKey, token, owner, proxyAddresses[chain], amount);
114
111
  }
115
112
  /**
116
113
  * 检查代币授权状态 - Four.meme V2(只读,不发送交易)
114
+ * @returns 是否已授权足够的额度
117
115
  */
118
116
  export async function checkSellApprovalV2(chain, rpcUrl, token, owner, amount) {
119
- return checkSellApprovalForProxy(chain, rpcUrl, token, owner, amount, FOUR_MEME_V2_PROXY[chain], `Four.meme V2 Proxy (${chain})`);
117
+ const proxyAddresses = {
118
+ BSC: ADDRESSES.BSC.TokenManagerV2, // FourMeme 代理合约 V2 (BSC)
119
+ BASE: ADDRESSES.BASE.TokenManagerHelper3, // FourMeme 代理合约 (BASE)
120
+ ARBITRUM_ONE: ADDRESSES.ARBITRUM_ONE.TokenManagerHelper3, // FourMeme 代理合约 (ARBITRUM)
121
+ };
122
+ const provider = new JsonRpcProvider(rpcUrl);
123
+ // ✅ 验证 token 和代理合约地址
124
+ await validateContractAddress(provider, token, 'Token');
125
+ await validateContractAddress(provider, proxyAddresses[chain], `Four.meme V2 Proxy (${chain})`);
126
+ const erc20 = new Contract(token, ERC20_ABI, provider);
127
+ let current;
128
+ try {
129
+ current = await erc20.allowance(owner, proxyAddresses[chain]);
130
+ }
131
+ catch (error) {
132
+ throw new Error(`❌ 调用 allowance 失败(Token 可能不是 ERC20): ${error.message}`);
133
+ }
134
+ return {
135
+ isApproved: current >= amount,
136
+ currentAllowance: current,
137
+ requiredAllowance: amount,
138
+ };
120
139
  }
121
140
  /**
122
141
  * 确保代币已授权给 Four.meme V2 代理合约
142
+ * 用于 Four.meme V2 代币的卖出操作
143
+ * @returns 授权结果,包含是否已授权、当前额度、交易回执等信息
123
144
  */
124
145
  export async function ensureSellApprovalV2(chain, rpcUrl, privateKey, token, owner, amount) {
125
- return ensureAllowance(rpcUrl, privateKey, token, owner, FOUR_MEME_V2_PROXY[chain], amount);
146
+ // 授权给 FourMeme 代理合约 V2(收费版)
147
+ const proxyAddresses = {
148
+ BSC: ADDRESSES.BSC.TokenManagerV2, // FourMeme 代理合约 V2 (BSC)
149
+ BASE: ADDRESSES.BASE.TokenManagerHelper3, // FourMeme 代理合约 (BASE)
150
+ ARBITRUM_ONE: ADDRESSES.ARBITRUM_ONE.TokenManagerHelper3, // FourMeme 代理合约 (ARBITRUM)
151
+ };
152
+ return await ensureAllowance(rpcUrl, privateKey, token, owner, proxyAddresses[chain], amount);
126
153
  }
127
154
  /**
128
155
  * 检查代币授权状态 - Four.meme(通用,默认使用 V2)
@@ -144,13 +171,29 @@ export async function ensureSellApproval(chain, rpcUrl, privateKey, token, owner
144
171
  */
145
172
  export async function checkFlapSellApproval(chain, rpcUrl, token, owner, amount) {
146
173
  const proxyAddresses = {
147
- BSC: ADDRESSES.BSC.FlapPortal,
148
- BASE: ADDRESSES.BASE.FlapPortal,
149
- XLAYER: ADDRESSES.XLAYER.FlapPortal,
150
- MORPH: ADDRESSES.MORPH.FlapPortal,
151
- MONAD: ADDRESSES.MONAD.FlapPortal,
174
+ BSC: ADDRESSES.BSC.FlapPortal, // Flap Portal 代理合约 (BSC)
175
+ BASE: ADDRESSES.BASE.FlapPortal, // Flap Portal 代理合约 (BASE)
176
+ XLAYER: ADDRESSES.XLAYER.FlapPortal, // Flap Portal 代理合约 (XLAYER)
177
+ MORPH: ADDRESSES.MORPH.FlapPortal, // Flap Portal 代理合约 (MORPH)
178
+ MONAD: ADDRESSES.MONAD.FlapPortal, // Flap Portal 代理合约 (MONAD)
179
+ };
180
+ const provider = new JsonRpcProvider(rpcUrl);
181
+ // ✅ 验证 token 和代理合约地址
182
+ await validateContractAddress(provider, token, 'Token');
183
+ await validateContractAddress(provider, proxyAddresses[chain], `Flap Portal (${chain})`);
184
+ const erc20 = new Contract(token, ERC20_ABI, provider);
185
+ let current;
186
+ try {
187
+ current = await erc20.allowance(owner, proxyAddresses[chain]);
188
+ }
189
+ catch (error) {
190
+ throw new Error(`❌ 调用 allowance 失败(Token 可能不是 ERC20): ${error.message}`);
191
+ }
192
+ return {
193
+ isApproved: current >= amount,
194
+ currentAllowance: current,
195
+ requiredAllowance: amount,
152
196
  };
153
- return checkAllowanceForSpender(rpcUrl, token, owner, amount, proxyAddresses[chain], `Flap Portal (${chain})`);
154
197
  }
155
198
  /**
156
199
  * 确保代币已授权给 Flap Protocol 代理合约
@@ -202,7 +245,7 @@ export async function checkFlapSellApprovalBatch(chain, rpcUrl, token, owners, r
202
245
  // ✅ 并行验证 token 和代理合约地址
203
246
  await Promise.all([
204
247
  validateContractAddress(provider, token, 'Token'),
205
- validateContractAddress(provider, proxyAddresses[chain], `Flap Portal (${chain})`),
248
+ validateContractAddress(provider, proxyAddresses[chain], `Flap Portal (${chain})`)
206
249
  ]);
207
250
  // ✅ 使用 batchCheckAllowances 批量查询(Multicall3)
208
251
  const allowances = await batchCheckAllowances(provider, token, owners, proxyAddresses[chain]);
@@ -210,7 +253,7 @@ export async function checkFlapSellApprovalBatch(chain, rpcUrl, token, owners, r
210
253
  owner,
211
254
  isApproved: allowances[i] >= required,
212
255
  currentAllowance: allowances[i],
213
- requiredAllowance: required,
256
+ requiredAllowance: required
214
257
  }));
215
258
  }
216
259
  /**
@@ -227,15 +270,15 @@ export async function batchCheckAllowances(provider, tokenAddress, owners, spend
227
270
  const multicall3 = new Contract(multicall3Address, MULTICALL3_ABI, provider);
228
271
  // 编码 allowance(owner, spender) 调用数据
229
272
  const erc20Interface = new Contract(tokenAddress, ERC20_ABI, provider).interface;
230
- const calls = owners.map((owner) => ({
273
+ const calls = owners.map(owner => ({
231
274
  target: tokenAddress,
232
275
  allowFailure: true,
233
- callData: erc20Interface.encodeFunctionData('allowance', [owner, spender]),
276
+ callData: erc20Interface.encodeFunctionData('allowance', [owner, spender])
234
277
  }));
235
278
  // 批量调用
236
279
  const results = await multicall3.aggregate3(calls);
237
280
  // 解析结果
238
- return results.map((result) => {
281
+ return results.map((result, index) => {
239
282
  if (!result.success) {
240
283
  return 0n;
241
284
  }
@@ -243,7 +286,7 @@ export async function batchCheckAllowances(provider, tokenAddress, owners, spend
243
286
  const decoded = erc20Interface.decodeFunctionResult('allowance', result.returnData);
244
287
  return decoded[0];
245
288
  }
246
- catch {
289
+ catch (error) {
247
290
  return 0n;
248
291
  }
249
292
  });
@@ -347,7 +390,7 @@ export async function checkAllowanceRaw(rpcUrl, tokenAddress, ownerAddress, spen
347
390
  return allowance;
348
391
  }
349
392
  catch (error) {
350
- throw new Error(`❌ 查询授权额度失败: ${getErrorMessageFromUnknown(error)}`);
393
+ throw new Error(`❌ 查询授权额度失败: ${error.message}`);
351
394
  }
352
395
  }
353
396
  /**
@@ -395,15 +438,15 @@ export async function approveTokenRaw(rpcUrl, privateKey, tokenAddress, spenderA
395
438
  currentAllowance = await erc20.allowance(ownerAddress, normalizedSpender);
396
439
  }
397
440
  catch (error) {
398
- throw new Error(`❌ 查询授权额度失败: ${getErrorMessageFromUnknown(error)}`);
441
+ throw new Error(`❌ 查询授权额度失败: ${error.message}`);
399
442
  }
400
443
  // 如果已经授权足够,直接返回
401
444
  // ✅ max 授权:使用阈值判断,避免每次消耗一点 allowance 都重新授权
402
- if (isMax ? currentAllowance >= MAX_APPROVAL_THRESHOLD : currentAllowance >= requiredAmount) {
445
+ if (isMax ? (currentAllowance >= MAX_APPROVAL_THRESHOLD) : (currentAllowance >= requiredAmount)) {
403
446
  return {
404
447
  alreadyApproved: true,
405
448
  currentAllowance,
406
- requiredAllowance: requiredAmount,
449
+ requiredAllowance: requiredAmount
407
450
  };
408
451
  }
409
452
  // 发送授权交易
@@ -414,11 +457,11 @@ export async function approveTokenRaw(rpcUrl, privateKey, tokenAddress, spenderA
414
457
  alreadyApproved: false,
415
458
  currentAllowance,
416
459
  requiredAllowance: requiredAmount,
417
- txReceipt: receipt,
460
+ txReceipt: receipt
418
461
  };
419
462
  }
420
463
  catch (error) {
421
- throw new Error(`❌ 授权交易失败: ${getErrorMessageFromUnknown(error)}`);
464
+ throw new Error(`❌ 授权交易失败: ${error.message}`);
422
465
  }
423
466
  }
424
467
  /**
@@ -449,7 +492,7 @@ export async function checkAllowanceBatchRaw(rpcUrl, tokenAddress, ownerAddresse
449
492
  const provider = new JsonRpcProvider(rpcUrl);
450
493
  // ✅ 规范化地址(转为小写,避免 checksum 错误)
451
494
  const normalizedToken = tokenAddress.toLowerCase();
452
- const normalizedOwners = ownerAddresses.map((addr) => addr.toLowerCase());
495
+ const normalizedOwners = ownerAddresses.map(addr => addr.toLowerCase());
453
496
  const normalizedSpender = spenderAddress.toLowerCase();
454
497
  // 验证地址
455
498
  await validateContractAddress(provider, normalizedToken, 'Token');
@@ -457,26 +500,12 @@ export async function checkAllowanceBatchRaw(rpcUrl, tokenAddress, ownerAddresse
457
500
  return batchCheckAllowances(provider, normalizedToken, normalizedOwners, normalizedSpender);
458
501
  }
459
502
  export async function approveTokenBatch(params) {
460
- const { chain, platform, rpcUrl, privateKeys, tokenAddress, amounts, signOnly, gasPriceGwei, gasLimit, chainId, skipValidation, } = params;
503
+ const { chain, platform, rpcUrl, privateKeys, tokenAddress, amounts, signOnly, gasPriceGwei, gasLimit, chainId, skipValidation } = params;
461
504
  const spenderAddress = resolveSpenderAddress(chain, platform);
462
- const rawParams = {
463
- rpcUrl,
464
- privateKeys,
465
- tokenAddress,
466
- spenderAddress,
467
- amounts,
468
- gasPriceGwei,
469
- gasLimit,
470
- chainId,
471
- skipValidation,
472
- };
473
- if (signOnly === true) {
474
- return approveTokenBatchRaw({ ...rawParams, signOnly: true });
475
- }
476
- return approveTokenBatchRaw({ ...rawParams, signOnly: false });
505
+ return approveTokenBatchRaw({ rpcUrl, privateKeys, tokenAddress, spenderAddress, amounts, signOnly, gasPriceGwei, gasLimit, chainId, skipValidation });
477
506
  }
478
507
  export async function approveTokenBatchRaw(params) {
479
- const { rpcUrl, privateKeys, tokenAddress, spenderAddress, amounts, signOnly, gasPriceGwei, gasLimit, chainId = 56, nonceManager: externalNonceManager, skipValidation, } = params;
508
+ const { rpcUrl, privateKeys, tokenAddress, spenderAddress, amounts, signOnly, gasPriceGwei, gasLimit, chainId = 56, nonceManager: externalNonceManager, skipValidation } = params;
480
509
  if (privateKeys.length === 0 || amounts.length !== privateKeys.length) {
481
510
  throw new Error('❌ 私钥数量和授权数量必须匹配');
482
511
  }
@@ -490,10 +519,12 @@ export async function approveTokenBatchRaw(params) {
490
519
  await validateContractAddress(provider, normalizedSpender, 'Spender');
491
520
  }
492
521
  // ✅ 优化:批量创建钱包和合约实例
493
- const wallets = privateKeys.map((key) => new Wallet(key, provider));
494
- const ownerAddresses = wallets.map((w) => w.address);
495
- const isMaxApprovals = amounts.map((a) => a === 'max');
496
- const requiredAmounts = amounts.map((amount) => (amount === 'max' ? MAX_UINT256 : amount));
522
+ const wallets = privateKeys.map(key => new Wallet(key, provider));
523
+ const ownerAddresses = wallets.map(w => w.address);
524
+ const isMaxApprovals = amounts.map(a => a === 'max');
525
+ const requiredAmounts = amounts.map(amount => amount === 'max'
526
+ ? MAX_UINT256
527
+ : amount);
497
528
  // ==================== signOnly=true:只签名不提交 ====================
498
529
  if (signOnly) {
499
530
  // ✅ 使用 NonceManager 管理 nonce(和买卖交易一样)
@@ -502,9 +533,7 @@ export async function approveTokenBatchRaw(params) {
502
533
  const [currentAllowances, nonces, fetchedGasPrice] = await Promise.all([
503
534
  batchCheckAllowances(provider, normalizedToken, ownerAddresses, normalizedSpender),
504
535
  nonceManager.getNextNoncesForWallets(wallets), // ✅ 使用 NonceManager 批量获取 nonce
505
- gasPriceGwei
506
- ? Promise.resolve(parseUnits(gasPriceGwei.toString(), 'gwei'))
507
- : provider.getFeeData().then((fee) => fee.gasPrice || parseUnits('3', 'gwei')),
536
+ gasPriceGwei ? Promise.resolve(parseUnits(gasPriceGwei.toString(), 'gwei')) : provider.getFeeData().then(fee => fee.gasPrice || parseUnits('3', 'gwei'))
508
537
  ]);
509
538
  const finalGasPrice = fetchedGasPrice;
510
539
  const finalGasLimit = BigInt(gasLimit || 100000);
@@ -518,13 +547,13 @@ export async function approveTokenBatchRaw(params) {
518
547
  const isMax = isMaxApprovals[i];
519
548
  // 如果已经授权足够,跳过
520
549
  // ✅ max 授权:使用阈值判断(与 BSC 一致)
521
- if (isMax ? currentAllowance >= MAX_APPROVAL_THRESHOLD : currentAllowance >= requiredAmount) {
550
+ if (isMax ? (currentAllowance >= MAX_APPROVAL_THRESHOLD) : (currentAllowance >= requiredAmount)) {
522
551
  return {
523
552
  owner: ownerAddress,
524
553
  alreadyApproved: true,
525
554
  currentAllowance,
526
555
  requiredAllowance: requiredAmount,
527
- signedTx: undefined,
556
+ signedTx: undefined
528
557
  };
529
558
  }
530
559
  // 构建并签名交易
@@ -536,26 +565,28 @@ export async function approveTokenBatchRaw(params) {
536
565
  gasLimit: finalGasLimit,
537
566
  gasPrice: finalGasPrice,
538
567
  chainId,
539
- type: 0, // Legacy 交易
568
+ type: 0 // Legacy 交易
540
569
  });
541
570
  return {
542
571
  owner: ownerAddress,
543
572
  alreadyApproved: false,
544
573
  currentAllowance,
545
574
  requiredAllowance: requiredAmount,
546
- signedTx,
575
+ signedTx
547
576
  };
548
577
  });
549
578
  const results = await Promise.all(signPromises);
550
579
  // ✅ 提取所有签名交易(过滤掉已授权的)
551
- const signedTransactions = results.filter((r) => !r.alreadyApproved && r.signedTx).map((r) => r.signedTx);
552
- const alreadyApprovedCount = results.filter((r) => r.alreadyApproved).length;
553
- const needApproveCount = results.filter((r) => !r.alreadyApproved).length;
580
+ const signedTransactions = results
581
+ .filter(r => !r.alreadyApproved && r.signedTx)
582
+ .map(r => r.signedTx);
583
+ const alreadyApprovedCount = results.filter(r => r.alreadyApproved).length;
584
+ const needApproveCount = results.filter(r => !r.alreadyApproved).length;
554
585
  return {
555
586
  signedTransactions,
556
587
  results,
557
588
  needApproveCount,
558
- alreadyApprovedCount,
589
+ alreadyApprovedCount
559
590
  };
560
591
  }
561
592
  // ==================== signOnly=false(默认):直接发送交易 ====================
@@ -570,12 +601,12 @@ export async function approveTokenBatchRaw(params) {
570
601
  try {
571
602
  // 如果已经授权足够,跳过
572
603
  // ✅ max 授权:使用阈值判断(与 BSC 一致)
573
- if (isMax ? currentAllowance >= MAX_APPROVAL_THRESHOLD : currentAllowance >= requiredAmount) {
604
+ if (isMax ? (currentAllowance >= MAX_APPROVAL_THRESHOLD) : (currentAllowance >= requiredAmount)) {
574
605
  return {
575
606
  owner: ownerAddress,
576
607
  alreadyApproved: true,
577
608
  currentAllowance,
578
- requiredAllowance: requiredAmount,
609
+ requiredAllowance: requiredAmount
579
610
  };
580
611
  }
581
612
  // 发送授权交易
@@ -587,7 +618,7 @@ export async function approveTokenBatchRaw(params) {
587
618
  alreadyApproved: false,
588
619
  currentAllowance,
589
620
  requiredAllowance: requiredAmount,
590
- txHash: receipt.hash,
621
+ txHash: receipt.hash
591
622
  };
592
623
  }
593
624
  catch (error) {
@@ -596,19 +627,19 @@ export async function approveTokenBatchRaw(params) {
596
627
  alreadyApproved: false,
597
628
  currentAllowance,
598
629
  requiredAllowance: requiredAmount,
599
- error: getErrorMessageFromUnknown(error),
630
+ error: error.message
600
631
  };
601
632
  }
602
633
  });
603
634
  // ✅ 优化:并行等待所有授权交易完成
604
635
  const results = await Promise.all(approvalPromises);
605
636
  // 统计结果
606
- const approvedCount = results.filter((r) => !r.alreadyApproved && !r.error).length;
607
- const errorCount = results.filter((r) => r.error).length;
637
+ const approvedCount = results.filter(r => !r.alreadyApproved && !r.error).length;
638
+ const errorCount = results.filter(r => r.error).length;
608
639
  // ✅ 只要没有错误,就算成功(包括所有钱包都已授权的情况)
609
640
  return {
610
641
  success: errorCount === 0,
611
642
  approvedCount,
612
- results,
643
+ results
613
644
  };
614
645
  }
@@ -1,16 +1,5 @@
1
- import { SdkErrorCode } from '../types/errors.js';
2
- import type { FourErrorCode } from './types/errors.js';
3
- export { SdkErrorCode } from '../types/errors.js';
4
- export type { FourErrorCode } from './types/errors.js';
1
+ export type FourErrorCode = 'GW' | 'ZA' | 'TO' | 'Slippage' | 'More BNB' | 'FR' | 'SO';
5
2
  export declare function parseFourError(err: unknown): {
6
3
  code?: FourErrorCode;
7
4
  message: string;
8
5
  };
9
- /** 统一结构化错误(含错误码,便于上层分支处理) */
10
- export declare class SdkError extends Error {
11
- readonly code: SdkErrorCode;
12
- cause?: unknown;
13
- constructor(code: SdkErrorCode, message: string, cause?: unknown);
14
- }
15
- /** 将任意异常归一为 SdkError */
16
- export declare function parseSdkError(err: unknown): SdkError;
@@ -1,6 +1,3 @@
1
- import { getErrorMessageFromUnknown } from '../shared/foundation/normalize-unknown.js';
2
- import { SdkErrorCode } from '../types/errors.js';
3
- export { SdkErrorCode } from '../types/errors.js';
4
1
  const MESSAGES = {
5
2
  GW: 'Amount precision is not aligned to GWEI',
6
3
  ZA: "The 'to' address should not be address(0)",
@@ -11,65 +8,9 @@ const MESSAGES = {
11
8
  SO: 'Order amount is too small',
12
9
  };
13
10
  export function parseFourError(err) {
14
- const raw = getErrorMessageFromUnknown(err);
11
+ const raw = String(err?.message ?? err);
15
12
  const found = Object.keys(MESSAGES).find((k) => raw.includes(k));
16
13
  if (found)
17
14
  return { code: found, message: MESSAGES[found] };
18
15
  return { message: raw };
19
16
  }
20
- function mapFourCodeToSdk(code) {
21
- switch (code) {
22
- case 'GW':
23
- return SdkErrorCode.FOUR_GWEI_PRECISION;
24
- case 'ZA':
25
- return SdkErrorCode.FOUR_ZERO_ADDRESS;
26
- case 'TO':
27
- return SdkErrorCode.FOUR_ZERO_ADDRESS;
28
- case 'Slippage':
29
- return SdkErrorCode.FOUR_SLIPPAGE;
30
- case 'More BNB':
31
- return SdkErrorCode.FOUR_INSUFFICIENT_FUNDS;
32
- case 'FR':
33
- return SdkErrorCode.FOUR_FEE_TOO_HIGH;
34
- case 'SO':
35
- return SdkErrorCode.FOUR_ORDER_TOO_SMALL;
36
- default:
37
- return SdkErrorCode.UNKNOWN_ERROR;
38
- }
39
- }
40
- /** 统一结构化错误(含错误码,便于上层分支处理) */
41
- export class SdkError extends Error {
42
- code;
43
- constructor(code, message, cause) {
44
- super(message, cause !== undefined ? { cause } : undefined);
45
- this.name = 'SdkError';
46
- this.code = code;
47
- }
48
- }
49
- /** 将任意异常归一为 SdkError */
50
- export function parseSdkError(err) {
51
- if (err instanceof SdkError)
52
- return err;
53
- if (err === null || err === undefined) {
54
- return new SdkError(SdkErrorCode.UNKNOWN_ERROR, 'Unknown error');
55
- }
56
- const raw = getErrorMessageFromUnknown(err);
57
- const rawLower = raw.toLowerCase();
58
- const four = parseFourError(err);
59
- if (four.code) {
60
- return new SdkError(mapFourCodeToSdk(four.code), four.message);
61
- }
62
- if (rawLower.includes('token already exists')) {
63
- return new SdkError(SdkErrorCode.TOKEN_ALREADY_EXISTS, raw);
64
- }
65
- if (rawLower.includes('slippage')) {
66
- return new SdkError(SdkErrorCode.SLIPPAGE_EXCEEDED, raw);
67
- }
68
- if (rawLower.includes('insufficient funds') || rawLower.includes('insufficient balance')) {
69
- return new SdkError(SdkErrorCode.INSUFFICIENT_BALANCE, raw);
70
- }
71
- if (rawLower.includes('permit expired')) {
72
- return new SdkError(SdkErrorCode.PERMIT_EXPIRED, raw);
73
- }
74
- return new SdkError(SdkErrorCode.UNKNOWN_ERROR, raw);
75
- }