four-flap-meme-sdk 2.2.1 → 2.2.2

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 (470) 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 +85 -20
  142. package/dist/index.js +215 -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 +252 -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 +3 -2
  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 +3 -3
  171. package/dist/shared/flap/index.js +3 -3
  172. package/dist/shared/flap/meta.d.ts +18 -22
  173. package/dist/shared/flap/meta.js +17 -12
  174. package/dist/shared/flap/permit.js +2 -5
  175. package/dist/shared/flap/pinata.d.ts +6 -22
  176. package/dist/shared/flap/pinata.js +26 -21
  177. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +72 -3
  178. package/dist/shared/flap/portal-bundle-merkle/config.js +124 -4
  179. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +4 -0
  180. package/dist/shared/flap/portal-bundle-merkle/core.js +172 -92
  181. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +1 -2
  182. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +99 -106
  183. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +92 -100
  184. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +7 -11
  185. package/dist/shared/flap/portal-bundle-merkle/index.js +7 -4
  186. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +68 -71
  187. package/dist/shared/flap/portal-bundle-merkle/private.js +114 -61
  188. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +64 -1
  189. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +247 -66
  190. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +71 -2
  191. package/dist/shared/flap/portal-bundle-merkle/swap.js +410 -103
  192. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +7 -73
  193. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +80 -1
  194. package/dist/shared/flap/portal-bundle-merkle/utils.js +265 -145
  195. package/dist/shared/flap/portal-bundle.js +56 -55
  196. package/dist/shared/flap/portal.d.ts +3 -1
  197. package/dist/shared/flap/portal.js +25 -32
  198. package/dist/shared/flap/vanity.d.ts +5 -1
  199. package/dist/shared/flap/vanity.js +17 -6
  200. package/dist/shared/flap/vault.d.ts +124 -17
  201. package/dist/shared/flap/vault.js +148 -67
  202. package/dist/shared/four/tax-token.d.ts +1 -1
  203. package/dist/shared/four/tax-token.js +7 -27
  204. package/dist/shared/index.d.ts +0 -6
  205. package/dist/shared/index.js +0 -4
  206. package/dist/utils/airdrop-sweep.d.ts +76 -4
  207. package/dist/utils/airdrop-sweep.js +55 -42
  208. package/dist/utils/bundle-helpers.d.ts +243 -9
  209. package/dist/utils/bundle-helpers.js +584 -10
  210. package/dist/utils/constants.d.ts +61 -5
  211. package/dist/utils/constants.js +80 -5
  212. package/dist/utils/contract-factory.d.ts +4 -2
  213. package/dist/utils/contract-factory.js +18 -25
  214. package/dist/utils/erc20.d.ts +89 -7
  215. package/dist/utils/erc20.js +125 -94
  216. package/dist/utils/errors.d.ts +1 -12
  217. package/dist/utils/errors.js +1 -60
  218. package/dist/utils/holders-maker.d.ts +138 -2
  219. package/dist/utils/holders-maker.js +661 -26
  220. package/dist/utils/lp-inspect.d.ts +112 -2
  221. package/dist/utils/lp-inspect.js +223 -73
  222. package/dist/utils/mpcExclusive.d.ts +5 -2
  223. package/dist/utils/mpcExclusive.js +3 -4
  224. package/dist/utils/private-sale.d.ts +58 -2
  225. package/dist/utils/private-sale.js +15 -4
  226. package/dist/utils/provider-factory.d.ts +0 -4
  227. package/dist/utils/provider-factory.js +0 -10
  228. package/dist/utils/quote-helpers.d.ts +45 -4
  229. package/dist/utils/quote-helpers.js +74 -17
  230. package/dist/utils/stealth-transfer.d.ts +28 -2
  231. package/dist/utils/stealth-transfer.js +15 -31
  232. package/dist/utils/swap-helpers.d.ts +15 -2
  233. package/dist/utils/swap-helpers.js +11 -6
  234. package/dist/utils/wallet.d.ts +25 -2
  235. package/dist/utils/wallet.js +10 -13
  236. package/package.json +4 -160
  237. package/dist/__tests__/subpath-exports.test.d.ts +0 -1
  238. package/dist/__tests__/subpath-exports.test.js +0 -64
  239. package/dist/abis/common.d.ts +0 -85
  240. package/dist/abis/common.js +0 -260
  241. package/dist/abis/contracts/TaxToken.json +0 -969
  242. package/dist/abis/contracts/TokenManager2.json +0 -136
  243. package/dist/abis/contracts/index.d.ts +0 -5
  244. package/dist/abis/contracts/index.js +0 -5
  245. package/dist/abis/flap/index.d.ts +0 -3
  246. package/dist/abis/flap/index.js +0 -3
  247. package/dist/abis/flap/portal-events.d.ts +0 -6
  248. package/dist/abis/flap/portal-events.js +0 -17
  249. package/dist/abis/flap/portal.d.ts +0 -6
  250. package/dist/abis/flap/portal.js +0 -37
  251. package/dist/abis/flap/vault.d.ts +0 -171
  252. package/dist/abis/flap/vault.js +0 -91
  253. package/dist/abis/index.d.ts +0 -8
  254. package/dist/abis/index.js +0 -11
  255. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +0 -1
  256. package/dist/bundle-core/__tests__/config-helpers.test.js +0 -28
  257. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +0 -1
  258. package/dist/bundle-core/__tests__/facade-parity.test.js +0 -33
  259. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +0 -1
  260. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +0 -60
  261. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +0 -1
  262. package/dist/bundle-core/__tests__/sign-fixture.test.js +0 -220
  263. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +0 -10
  264. package/dist/bundle-core/__tests__/sign-fixtures.js +0 -16
  265. package/dist/bundle-core/config-helpers.d.ts +0 -36
  266. package/dist/bundle-core/config-helpers.js +0 -57
  267. package/dist/bundle-core/errors.d.ts +0 -50
  268. package/dist/bundle-core/errors.js +0 -35
  269. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +0 -7
  270. package/dist/bundle-core/four-meme/approve-tokenmanager.js +0 -99
  271. package/dist/bundle-core/four-meme/core-helpers.d.ts +0 -8
  272. package/dist/bundle-core/four-meme/core-helpers.js +0 -40
  273. package/dist/bundle-core/four-meme/core.d.ts +0 -4
  274. package/dist/bundle-core/four-meme/core.js +0 -515
  275. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +0 -28
  276. package/dist/bundle-core/four-meme/pancake-proxy.js +0 -679
  277. package/dist/bundle-core/four-meme/private.d.ts +0 -27
  278. package/dist/bundle-core/four-meme/private.js +0 -465
  279. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +0 -2
  280. package/dist/bundle-core/four-meme/sign-context-helpers.js +0 -2
  281. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +0 -8
  282. package/dist/bundle-core/four-meme/swap-buy-first.js +0 -493
  283. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +0 -6
  284. package/dist/bundle-core/four-meme/swap-hop-helpers.js +0 -63
  285. package/dist/bundle-core/four-meme/swap-internal.d.ts +0 -3
  286. package/dist/bundle-core/four-meme/swap-internal.js +0 -18
  287. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +0 -27
  288. package/dist/bundle-core/four-meme/swap-sign-helpers.js +0 -105
  289. package/dist/bundle-core/four-meme/swap.d.ts +0 -17
  290. package/dist/bundle-core/four-meme/swap.js +0 -505
  291. package/dist/bundle-core/four-meme/types/buy-first.d.ts +0 -50
  292. package/dist/bundle-core/four-meme/types/buy-first.js +0 -1
  293. package/dist/bundle-core/four-meme/types/core-flow.d.ts +0 -63
  294. package/dist/bundle-core/four-meme/types/core-flow.js +0 -1
  295. package/dist/bundle-core/four-meme/types/index.d.ts +0 -600
  296. package/dist/bundle-core/four-meme/types/index.js +0 -1
  297. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +0 -19
  298. package/dist/bundle-core/four-meme/types/swap-internal.js +0 -1
  299. package/dist/bundle-core/four-meme/types.d.ts +0 -1
  300. package/dist/bundle-core/four-meme/types.js +0 -1
  301. package/dist/bundle-core/four-meme/utils-disperse.d.ts +0 -7
  302. package/dist/bundle-core/four-meme/utils-disperse.js +0 -396
  303. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +0 -8
  304. package/dist/bundle-core/four-meme/utils-pairwise.js +0 -328
  305. package/dist/bundle-core/four-meme/utils-sweep.d.ts +0 -8
  306. package/dist/bundle-core/four-meme/utils-sweep.js +0 -744
  307. package/dist/bundle-core/index.d.ts +0 -8
  308. package/dist/bundle-core/index.js +0 -8
  309. package/dist/bundle-core/internal.d.ts +0 -21
  310. package/dist/bundle-core/internal.js +0 -182
  311. package/dist/bundle-core/sign-context-helpers.d.ts +0 -25
  312. package/dist/bundle-core/sign-context-helpers.js +0 -67
  313. package/dist/bundle-core/submit.d.ts +0 -293
  314. package/dist/bundle-core/submit.js +0 -727
  315. package/dist/bundle-core/types/index.d.ts +0 -8
  316. package/dist/bundle-core/types/index.js +0 -1
  317. package/dist/bundle-core/types.d.ts +0 -1
  318. package/dist/bundle-core/types.js +0 -1
  319. package/dist/chains/bsc/four/utils-disperse.d.ts +0 -1
  320. package/dist/chains/bsc/four/utils-disperse.js +0 -1
  321. package/dist/chains/bsc/four/utils-pairwise.d.ts +0 -1
  322. package/dist/chains/bsc/four/utils-pairwise.js +0 -1
  323. package/dist/chains/bsc/four/utils-sweep.d.ts +0 -1
  324. package/dist/chains/bsc/four/utils-sweep.js +0 -1
  325. package/dist/chains/bsc/iro.d.ts +0 -5
  326. package/dist/chains/bsc/iro.js +0 -4
  327. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +0 -159
  328. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +0 -117
  329. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +0 -241
  330. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +0 -565
  331. package/dist/chains/eni/flat-aliases.d.ts +0 -10
  332. package/dist/chains/eni/flat-aliases.js +0 -8
  333. package/dist/chains/eni/submit.d.ts +0 -43
  334. package/dist/chains/eni/submit.js +0 -286
  335. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +0 -13
  336. package/dist/chains/xlayer/eip7702/flat-aliases.js +0 -10
  337. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +0 -79
  338. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +0 -1
  339. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +0 -26
  340. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +0 -57
  341. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +0 -148
  342. package/dist/chains/xlayer/eip7702/volume-helpers.js +0 -48
  343. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +0 -126
  344. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +0 -228
  345. package/dist/contracts/tm-bundle-helpers.d.ts +0 -88
  346. package/dist/contracts/tm-bundle-helpers.js +0 -72
  347. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +0 -1
  348. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +0 -1
  349. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +0 -1
  350. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +0 -1
  351. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +0 -1
  352. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +0 -1
  353. package/dist/dex/direct-router-helpers.d.ts +0 -264
  354. package/dist/dex/direct-router-helpers.js +0 -539
  355. package/dist/dex/types.d.ts +0 -81
  356. package/dist/dex/types.js +0 -1
  357. package/dist/exports/root-bundle-and-tooling.d.ts +0 -27
  358. package/dist/exports/root-bundle-and-tooling.js +0 -30
  359. package/dist/exports/root-eni-and-bsc-iro.d.ts +0 -26
  360. package/dist/exports/root-eni-and-bsc-iro.js +0 -66
  361. package/dist/exports/root-foundations.d.ts +0 -35
  362. package/dist/exports/root-foundations.js +0 -70
  363. package/dist/exports/root-swap-dex-and-xlayer.d.ts +0 -30
  364. package/dist/exports/root-swap-dex-and-xlayer.js +0 -78
  365. package/dist/flap/index.d.ts +0 -10
  366. package/dist/flap/index.js +0 -8
  367. package/dist/flows/index.d.ts +0 -1
  368. package/dist/flows/index.js +0 -1
  369. package/dist/merkle/index.d.ts +0 -12
  370. package/dist/merkle/index.js +0 -11
  371. package/dist/shared/clients/index.d.ts +0 -8
  372. package/dist/shared/clients/index.js +0 -8
  373. package/dist/shared/constants/quote.d.ts +0 -30
  374. package/dist/shared/constants/quote.js +0 -37
  375. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +0 -32
  376. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +0 -83
  377. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +0 -125
  378. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +0 -113
  379. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +0 -149
  380. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +0 -259
  381. package/dist/shared/foundation/dex/v3-path.d.ts +0 -6
  382. package/dist/shared/foundation/dex/v3-path.js +0 -35
  383. package/dist/shared/foundation/gas/bundle-gas.d.ts +0 -49
  384. package/dist/shared/foundation/gas/bundle-gas.js +0 -93
  385. package/dist/shared/foundation/gas/profit-hop.d.ts +0 -20
  386. package/dist/shared/foundation/gas/profit-hop.js +0 -72
  387. package/dist/shared/foundation/index.d.ts +0 -13
  388. package/dist/shared/foundation/index.js +0 -12
  389. package/dist/shared/foundation/nonce/nonce-manager.d.ts +0 -17
  390. package/dist/shared/foundation/nonce/nonce-manager.js +0 -183
  391. package/dist/shared/foundation/normalize-unknown.d.ts +0 -9
  392. package/dist/shared/foundation/normalize-unknown.js +0 -29
  393. package/dist/shared/foundation/sdk-logger.d.ts +0 -13
  394. package/dist/shared/foundation/sdk-logger.js +0 -12
  395. package/dist/shared/foundation/tx/build-request.d.ts +0 -17
  396. package/dist/shared/foundation/tx/build-request.js +0 -25
  397. package/dist/shared/foundation/tx/sign-batch.d.ts +0 -5
  398. package/dist/shared/foundation/tx/sign-batch.js +0 -26
  399. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +0 -1
  400. package/dist/shared/foundation/tx/wallet-sign-patch.js +0 -18
  401. package/dist/shared/foundation/types/airdrop-sweep.d.ts +0 -79
  402. package/dist/shared/foundation/types/airdrop-sweep.js +0 -1
  403. package/dist/shared/foundation/types/erc20.d.ts +0 -65
  404. package/dist/shared/foundation/types/erc20.js +0 -1
  405. package/dist/shared/foundation/types/holders-maker.d.ts +0 -64
  406. package/dist/shared/foundation/types/holders-maker.js +0 -1
  407. package/dist/shared/foundation/types/index.d.ts +0 -7
  408. package/dist/shared/foundation/types/index.js +0 -1
  409. package/dist/shared/foundation/types/lp-inspect.d.ts +0 -102
  410. package/dist/shared/foundation/types/lp-inspect.js +0 -1
  411. package/dist/shared/foundation/types/multicall.d.ts +0 -5
  412. package/dist/shared/foundation/types/multicall.js +0 -1
  413. package/dist/shared/foundation/types/private-sale.d.ts +0 -35
  414. package/dist/shared/foundation/types/private-sale.js +0 -1
  415. package/dist/shared/foundation/types/quote-helpers.d.ts +0 -17
  416. package/dist/shared/foundation/types/quote-helpers.js +0 -1
  417. package/dist/types/errors.d.ts +0 -27
  418. package/dist/types/errors.js +0 -34
  419. package/dist/utils/holders-maker/addresses.d.ts +0 -12
  420. package/dist/utils/holders-maker/addresses.js +0 -15
  421. package/dist/utils/holders-maker/buy-tx.d.ts +0 -44
  422. package/dist/utils/holders-maker/buy-tx.js +0 -278
  423. package/dist/utils/holders-maker/constants.d.ts +0 -6
  424. package/dist/utils/holders-maker/constants.js +0 -7
  425. package/dist/utils/holders-maker/disperse.d.ts +0 -18
  426. package/dist/utils/holders-maker/disperse.js +0 -90
  427. package/dist/utils/holders-maker/routing.d.ts +0 -4
  428. package/dist/utils/holders-maker/routing.js +0 -45
  429. package/dist/utils/holders-maker/transfer-tx.d.ts +0 -4
  430. package/dist/utils/holders-maker/transfer-tx.js +0 -67
  431. package/dist/utils/holders-maker-helpers.d.ts +0 -9
  432. package/dist/utils/holders-maker-helpers.js +0 -9
  433. package/dist/utils/hop-chains.d.ts +0 -35
  434. package/dist/utils/hop-chains.js +0 -215
  435. package/dist/utils/lp-inspect-helpers.d.ts +0 -9
  436. package/dist/utils/lp-inspect-helpers.js +0 -109
  437. package/dist/utils/types/airdrop-sweep.d.ts +0 -1
  438. package/dist/utils/types/airdrop-sweep.js +0 -1
  439. package/dist/utils/types/contract-factory.d.ts +0 -1
  440. package/dist/utils/types/contract-factory.js +0 -1
  441. package/dist/utils/types/erc20.d.ts +0 -1
  442. package/dist/utils/types/erc20.js +0 -1
  443. package/dist/utils/types/errors.d.ts +0 -1
  444. package/dist/utils/types/errors.js +0 -1
  445. package/dist/utils/types/holders-maker.d.ts +0 -1
  446. package/dist/utils/types/holders-maker.js +0 -1
  447. package/dist/utils/types/hop-chains.d.ts +0 -8
  448. package/dist/utils/types/hop-chains.js +0 -1
  449. package/dist/utils/types/index.d.ts +0 -13
  450. package/dist/utils/types/index.js +0 -1
  451. package/dist/utils/types/lp-inspect.d.ts +0 -1
  452. package/dist/utils/types/lp-inspect.js +0 -1
  453. package/dist/utils/types/mpc-exclusive.d.ts +0 -5
  454. package/dist/utils/types/mpc-exclusive.js +0 -1
  455. package/dist/utils/types/private-sale.d.ts +0 -1
  456. package/dist/utils/types/private-sale.js +0 -1
  457. package/dist/utils/types/quote-helpers.d.ts +0 -1
  458. package/dist/utils/types/quote-helpers.js +0 -1
  459. package/dist/utils/types/stealth-transfer.d.ts +0 -44
  460. package/dist/utils/types/stealth-transfer.js +0 -1
  461. package/dist/utils/types/wallet.d.ts +0 -25
  462. package/dist/utils/types/wallet.js +0 -1
  463. package/dist/vanity/index.d.ts +0 -5
  464. package/dist/vanity/index.js +0 -5
  465. package/src/abis/contracts/TaxToken.json +0 -969
  466. package/src/abis/contracts/TokenManager.json +0 -836
  467. package/src/abis/contracts/TokenManager2.json +0 -136
  468. package/src/abis/contracts/TokenManagerHelper3.json +0 -993
  469. /package/dist/{abis/contracts → shared/abis}/TokenManager.json +0 -0
  470. /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
- }