four-flap-meme-sdk 2.2.19 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/dist/{shared/abis → abis}/common.d.ts +1 -1
  2. package/dist/{shared/abis → abis}/common.js +75 -91
  3. package/dist/abis/contracts/TaxToken.json +969 -0
  4. package/dist/abis/contracts/TokenManager2.json +136 -0
  5. package/dist/{shared/abis → abis/contracts}/index.d.ts +0 -1
  6. package/dist/{shared/abis → abis/contracts}/index.js +0 -2
  7. package/dist/abis/flap/index.d.ts +5 -0
  8. package/dist/abis/flap/index.js +5 -0
  9. package/dist/abis/flap/portal-eip7702.d.ts +4 -0
  10. package/dist/abis/flap/portal-eip7702.js +39 -0
  11. package/dist/abis/flap/portal-events.d.ts +6 -0
  12. package/dist/abis/flap/portal-events.js +17 -0
  13. package/dist/abis/flap/portal-merkle.d.ts +4 -0
  14. package/dist/abis/flap/portal-merkle.js +25 -0
  15. package/dist/abis/flap/portal.d.ts +6 -0
  16. package/dist/abis/flap/portal.js +37 -0
  17. package/dist/abis/flap/vault.d.ts +171 -0
  18. package/dist/abis/flap/vault.js +91 -0
  19. package/dist/abis/index.d.ts +6 -0
  20. package/dist/abis/index.js +9 -0
  21. package/dist/bundle/config-helpers.d.ts +37 -0
  22. package/dist/bundle/config-helpers.js +58 -0
  23. package/dist/bundle/errors.d.ts +50 -0
  24. package/dist/bundle/errors.js +38 -0
  25. package/dist/bundle/four-meme/approve-tokenmanager.d.ts +7 -0
  26. package/dist/bundle/four-meme/approve-tokenmanager.js +99 -0
  27. package/dist/bundle/four-meme/core-helpers.d.ts +8 -0
  28. package/dist/bundle/four-meme/core-helpers.js +41 -0
  29. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/core.d.ts +1 -1
  30. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/core.js +74 -150
  31. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/pancake-proxy.d.ts +1 -1
  32. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/pancake-proxy.js +85 -92
  33. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/private.d.ts +1 -1
  34. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/private.js +48 -59
  35. package/dist/bundle/four-meme/sign-context-helpers.d.ts +2 -0
  36. package/dist/bundle/four-meme/sign-context-helpers.js +2 -0
  37. package/dist/bundle/four-meme/swap-buy-first.d.ts +8 -0
  38. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-buy-first.js +56 -108
  39. package/dist/bundle/four-meme/swap-hop-helpers.d.ts +6 -0
  40. package/dist/bundle/four-meme/swap-hop-helpers.js +63 -0
  41. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-internal.js +4 -4
  42. package/dist/bundle/four-meme/swap-sign-helpers.d.ts +28 -0
  43. package/dist/bundle/four-meme/swap-sign-helpers.js +105 -0
  44. package/dist/bundle/four-meme/swap.d.ts +17 -0
  45. package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap.js +84 -345
  46. package/dist/{contracts/tm-bundle-merkle/swap-buy-first.d.ts → bundle/four-meme/types/buy-first.d.ts} +11 -18
  47. package/dist/bundle/four-meme/types/core-flow.d.ts +63 -0
  48. package/dist/bundle/four-meme/types/core-flow.js +1 -0
  49. package/dist/{contracts/tm-bundle-merkle/types.d.ts → bundle/four-meme/types/index.d.ts} +130 -6
  50. package/dist/bundle/four-meme/types/index.js +1 -0
  51. package/dist/bundle/four-meme/types/swap-internal.d.ts +19 -0
  52. package/dist/bundle/four-meme/types/swap-internal.js +1 -0
  53. package/dist/bundle/four-meme/types.d.ts +1 -0
  54. package/dist/bundle/four-meme/utils-disperse.d.ts +7 -0
  55. package/dist/bundle/four-meme/utils-disperse.js +396 -0
  56. package/dist/bundle/four-meme/utils-pairwise.d.ts +8 -0
  57. package/dist/bundle/four-meme/utils-pairwise.js +328 -0
  58. package/dist/bundle/four-meme/utils-sweep.d.ts +8 -0
  59. package/dist/bundle/four-meme/utils-sweep.js +744 -0
  60. package/dist/bundle/index.d.ts +8 -0
  61. package/dist/bundle/index.js +8 -0
  62. package/dist/bundle/internal.d.ts +16 -0
  63. package/dist/bundle/internal.js +160 -0
  64. package/dist/bundle/sign-context-helpers.d.ts +26 -0
  65. package/dist/bundle/sign-context-helpers.js +63 -0
  66. package/dist/{contracts/tm-bundle-merkle → bundle}/submit.d.ts +6 -27
  67. package/dist/{contracts/tm-bundle-merkle → bundle}/submit.js +116 -313
  68. package/dist/bundle/types/index.d.ts +8 -0
  69. package/dist/bundle/types/index.js +1 -0
  70. package/dist/bundle/types.d.ts +1 -0
  71. package/dist/bundle/types.js +1 -0
  72. package/dist/chains/bsc/constants.js +1 -1
  73. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  74. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
  75. package/dist/chains/bsc/four/config.d.ts +5 -67
  76. package/dist/chains/bsc/four/config.js +2 -114
  77. package/dist/chains/bsc/four/core.d.ts +1 -4
  78. package/dist/chains/bsc/four/core.js +1 -592
  79. package/dist/chains/bsc/four/index.d.ts +6 -6
  80. package/dist/chains/bsc/four/index.js +6 -6
  81. package/dist/chains/bsc/four/internal.d.ts +2 -46
  82. package/dist/chains/bsc/four/internal.js +2 -239
  83. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  84. package/dist/chains/bsc/four/pancake-proxy.js +1 -687
  85. package/dist/chains/bsc/four/private.d.ts +1 -27
  86. package/dist/chains/bsc/four/private.js +1 -477
  87. package/dist/chains/bsc/four/submit.d.ts +2 -315
  88. package/dist/chains/bsc/four/submit.js +2 -752
  89. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  90. package/dist/chains/bsc/four/swap-buy-first.js +2 -507
  91. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  92. package/dist/chains/bsc/four/swap-internal.js +1 -18
  93. package/dist/chains/bsc/four/swap.d.ts +2 -144
  94. package/dist/chains/bsc/four/swap.js +2 -766
  95. package/dist/chains/bsc/four/types.d.ts +1 -476
  96. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  97. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  98. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  99. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  100. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  101. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  102. package/dist/chains/bsc/four/utils.d.ts +5 -18
  103. package/dist/chains/bsc/four/utils.js +5 -1552
  104. package/dist/chains/bsc/iro.d.ts +5 -0
  105. package/dist/chains/bsc/iro.js +4 -0
  106. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +155 -0
  107. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +80 -0
  108. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  109. package/dist/chains/bsc/pancake/bundle-buy-first.js +99 -214
  110. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  111. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  112. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  113. package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
  114. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  115. package/dist/chains/bsc/pancake/index.js +1 -3
  116. package/dist/chains/bsc/platforms/iro/constants.js +1 -1
  117. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  118. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  119. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  120. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  121. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  122. package/dist/chains/bsc/platforms/iro/token.js +5 -2
  123. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  124. package/dist/chains/eni/batch-router/transfer.js +57 -27
  125. package/dist/chains/eni/batch-router/utils.js +32 -6
  126. package/dist/chains/eni/bundler/sign.js +5 -6
  127. package/dist/chains/eni/bundler/submit.js +1 -4
  128. package/dist/chains/eni/constants.js +2 -2
  129. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  130. package/dist/chains/eni/flat-aliases.js +8 -0
  131. package/dist/chains/eni/index.d.ts +2 -1
  132. package/dist/chains/eni/index.js +1 -0
  133. package/dist/chains/eni/platforms/daoaas/create.js +3 -3
  134. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  135. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  136. package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
  137. package/dist/chains/eni/platforms/daoaas/portal-direct.js +29 -45
  138. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  139. package/dist/chains/eni/platforms/dswap/liquidity.js +59 -27
  140. package/dist/chains/eni/platforms/fair-launch/constants.js +1 -1
  141. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  142. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  143. package/dist/chains/eni/platforms/fair-launch/launcher.js +88 -47
  144. package/dist/chains/eni/platforms/fair-launch/pool.js +5 -2
  145. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  146. package/dist/chains/eni/platforms/iro/constants.d.ts +1 -1
  147. package/dist/chains/eni/platforms/iro/constants.js +2 -2
  148. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  149. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  150. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  151. package/dist/chains/eni/platforms/iro/index.js +4 -4
  152. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  153. package/dist/chains/eni/platforms/iro/token.js +108 -32
  154. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  155. package/dist/chains/eni/submit.d.ts +43 -0
  156. package/dist/chains/eni/submit.js +287 -0
  157. package/dist/chains/index.d.ts +13 -0
  158. package/dist/chains/index.js +13 -0
  159. package/dist/chains/monad/constants.js +1 -1
  160. package/dist/chains/xlayer/constants.d.ts +5 -0
  161. package/dist/chains/xlayer/constants.js +1 -1
  162. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  163. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
  164. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  165. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  166. package/dist/chains/xlayer/eip7702/bundle-create.js +104 -74
  167. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  168. package/dist/chains/xlayer/eip7702/bundle-sell.js +30 -112
  169. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  170. package/dist/chains/xlayer/eip7702/bundle-swap.js +52 -246
  171. package/dist/chains/xlayer/eip7702/constants.d.ts +11 -26
  172. package/dist/chains/xlayer/eip7702/constants.js +15 -68
  173. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  174. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  175. package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
  176. package/dist/chains/xlayer/eip7702/index.js +28 -81
  177. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  178. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  179. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  180. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +64 -308
  181. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  182. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +58 -0
  183. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  184. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  185. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  186. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  187. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  188. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  189. package/dist/chains/xlayer/eip7702/volume.js +89 -164
  190. package/dist/chains/xlayer/eoa/constants.d.ts +1 -1
  191. package/dist/chains/xlayer/eoa/constants.js +2 -16
  192. package/dist/chains/xlayer/eoa/dex-helpers.d.ts +1 -1
  193. package/dist/chains/xlayer/eoa/dex-helpers.js +7 -37
  194. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  195. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  196. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  197. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
  198. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  199. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
  200. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  201. package/dist/chains/xlayer/eoa/index.js +8 -23
  202. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  203. package/dist/chains/xlayer/eoa/router-manager.js +5 -4
  204. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  205. package/dist/chains/xlayer/eoa/types.js +1 -3
  206. package/dist/chains/xlayer/index.d.ts +3 -2
  207. package/dist/chains/xlayer/index.js +4 -7
  208. package/dist/core/amount/split-by-weight.d.ts +5 -0
  209. package/dist/core/amount/split-by-weight.js +35 -0
  210. package/dist/{shared → core}/clients/blockrazor.d.ts +4 -8
  211. package/dist/{shared → core}/clients/blockrazor.js +43 -35
  212. package/dist/{shared → core}/clients/club48.d.ts +2 -2
  213. package/dist/{shared → core}/clients/club48.js +36 -30
  214. package/dist/{shared → core}/clients/emitservice.js +2 -0
  215. package/dist/{shared → core}/clients/four.d.ts +21 -6
  216. package/dist/{shared → core}/clients/four.js +29 -24
  217. package/dist/core/clients/index.d.ts +8 -0
  218. package/dist/core/clients/index.js +8 -0
  219. package/dist/{shared → core}/clients/merkle.d.ts +4 -3
  220. package/dist/{shared → core}/clients/merkle.js +30 -47
  221. package/dist/{shared → core}/constants/addresses.d.ts +27 -1
  222. package/dist/{shared → core}/constants/addresses.js +39 -2
  223. package/dist/{shared → core}/constants/chains.d.ts +1 -1
  224. package/dist/{shared → core}/constants/chains.js +1 -1
  225. package/dist/{shared → core}/constants/gas.d.ts +1 -1
  226. package/dist/{shared → core}/constants/gas.js +2 -6
  227. package/dist/{shared → core}/constants/index.d.ts +5 -2
  228. package/dist/{shared → core}/constants/index.js +3 -2
  229. package/dist/core/constants/quote.d.ts +30 -0
  230. package/dist/core/constants/quote.js +37 -0
  231. package/dist/core/dex/v3-path.d.ts +6 -0
  232. package/dist/core/dex/v3-path.js +35 -0
  233. package/dist/core/erc20/decimals.d.ts +7 -0
  234. package/dist/core/erc20/decimals.js +24 -0
  235. package/dist/{utils → core}/erc20.d.ts +7 -89
  236. package/dist/{utils → core}/erc20.js +99 -130
  237. package/dist/core/foundation.d.ts +15 -0
  238. package/dist/core/foundation.js +14 -0
  239. package/dist/core/gas/bundle-gas.d.ts +49 -0
  240. package/dist/core/gas/bundle-gas.js +93 -0
  241. package/dist/core/gas/profit-hop.d.ts +20 -0
  242. package/dist/core/gas/profit-hop.js +72 -0
  243. package/dist/core/index.d.ts +5 -0
  244. package/dist/core/index.js +5 -0
  245. package/dist/core/legacy-types/errors.d.ts +27 -0
  246. package/dist/core/legacy-types/errors.js +34 -0
  247. package/dist/core/nonce/nonce-manager.d.ts +19 -0
  248. package/dist/core/nonce/nonce-manager.js +217 -0
  249. package/dist/core/normalize-unknown.d.ts +9 -0
  250. package/dist/core/normalize-unknown.js +29 -0
  251. package/dist/core/sdk-logger.d.ts +13 -0
  252. package/dist/core/sdk-logger.js +12 -0
  253. package/dist/core/shared-abis/common.d.ts +4 -0
  254. package/dist/core/shared-abis/common.js +4 -0
  255. package/dist/core/shared-abis/index.d.ts +5 -0
  256. package/dist/core/shared-abis/index.js +5 -0
  257. package/dist/core/tx/build-request.d.ts +17 -0
  258. package/dist/core/tx/build-request.js +25 -0
  259. package/dist/core/tx/sign-batch.d.ts +5 -0
  260. package/dist/core/tx/sign-batch.js +26 -0
  261. package/dist/core/tx/wallet-sign-patch.d.ts +1 -0
  262. package/dist/core/tx/wallet-sign-patch.js +18 -0
  263. package/dist/core/types/airdrop-sweep.d.ts +79 -0
  264. package/dist/core/types/airdrop-sweep.js +1 -0
  265. package/dist/core/types/erc20.d.ts +65 -0
  266. package/dist/core/types/erc20.js +1 -0
  267. package/dist/core/types/holders-maker.d.ts +64 -0
  268. package/dist/core/types/holders-maker.js +1 -0
  269. package/dist/core/types/index.d.ts +7 -0
  270. package/dist/core/types/index.js +1 -0
  271. package/dist/{utils → core/types}/lp-inspect.d.ts +4 -52
  272. package/dist/core/types/lp-inspect.js +1 -0
  273. package/dist/core/types/multicall.d.ts +5 -0
  274. package/dist/core/types/multicall.js +1 -0
  275. package/dist/core/types/private-sale.d.ts +35 -0
  276. package/dist/core/types/private-sale.js +1 -0
  277. package/dist/core/types/quote-helpers.d.ts +17 -0
  278. package/dist/core/types/quote-helpers.js +1 -0
  279. package/dist/core/types-erc20.d.ts +1 -0
  280. package/dist/core/types-erc20.js +1 -0
  281. package/dist/core/wallet/generate.d.ts +5 -0
  282. package/dist/core/wallet/generate.js +8 -0
  283. package/dist/domains/dex/direct-router-helpers.d.ts +269 -0
  284. package/dist/domains/dex/direct-router-helpers.js +536 -0
  285. package/dist/domains/dex/direct-router.d.ts +28 -0
  286. package/dist/{dex → domains/dex}/direct-router.js +246 -674
  287. package/dist/domains/dex/types.d.ts +81 -0
  288. package/dist/domains/dex/types.js +1 -0
  289. package/dist/{shared → domains}/flap/abi.js +1 -1
  290. package/dist/{shared → domains}/flap/constants.d.ts +1 -2
  291. package/dist/{shared → domains}/flap/constants.js +3 -4
  292. package/dist/{shared → domains}/flap/curve.js +3 -0
  293. package/dist/{shared → domains}/flap/errors.d.ts +1 -4
  294. package/dist/{shared → domains}/flap/errors.js +20 -1
  295. package/dist/domains/flap/index.d.ts +7 -0
  296. package/dist/domains/flap/index.js +5 -0
  297. package/dist/{shared → domains}/flap/meta.d.ts +22 -18
  298. package/dist/{shared → domains}/flap/meta.js +32 -24
  299. package/dist/{shared/flap/index.d.ts → domains/flap/module.d.ts} +4 -5
  300. package/dist/{shared/flap/index.js → domains/flap/module.js} +4 -5
  301. package/dist/{shared → domains}/flap/permit.js +10 -3
  302. package/dist/{shared → domains}/flap/pinata.d.ts +22 -6
  303. package/dist/{shared → domains}/flap/pinata.js +21 -26
  304. package/dist/domains/flap/portal-bundle-merkle/config.d.ts +10 -0
  305. package/dist/domains/flap/portal-bundle-merkle/config.js +13 -0
  306. package/dist/domains/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  307. package/dist/domains/flap/portal-bundle-merkle/core-helpers.js +83 -0
  308. package/dist/{shared → domains}/flap/portal-bundle-merkle/core.d.ts +0 -4
  309. package/dist/{shared → domains}/flap/portal-bundle-merkle/core.js +168 -175
  310. package/dist/{shared → domains}/flap/portal-bundle-merkle/create-to-dex.d.ts +17 -4
  311. package/dist/{shared → domains}/flap/portal-bundle-merkle/create-to-dex.js +97 -118
  312. package/dist/{shared → domains}/flap/portal-bundle-merkle/curve-to-dex.js +105 -123
  313. package/dist/domains/flap/portal-bundle-merkle/index.d.ts +18 -0
  314. package/dist/{shared → domains}/flap/portal-bundle-merkle/index.js +4 -7
  315. package/dist/{shared → domains}/flap/portal-bundle-merkle/pancake-proxy.js +73 -70
  316. package/dist/{shared → domains}/flap/portal-bundle-merkle/private.js +63 -116
  317. package/dist/domains/flap/portal-bundle-merkle/swap-batch.d.ts +8 -0
  318. package/dist/domains/flap/portal-bundle-merkle/swap-batch.js +227 -0
  319. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  320. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  321. package/dist/domains/flap/portal-bundle-merkle/swap-buy-first.d.ts +2 -0
  322. package/dist/{shared → domains}/flap/portal-bundle-merkle/swap-buy-first.js +69 -288
  323. package/dist/domains/flap/portal-bundle-merkle/swap-cross.d.ts +9 -0
  324. package/dist/domains/flap/portal-bundle-merkle/swap-cross.js +139 -0
  325. package/dist/domains/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  326. package/dist/domains/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  327. package/dist/domains/flap/portal-bundle-merkle/swap-planning.d.ts +70 -0
  328. package/dist/domains/flap/portal-bundle-merkle/swap-planning.js +182 -0
  329. package/dist/domains/flap/portal-bundle-merkle/swap-quick-batch.d.ts +16 -0
  330. package/dist/domains/flap/portal-bundle-merkle/swap-quick-batch.js +327 -0
  331. package/dist/domains/flap/portal-bundle-merkle/swap-single.d.ts +2 -0
  332. package/dist/domains/flap/portal-bundle-merkle/swap-single.js +184 -0
  333. package/dist/domains/flap/portal-bundle-merkle/swap-types.d.ts +101 -0
  334. package/dist/domains/flap/portal-bundle-merkle/swap-types.js +1 -0
  335. package/dist/domains/flap/portal-bundle-merkle/swap.d.ts +8 -0
  336. package/dist/domains/flap/portal-bundle-merkle/swap.js +7 -0
  337. package/dist/{shared → domains}/flap/portal-bundle-merkle/types.d.ts +88 -12
  338. package/dist/domains/flap/portal-bundle-merkle/types.js +1 -0
  339. package/dist/domains/flap/portal-bundle-merkle/utils.d.ts +10 -0
  340. package/dist/{shared → domains}/flap/portal-bundle-merkle/utils.js +145 -265
  341. package/dist/{shared → domains}/flap/portal-bundle.d.ts +2 -2
  342. package/dist/{shared → domains}/flap/portal-bundle.js +84 -79
  343. package/dist/domains/flap/portal-create-token.d.ts +81 -0
  344. package/dist/domains/flap/portal-create-token.js +255 -0
  345. package/dist/{shared → domains}/flap/portal.d.ts +1 -2
  346. package/dist/{shared → domains}/flap/portal.js +36 -28
  347. package/dist/{shared → domains}/flap/vanity.d.ts +6 -6
  348. package/dist/{shared → domains}/flap/vanity.js +15 -21
  349. package/dist/{shared → domains}/flap/vault.d.ts +25 -93
  350. package/dist/{shared → domains}/flap/vault.js +77 -127
  351. package/dist/{flows → domains/flows}/create.d.ts +2 -1
  352. package/dist/{flows → domains/flows}/create.js +8 -8
  353. package/dist/domains/flows/index.d.ts +9 -0
  354. package/dist/domains/flows/index.js +9 -0
  355. package/dist/{contracts → domains/four/contracts}/helper3.d.ts +20 -5
  356. package/dist/{contracts → domains/four/contracts}/helper3.js +56 -20
  357. package/dist/domains/four/contracts/tm-bundle-helpers.d.ts +88 -0
  358. package/dist/domains/four/contracts/tm-bundle-helpers.js +73 -0
  359. package/dist/{contracts → domains/four/contracts}/tm-bundle.d.ts +4 -52
  360. package/dist/{contracts → domains/four/contracts}/tm-bundle.js +122 -189
  361. package/dist/{contracts → domains/four/contracts}/tm.d.ts +10 -8
  362. package/dist/{contracts → domains/four/contracts}/tm.js +39 -35
  363. package/dist/{contracts → domains/four/contracts}/tm1.js +9 -4
  364. package/dist/{contracts → domains/four/contracts}/tm2.js +10 -5
  365. package/dist/domains/four/index.d.ts +7 -0
  366. package/dist/domains/four/index.js +7 -0
  367. package/dist/{shared → domains}/four/tax-token.d.ts +1 -1
  368. package/dist/{shared → domains}/four/tax-token.js +31 -10
  369. package/dist/domains/holders/holders-maker-helpers.d.ts +9 -0
  370. package/dist/domains/holders/holders-maker-helpers.js +9 -0
  371. package/dist/domains/holders/holders-maker.d.ts +18 -0
  372. package/dist/domains/holders/holders-maker.js +324 -0
  373. package/dist/domains/holders/index.d.ts +1 -0
  374. package/dist/domains/holders/index.js +1 -0
  375. package/dist/domains/holders/internal/addresses.d.ts +12 -0
  376. package/dist/domains/holders/internal/addresses.js +15 -0
  377. package/dist/domains/holders/internal/buy-tx.d.ts +44 -0
  378. package/dist/domains/holders/internal/buy-tx.js +278 -0
  379. package/dist/domains/holders/internal/constants.d.ts +6 -0
  380. package/dist/domains/holders/internal/constants.js +7 -0
  381. package/dist/domains/holders/internal/disperse.d.ts +18 -0
  382. package/dist/domains/holders/internal/disperse.js +90 -0
  383. package/dist/domains/holders/internal/routing.d.ts +4 -0
  384. package/dist/domains/holders/internal/routing.js +45 -0
  385. package/dist/domains/holders/internal/transfer-tx.d.ts +4 -0
  386. package/dist/domains/holders/internal/transfer-tx.js +67 -0
  387. package/dist/domains/holders/types.d.ts +1 -0
  388. package/dist/domains/holders/types.js +1 -0
  389. package/dist/domains/lp-inspect/index.d.ts +1 -0
  390. package/dist/domains/lp-inspect/index.js +1 -0
  391. package/dist/domains/lp-inspect/lp-inspect-helpers.d.ts +9 -0
  392. package/dist/domains/lp-inspect/lp-inspect-helpers.js +109 -0
  393. package/dist/domains/lp-inspect/lp-inspect.d.ts +40 -0
  394. package/dist/{utils → domains/lp-inspect}/lp-inspect.js +78 -293
  395. package/dist/domains/lp-inspect/types.d.ts +1 -0
  396. package/dist/domains/lp-inspect/types.js +1 -0
  397. package/dist/domains/merkle/index.d.ts +12 -0
  398. package/dist/domains/merkle/index.js +11 -0
  399. package/dist/domains/private-sale/index.d.ts +1 -0
  400. package/dist/domains/private-sale/index.js +1 -0
  401. package/dist/domains/private-sale/private-sale.d.ts +34 -0
  402. package/dist/{utils → domains/private-sale}/private-sale.js +5 -16
  403. package/dist/domains/private-sale/types.d.ts +1 -0
  404. package/dist/domains/private-sale/types.js +1 -0
  405. package/dist/domains/quote/index.d.ts +1 -0
  406. package/dist/domains/quote/index.js +1 -0
  407. package/dist/{utils → domains/quote}/quote-helpers.d.ts +4 -45
  408. package/dist/{utils → domains/quote}/quote-helpers.js +17 -74
  409. package/dist/domains/quote/types.d.ts +1 -0
  410. package/dist/domains/quote/types.js +1 -0
  411. package/dist/domains/vanity/index.d.ts +5 -0
  412. package/dist/domains/vanity/index.js +5 -0
  413. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  414. package/dist/exports/root-bundle-and-tooling.js +30 -0
  415. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  416. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  417. package/dist/exports/root-foundations.d.ts +35 -0
  418. package/dist/exports/root-foundations.js +70 -0
  419. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  420. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  421. package/dist/index.d.ts +17 -88
  422. package/dist/index.js +17 -218
  423. package/dist/utils/airdrop-sweep.d.ts +4 -76
  424. package/dist/utils/airdrop-sweep.js +42 -55
  425. package/dist/utils/bundle-helpers.d.ts +9 -243
  426. package/dist/utils/bundle-helpers.js +10 -584
  427. package/dist/utils/constants.d.ts +5 -61
  428. package/dist/utils/constants.js +5 -80
  429. package/dist/utils/contract-factory.d.ts +2 -4
  430. package/dist/utils/contract-factory.js +25 -18
  431. package/dist/utils/errors.d.ts +12 -1
  432. package/dist/utils/errors.js +60 -1
  433. package/dist/utils/hop-chains.d.ts +35 -0
  434. package/dist/utils/hop-chains.js +215 -0
  435. package/dist/utils/index.d.ts +5 -0
  436. package/dist/utils/index.js +5 -0
  437. package/dist/utils/mpcExclusive.d.ts +2 -5
  438. package/dist/utils/mpcExclusive.js +4 -3
  439. package/dist/utils/provider-factory.d.ts +4 -0
  440. package/dist/utils/provider-factory.js +10 -0
  441. package/dist/utils/stealth-transfer.d.ts +2 -28
  442. package/dist/utils/stealth-transfer.js +41 -21
  443. package/dist/utils/swap-helpers.d.ts +2 -15
  444. package/dist/utils/swap-helpers.js +7 -12
  445. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  446. package/dist/utils/types/airdrop-sweep.js +1 -0
  447. package/dist/utils/types/contract-factory.d.ts +1 -0
  448. package/dist/utils/types/contract-factory.js +1 -0
  449. package/dist/utils/types/errors.d.ts +1 -0
  450. package/dist/utils/types/errors.js +1 -0
  451. package/dist/utils/types/hop-chains.d.ts +8 -0
  452. package/dist/utils/types/hop-chains.js +1 -0
  453. package/dist/utils/types/index.d.ts +13 -0
  454. package/dist/utils/types/index.js +1 -0
  455. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  456. package/dist/utils/types/mpc-exclusive.js +1 -0
  457. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  458. package/dist/utils/types/stealth-transfer.js +1 -0
  459. package/dist/utils/types/wallet.d.ts +25 -0
  460. package/dist/utils/types/wallet.js +1 -0
  461. package/dist/utils/wallet.d.ts +4 -25
  462. package/dist/utils/wallet.js +27 -22
  463. package/package.json +96 -2
  464. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +0 -26
  465. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +0 -113
  466. package/dist/contracts/tm-bundle-merkle/config.d.ts +0 -70
  467. package/dist/contracts/tm-bundle-merkle/config.js +0 -114
  468. package/dist/contracts/tm-bundle-merkle/index.d.ts +0 -15
  469. package/dist/contracts/tm-bundle-merkle/index.js +0 -29
  470. package/dist/contracts/tm-bundle-merkle/internal.d.ts +0 -48
  471. package/dist/contracts/tm-bundle-merkle/internal.js +0 -240
  472. package/dist/contracts/tm-bundle-merkle/swap.d.ts +0 -146
  473. package/dist/contracts/tm-bundle-merkle/utils.d.ts +0 -20
  474. package/dist/contracts/tm-bundle-merkle/utils.js +0 -1503
  475. package/dist/dex/direct-router.d.ts +0 -150
  476. package/dist/shared/abis/TaxToken.json +0 -105
  477. package/dist/shared/abis/TokenManager2.json +0 -60
  478. package/dist/shared/flap/graduated-dex.d.ts +0 -1
  479. package/dist/shared/flap/graduated-dex.js +0 -1
  480. package/dist/shared/flap/launch-v6.d.ts +0 -132
  481. package/dist/shared/flap/launch-v6.js +0 -137
  482. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +0 -79
  483. package/dist/shared/flap/portal-bundle-merkle/config.js +0 -133
  484. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +0 -14
  485. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +0 -65
  486. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +0 -201
  487. package/dist/shared/flap/portal-bundle-merkle/swap.js +0 -1359
  488. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +0 -89
  489. package/dist/shared/flap/portal-create-token.d.ts +0 -63
  490. package/dist/shared/flap/portal-create-token.js +0 -258
  491. package/dist/shared/four/index.d.ts +0 -7
  492. package/dist/shared/four/index.js +0 -22
  493. package/dist/shared/index.d.ts +0 -10
  494. package/dist/shared/index.js +0 -10
  495. package/dist/utils/holders-maker.d.ts +0 -154
  496. package/dist/utils/holders-maker.js +0 -945
  497. package/dist/utils/pcs-infinity-cl.d.ts +0 -65
  498. package/dist/utils/pcs-infinity-cl.js +0 -426
  499. package/dist/utils/private-sale.d.ts +0 -90
  500. /package/dist/{shared/abis → abis/contracts}/TokenManager.json +0 -0
  501. /package/dist/{shared/abis → abis/contracts}/TokenManagerHelper3.json +0 -0
  502. /package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/swap-internal.d.ts +0 -0
  503. /package/dist/{shared/flap/portal-bundle-merkle/types.js → bundle/four-meme/types/buy-first.js} +0 -0
  504. /package/dist/{contracts/tm-bundle-merkle → bundle/four-meme}/types.js +0 -0
  505. /package/dist/{shared → core}/clients/emitservice.d.ts +0 -0
  506. /package/dist/{shared → core}/constants/profit.d.ts +0 -0
  507. /package/dist/{shared → core}/constants/profit.js +0 -0
  508. /package/dist/{dex → domains/dex}/index.d.ts +0 -0
  509. /package/dist/{dex → domains/dex}/index.js +0 -0
  510. /package/dist/{shared → domains}/flap/abi.d.ts +0 -0
  511. /package/dist/{shared → domains}/flap/curve.d.ts +0 -0
  512. /package/dist/{shared → domains}/flap/ipfs.d.ts +0 -0
  513. /package/dist/{shared → domains}/flap/ipfs.js +0 -0
  514. /package/dist/{shared → domains}/flap/permit.d.ts +0 -0
  515. /package/dist/{shared → domains}/flap/portal-bundle-merkle/curve-to-dex.d.ts +0 -0
  516. /package/dist/{shared → domains}/flap/portal-bundle-merkle/pancake-proxy.d.ts +0 -0
  517. /package/dist/{shared → domains}/flap/portal-bundle-merkle/private.d.ts +0 -0
  518. /package/dist/{contracts → domains/four/contracts}/tm1.d.ts +0 -0
  519. /package/dist/{contracts → domains/four/contracts}/tm2.d.ts +0 -0
@@ -0,0 +1,72 @@
1
+ import { Wallet } from 'ethers';
2
+ import { generateWallets } from '../wallet/generate.js';
3
+ import { GAS_LIMITS, CHAINS } from '../constants/index.js';
4
+ import { NonceManager } from '../nonce/nonce-manager.js';
5
+ import { buildGasFields } from './bundle-gas.js';
6
+ export const PROFIT_HOP_COUNT = 2;
7
+ const CHAINS_REQUIRE_HOP = [CHAINS.BSC.chainId];
8
+ export async function buildProfitHopTransactions(config) {
9
+ const { provider, payerWallet, profitAmount, profitRecipient, hopCount = PROFIT_HOP_COUNT, gasPrice, chainId, txType, startNonce, } = config;
10
+ if (profitAmount <= 0n) {
11
+ return { signedTransactions: [], hopWallets: [], totalNonceUsed: 0 };
12
+ }
13
+ const nativeTransferGasLimit = GAS_LIMITS.NATIVE_TRANSFER;
14
+ const signedTxs = [];
15
+ const nonceManager = new NonceManager(provider);
16
+ const payerNonce = startNonce ?? (await nonceManager.getNextNonce(payerWallet));
17
+ const needHop = CHAINS_REQUIRE_HOP.includes(chainId);
18
+ const gasFields = buildGasFields(txType, gasPrice);
19
+ if (!needHop) {
20
+ const directTx = await payerWallet.signTransaction({
21
+ to: profitRecipient,
22
+ value: profitAmount,
23
+ nonce: payerNonce,
24
+ gasLimit: nativeTransferGasLimit,
25
+ chainId,
26
+ ...gasFields,
27
+ });
28
+ signedTxs.push(directTx);
29
+ return { signedTransactions: signedTxs, hopWallets: [], totalNonceUsed: 1 };
30
+ }
31
+ const gasFeePerHop = nativeTransferGasLimit * gasPrice;
32
+ const hopWalletsInfo = generateWallets(hopCount);
33
+ const hopWallets = hopWalletsInfo.map((w) => new Wallet(w.privateKey, provider));
34
+ const hopAmounts = [];
35
+ for (let i = hopCount - 1; i >= 0; i--) {
36
+ if (i === hopCount - 1) {
37
+ hopAmounts.unshift(profitAmount + gasFeePerHop);
38
+ }
39
+ else {
40
+ hopAmounts.unshift(hopAmounts[0] + gasFeePerHop);
41
+ }
42
+ }
43
+ const payerTx = await payerWallet.signTransaction({
44
+ to: hopWallets[0].address,
45
+ value: hopAmounts[0],
46
+ nonce: payerNonce,
47
+ gasLimit: nativeTransferGasLimit,
48
+ chainId,
49
+ ...gasFields,
50
+ });
51
+ signedTxs.push(payerTx);
52
+ for (let i = 0; i < hopCount; i++) {
53
+ const fromWallet = hopWallets[i];
54
+ const isLastHop = i === hopCount - 1;
55
+ const toAddress = isLastHop ? profitRecipient : hopWallets[i + 1].address;
56
+ const value = isLastHop ? profitAmount : hopAmounts[i + 1];
57
+ const hopTx = await fromWallet.signTransaction({
58
+ to: toAddress,
59
+ value,
60
+ nonce: 0,
61
+ gasLimit: nativeTransferGasLimit,
62
+ chainId,
63
+ ...gasFields,
64
+ });
65
+ signedTxs.push(hopTx);
66
+ }
67
+ return {
68
+ signedTransactions: signedTxs,
69
+ hopWallets: hopWalletsInfo,
70
+ totalNonceUsed: 1,
71
+ };
72
+ }
@@ -0,0 +1,5 @@
1
+ /** core public facade */
2
+ export * from './foundation.js';
3
+ export * from './constants/index.js';
4
+ export * from './clients/index.js';
5
+ export * from './erc20.js';
@@ -0,0 +1,5 @@
1
+ /** core public facade */
2
+ export * from './foundation.js';
3
+ export * from './constants/index.js';
4
+ export * from './clients/index.js';
5
+ export * from './erc20.js';
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 统一 SDK 错误代码
3
+ *
4
+ * 合并 Four.meme (parseFourError) 和 Flap Protocol (parseFlapError) 的错误代码。
5
+ */
6
+ export declare enum SdkErrorCode {
7
+ UNKNOWN_ERROR = "UNKNOWN_ERROR",
8
+ INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
9
+ SLIPPAGE_EXCEEDED = "SLIPPAGE_EXCEEDED",
10
+ TRANSACTION_FAILED = "TRANSACTION_FAILED",
11
+ TOKEN_ALREADY_EXISTS = "TOKEN_ALREADY_EXISTS",
12
+ TOKEN_NOT_FOUND = "TOKEN_NOT_FOUND",
13
+ TOKEN_NOT_TRADABLE = "TOKEN_NOT_TRADABLE",
14
+ ALREADY_ON_DEX = "ALREADY_ON_DEX",
15
+ FOUR_GWEI_PRECISION = "FOUR_GWEI_PRECISION",
16
+ FOUR_ZERO_ADDRESS = "FOUR_ZERO_ADDRESS",
17
+ FOUR_SLIPPAGE = "FOUR_SLIPPAGE",
18
+ FOUR_INSUFFICIENT_FUNDS = "FOUR_INSUFFICIENT_FUNDS",
19
+ FOUR_FEE_TOO_HIGH = "FOUR_FEE_TOO_HIGH",
20
+ FOUR_ORDER_TOO_SMALL = "FOUR_ORDER_TOO_SMALL",
21
+ INVALID_AMOUNT = "INVALID_AMOUNT",
22
+ INVALID_TOKEN = "INVALID_TOKEN",
23
+ INVALID_QUOTE_TOKEN = "INVALID_QUOTE_TOKEN",
24
+ TAX_RATE_TOO_HIGH = "TAX_RATE_TOO_HIGH",
25
+ PERMIT_EXPIRED = "PERMIT_EXPIRED",
26
+ PERMIT_INVALID = "PERMIT_INVALID"
27
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * 统一 SDK 错误代码
3
+ *
4
+ * 合并 Four.meme (parseFourError) 和 Flap Protocol (parseFlapError) 的错误代码。
5
+ */
6
+ export var SdkErrorCode;
7
+ (function (SdkErrorCode) {
8
+ // Generic
9
+ SdkErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
10
+ // Transaction / Bundle
11
+ SdkErrorCode["INSUFFICIENT_BALANCE"] = "INSUFFICIENT_BALANCE";
12
+ SdkErrorCode["SLIPPAGE_EXCEEDED"] = "SLIPPAGE_EXCEEDED";
13
+ SdkErrorCode["TRANSACTION_FAILED"] = "TRANSACTION_FAILED";
14
+ // Token state
15
+ SdkErrorCode["TOKEN_ALREADY_EXISTS"] = "TOKEN_ALREADY_EXISTS";
16
+ SdkErrorCode["TOKEN_NOT_FOUND"] = "TOKEN_NOT_FOUND";
17
+ SdkErrorCode["TOKEN_NOT_TRADABLE"] = "TOKEN_NOT_TRADABLE";
18
+ SdkErrorCode["ALREADY_ON_DEX"] = "ALREADY_ON_DEX";
19
+ // Four.meme specific
20
+ SdkErrorCode["FOUR_GWEI_PRECISION"] = "FOUR_GWEI_PRECISION";
21
+ SdkErrorCode["FOUR_ZERO_ADDRESS"] = "FOUR_ZERO_ADDRESS";
22
+ SdkErrorCode["FOUR_SLIPPAGE"] = "FOUR_SLIPPAGE";
23
+ SdkErrorCode["FOUR_INSUFFICIENT_FUNDS"] = "FOUR_INSUFFICIENT_FUNDS";
24
+ SdkErrorCode["FOUR_FEE_TOO_HIGH"] = "FOUR_FEE_TOO_HIGH";
25
+ SdkErrorCode["FOUR_ORDER_TOO_SMALL"] = "FOUR_ORDER_TOO_SMALL";
26
+ // Validation
27
+ SdkErrorCode["INVALID_AMOUNT"] = "INVALID_AMOUNT";
28
+ SdkErrorCode["INVALID_TOKEN"] = "INVALID_TOKEN";
29
+ SdkErrorCode["INVALID_QUOTE_TOKEN"] = "INVALID_QUOTE_TOKEN";
30
+ SdkErrorCode["TAX_RATE_TOO_HIGH"] = "TAX_RATE_TOO_HIGH";
31
+ // Permit
32
+ SdkErrorCode["PERMIT_EXPIRED"] = "PERMIT_EXPIRED";
33
+ SdkErrorCode["PERMIT_INVALID"] = "PERMIT_INVALID";
34
+ })(SdkErrorCode || (SdkErrorCode = {}));
@@ -0,0 +1,19 @@
1
+ import '../tx/wallet-sign-patch.js';
2
+ import { JsonRpcProvider, Wallet } from 'ethers';
3
+ /**
4
+ * Nonce 管理器 — bundle 交易中管理多钱包 nonce
5
+ */
6
+ export declare class NonceManager {
7
+ private provider;
8
+ private tempNonceCache;
9
+ private chainIdPromise?;
10
+ private addressNonceTail;
11
+ constructor(provider: JsonRpcProvider);
12
+ private withAddressLock;
13
+ private getChainId;
14
+ getNextNonce(wallet: Wallet | string): Promise<number>;
15
+ getNextNonceBatch(wallet: Wallet | string, count: number): Promise<number[]>;
16
+ clearTemp(): void;
17
+ getTempCachedNonce(address: string): number | undefined;
18
+ getNextNoncesForWallets(wallets: (Wallet | string)[]): Promise<number[]>;
19
+ }
@@ -0,0 +1,217 @@
1
+ import '../tx/wallet-sign-patch.js';
2
+ import { CHAINS } from '../constants/index.js';
3
+ function asBatchSendProvider(provider) {
4
+ return provider;
5
+ }
6
+ const GLOBAL_NONCE_TTL_MS = 60 * 1000;
7
+ const globalNonceCursorByChain = new Map();
8
+ function isFlakyNonceChain(chainId) {
9
+ return Number(chainId) === CHAINS.XLAYER.chainId;
10
+ }
11
+ function getCursorMap(chainId) {
12
+ let m = globalNonceCursorByChain.get(chainId);
13
+ if (!m) {
14
+ m = new Map();
15
+ globalNonceCursorByChain.set(chainId, m);
16
+ }
17
+ return m;
18
+ }
19
+ function getGlobalNextNonce(chainId, addrLower) {
20
+ const m = globalNonceCursorByChain.get(chainId);
21
+ if (!m)
22
+ return undefined;
23
+ const e = m.get(addrLower);
24
+ if (!e)
25
+ return undefined;
26
+ if (Date.now() - e.updatedAt > GLOBAL_NONCE_TTL_MS) {
27
+ m.delete(addrLower);
28
+ return undefined;
29
+ }
30
+ return e.nextNonce;
31
+ }
32
+ function setGlobalNextNonce(chainId, addrLower, nextNonce) {
33
+ const m = getCursorMap(chainId);
34
+ const cur = m.get(addrLower);
35
+ const next = Number(nextNonce);
36
+ if (!Number.isFinite(next) || next < 0)
37
+ return;
38
+ if (!cur || next > cur.nextNonce || Date.now() - cur.updatedAt > GLOBAL_NONCE_TTL_MS) {
39
+ m.set(addrLower, { nextNonce: next, updatedAt: Date.now() });
40
+ }
41
+ else {
42
+ cur.updatedAt = Date.now();
43
+ }
44
+ }
45
+ /**
46
+ * Nonce 管理器 — bundle 交易中管理多钱包 nonce
47
+ */
48
+ export class NonceManager {
49
+ provider;
50
+ tempNonceCache = new Map();
51
+ chainIdPromise;
52
+ addressNonceTail = new Map();
53
+ constructor(provider) {
54
+ this.provider = provider;
55
+ }
56
+ async withAddressLock(key, fn) {
57
+ const prev = this.addressNonceTail.get(key) ?? Promise.resolve();
58
+ let release;
59
+ const gate = new Promise((r) => {
60
+ release = r;
61
+ });
62
+ this.addressNonceTail.set(key, prev.then(() => gate));
63
+ await prev;
64
+ try {
65
+ return await fn();
66
+ }
67
+ finally {
68
+ release();
69
+ }
70
+ }
71
+ async getChainId() {
72
+ if (!this.chainIdPromise) {
73
+ this.chainIdPromise = this.provider
74
+ .getNetwork()
75
+ .then((n) => Number(n.chainId))
76
+ .catch(() => 0);
77
+ }
78
+ return this.chainIdPromise;
79
+ }
80
+ async getNextNonce(wallet) {
81
+ const address = typeof wallet === 'string' ? wallet : wallet.address;
82
+ const key = address.toLowerCase();
83
+ return this.withAddressLock(key, async () => {
84
+ const chainId = await this.getChainId();
85
+ const flaky = isFlakyNonceChain(chainId);
86
+ const cachedNonce = this.tempNonceCache.get(key);
87
+ if (cachedNonce !== undefined) {
88
+ this.tempNonceCache.set(key, cachedNonce + 1);
89
+ if (flaky)
90
+ setGlobalNextNonce(chainId, key, cachedNonce + 1);
91
+ return cachedNonce;
92
+ }
93
+ const onchainNonce = await this.provider.getTransactionCount(address, 'pending');
94
+ let effectiveNonce = onchainNonce;
95
+ if (flaky) {
96
+ const globalNext = getGlobalNextNonce(chainId, key);
97
+ if (globalNext !== undefined) {
98
+ const delta = globalNext - onchainNonce;
99
+ if (delta > 0 && delta <= 10) {
100
+ effectiveNonce = globalNext;
101
+ }
102
+ }
103
+ setGlobalNextNonce(chainId, key, effectiveNonce + 1);
104
+ }
105
+ this.tempNonceCache.set(key, effectiveNonce + 1);
106
+ return effectiveNonce;
107
+ });
108
+ }
109
+ async getNextNonceBatch(wallet, count) {
110
+ const address = typeof wallet === 'string' ? wallet : wallet.address;
111
+ const key = address.toLowerCase();
112
+ return this.withAddressLock(key, async () => {
113
+ const chainId = await this.getChainId();
114
+ const flaky = isFlakyNonceChain(chainId);
115
+ let startNonce;
116
+ const cachedNonce = this.tempNonceCache.get(key);
117
+ if (cachedNonce !== undefined) {
118
+ startNonce = cachedNonce;
119
+ }
120
+ else {
121
+ startNonce = await this.provider.getTransactionCount(address, 'pending');
122
+ }
123
+ if (flaky) {
124
+ const globalNext = getGlobalNextNonce(chainId, key);
125
+ if (globalNext !== undefined) {
126
+ const delta = globalNext - startNonce;
127
+ if (delta > 0 && delta <= 10)
128
+ startNonce = globalNext;
129
+ }
130
+ }
131
+ this.tempNonceCache.set(key, startNonce + count);
132
+ if (flaky)
133
+ setGlobalNextNonce(chainId, key, startNonce + count);
134
+ return Array.from({ length: count }, (_, i) => startNonce + i);
135
+ });
136
+ }
137
+ clearTemp() {
138
+ this.tempNonceCache.clear();
139
+ }
140
+ getTempCachedNonce(address) {
141
+ return this.tempNonceCache.get(address.toLowerCase());
142
+ }
143
+ async getNextNoncesForWallets(wallets) {
144
+ const addresses = wallets.map((w) => (typeof w === 'string' ? w : w.address));
145
+ const keys = addresses.map((a) => a.toLowerCase());
146
+ const chainId = await this.getChainId();
147
+ const flaky = isFlakyNonceChain(chainId);
148
+ const needQueryByKey = new Map();
149
+ const results = new Array(wallets.length);
150
+ for (let i = 0; i < keys.length; i++) {
151
+ const key = keys[i];
152
+ const cachedNonce = this.tempNonceCache.get(key);
153
+ if (cachedNonce !== undefined) {
154
+ results[i] = cachedNonce;
155
+ this.tempNonceCache.set(key, cachedNonce + 1);
156
+ if (flaky)
157
+ setGlobalNextNonce(chainId, key, cachedNonce + 1);
158
+ }
159
+ else {
160
+ const pending = needQueryByKey.get(key);
161
+ if (pending) {
162
+ pending.push({ index: i, address: addresses[i] });
163
+ }
164
+ else {
165
+ needQueryByKey.set(key, [{ index: i, address: addresses[i] }]);
166
+ }
167
+ }
168
+ }
169
+ if (needQueryByKey.size > 0) {
170
+ let queryResults;
171
+ const uniqueQueries = Array.from(needQueryByKey.values()).map((entries) => entries[0]);
172
+ try {
173
+ const batchRequests = uniqueQueries.map(({ address }, idx) => ({
174
+ method: 'eth_getTransactionCount',
175
+ params: [address, 'pending'],
176
+ id: idx + 1,
177
+ jsonrpc: '2.0',
178
+ }));
179
+ const rawResults = await asBatchSendProvider(this.provider)._send(batchRequests);
180
+ queryResults = rawResults.map((r) => {
181
+ if (r.result) {
182
+ return parseInt(r.result, 16);
183
+ }
184
+ return 0;
185
+ });
186
+ }
187
+ catch {
188
+ const queryPromises = uniqueQueries.map(({ address }) => this.provider.getTransactionCount(address, 'pending'));
189
+ queryResults = await Promise.all(queryPromises);
190
+ }
191
+ for (let i = 0; i < uniqueQueries.length; i++) {
192
+ const { address } = uniqueQueries[i];
193
+ const key = address.toLowerCase();
194
+ const onchainNonce = queryResults[i] ?? 0;
195
+ let startNonce = onchainNonce;
196
+ if (flaky) {
197
+ const globalNext = getGlobalNextNonce(chainId, key);
198
+ if (globalNext !== undefined) {
199
+ const delta = globalNext - onchainNonce;
200
+ if (delta > 0 && delta <= 10)
201
+ startNonce = globalNext;
202
+ }
203
+ }
204
+ const assignments = needQueryByKey.get(key) ?? [];
205
+ for (let j = 0; j < assignments.length; j++) {
206
+ results[assignments[j].index] = startNonce + j;
207
+ }
208
+ const nextNonce = startNonce + assignments.length;
209
+ this.tempNonceCache.set(key, nextNonce);
210
+ if (flaky) {
211
+ setGlobalNextNonce(chainId, key, nextNonce);
212
+ }
213
+ }
214
+ }
215
+ return results;
216
+ }
217
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * SDK 统一的 unknown / Error 收口(审计:catch 宜用 unknown + normalize)
3
+ */
4
+ export interface NormalizedErrorShape {
5
+ message: string;
6
+ cause?: unknown;
7
+ }
8
+ export declare function getErrorMessageFromUnknown(error: unknown): string;
9
+ export declare function normalizeUnknownError(error: unknown): NormalizedErrorShape;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * SDK 统一的 unknown / Error 收口(审计:catch 宜用 unknown + normalize)
3
+ */
4
+ export function getErrorMessageFromUnknown(error) {
5
+ if (error instanceof Error)
6
+ return error.message;
7
+ if (typeof error === 'string')
8
+ return error;
9
+ if (error !== null && typeof error === 'object') {
10
+ const o = error;
11
+ const m = o.message;
12
+ if (typeof m === 'string')
13
+ return m;
14
+ const reason = o.reason;
15
+ if (typeof reason === 'string')
16
+ return reason;
17
+ }
18
+ try {
19
+ return String(error);
20
+ }
21
+ catch {
22
+ return 'Unknown error';
23
+ }
24
+ }
25
+ export function normalizeUnknownError(error) {
26
+ const message = getErrorMessageFromUnknown(error);
27
+ const cause = error instanceof Error && error.cause !== undefined ? error.cause : error instanceof Error ? undefined : error;
28
+ return { message, ...(cause !== undefined ? { cause } : {}) };
29
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * SDK 可选日志门面(默认静默);业务侧可传入以替代 console.*
3
+ */
4
+ export interface SdkLogger {
5
+ debug?: (msg: string, ...args: unknown[]) => void;
6
+ info?: (msg: string, ...args: unknown[]) => void;
7
+ warn?: (msg: string, ...args: unknown[]) => void;
8
+ error?: (msg: string, ...args: unknown[]) => void;
9
+ }
10
+ /** 不输出日志(库的推荐默认)。 */
11
+ export declare const noopSdkLogger: SdkLogger;
12
+ /** 直接使用 console(仅调试/过渡期)。 */
13
+ export declare const consoleSdkLogger: SdkLogger;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * SDK 可选日志门面(默认静默);业务侧可传入以替代 console.*
3
+ */
4
+ /** 不输出日志(库的推荐默认)。 */
5
+ export const noopSdkLogger = {};
6
+ /** 直接使用 console(仅调试/过渡期)。 */
7
+ export const consoleSdkLogger = {
8
+ debug: (msg, ...args) => console.debug(msg, ...args),
9
+ info: (msg, ...args) => console.info(msg, ...args),
10
+ warn: (msg, ...args) => console.warn(msg, ...args),
11
+ error: (msg, ...args) => console.error(msg, ...args),
12
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @deprecated 兼容路径 — 唯一数据源见 `src/abis/common.ts`
3
+ */
4
+ export * from '../../abis/common.js';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @deprecated 兼容路径 — 唯一数据源见 `src/abis/common.ts`
3
+ */
4
+ export * from '../../abis/common.js';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * ABI 导出(兼容路径:历史代码多从此处 import)。
3
+ * 唯一数据源见 `src/abis/`。
4
+ */
5
+ export * from '../../abis/index.js';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * ABI 导出(兼容路径:历史代码多从此处 import)。
3
+ * 唯一数据源见 `src/abis/`。
4
+ */
5
+ export * from '../../abis/index.js';
@@ -0,0 +1,17 @@
1
+ import type { TransactionLike, TransactionRequest } from 'ethers';
2
+ /** 构建签名用 TransactionRequest 的公共参数 */
3
+ export type BuildTxRequestParams = {
4
+ from: string;
5
+ nonce: number;
6
+ gasLimit: bigint;
7
+ gasPrice: bigint;
8
+ priorityFee: bigint;
9
+ chainId: number;
10
+ txType: number;
11
+ value?: bigint;
12
+ };
13
+ /**
14
+ * 将 populateTransaction 结果与 gas/nonce 字段合并为可签名交易。
15
+ * type 0 (Legacy) 使用 gasPrice;type 2 (EIP-1559) 使用 maxFeePerGas + maxPriorityFeePerGas。
16
+ */
17
+ export declare function buildTransactionRequest(unsigned: TransactionLike, { from, nonce, gasLimit, gasPrice, priorityFee, chainId, txType, value }: BuildTxRequestParams): TransactionRequest;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 将 populateTransaction 结果与 gas/nonce 字段合并为可签名交易。
3
+ * type 0 (Legacy) 使用 gasPrice;type 2 (EIP-1559) 使用 maxFeePerGas + maxPriorityFeePerGas。
4
+ */
5
+ export function buildTransactionRequest(unsigned, { from, nonce, gasLimit, gasPrice, priorityFee, chainId, txType, value }) {
6
+ const tx = {
7
+ ...unsigned,
8
+ from,
9
+ nonce,
10
+ gasLimit,
11
+ chainId,
12
+ type: txType,
13
+ };
14
+ if (value !== undefined) {
15
+ tx.value = value;
16
+ }
17
+ if (txType === 2) {
18
+ tx.maxFeePerGas = gasPrice;
19
+ tx.maxPriorityFeePerGas = priorityFee;
20
+ }
21
+ else {
22
+ tx.gasPrice = gasPrice;
23
+ }
24
+ return tx;
25
+ }
@@ -0,0 +1,5 @@
1
+ import { JsonRpcProvider, Wallet, type TransactionRequest } from 'ethers';
2
+ export declare function getChainId(provider: JsonRpcProvider, configChainId?: number): Promise<number>;
3
+ export declare function signTransactionsBatch(wallet: Wallet, transactions: TransactionRequest[]): Promise<string[]>;
4
+ export declare function signTransactionsBatchMultiWallet(wallets: Wallet[], transactions: TransactionRequest[]): Promise<string[]>;
5
+ export declare function validateSignedTransactions(signedTxs: string[]): boolean;
@@ -0,0 +1,26 @@
1
+ export async function getChainId(provider, configChainId) {
2
+ if (configChainId !== undefined)
3
+ return configChainId;
4
+ const network = await provider.getNetwork();
5
+ return Number(network.chainId);
6
+ }
7
+ export async function signTransactionsBatch(wallet, transactions) {
8
+ return Promise.all(transactions.map((tx) => wallet.signTransaction(tx)));
9
+ }
10
+ export async function signTransactionsBatchMultiWallet(wallets, transactions) {
11
+ if (wallets.length !== transactions.length) {
12
+ throw new Error(`Wallet count (${wallets.length}) must match transaction count (${transactions.length})`);
13
+ }
14
+ return Promise.all(transactions.map((tx, i) => wallets[i].signTransaction(tx)));
15
+ }
16
+ export function validateSignedTransactions(signedTxs) {
17
+ if (!signedTxs || signedTxs.length === 0) {
18
+ return false;
19
+ }
20
+ for (const tx of signedTxs) {
21
+ if (typeof tx !== 'string' || !tx.startsWith('0x')) {
22
+ return false;
23
+ }
24
+ }
25
+ return true;
26
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ /**
2
+ * EIP-1559 兼容:当 txType=2 但传了 gasPrice 时,自动转换为 maxFeePerGas
3
+ * 模块加载时 patch Wallet.prototype.signTransaction(全局一次)
4
+ */
5
+ import { Wallet } from 'ethers';
6
+ const _origWalletSign = Wallet.prototype.signTransaction;
7
+ Wallet.prototype.signTransaction = async function (tx) {
8
+ const signable = tx;
9
+ if (signable.type === 2 && signable.gasPrice != null && signable.maxFeePerGas == null) {
10
+ const { gasPrice: gp, ...rest } = signable;
11
+ return _origWalletSign.call(this, {
12
+ ...rest,
13
+ maxFeePerGas: gp,
14
+ maxPriorityFeePerGas: rest.maxPriorityFeePerGas ?? 0n,
15
+ });
16
+ }
17
+ return _origWalletSign.call(this, tx);
18
+ };
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 空投分散 / 归集(airdrop-sweep)— 类型定义
3
+ */
4
+ import type { SoulPointSignatureMode, VNormalizationMode } from '../clients/club48.js';
5
+ export type BundleSubmitResult = {
6
+ bundleUuid: string;
7
+ signedTxs: string[];
8
+ };
9
+ export type SignedTransactionsResult = {
10
+ signedTransactions: string[];
11
+ };
12
+ export type AirdropDisperseParams = {
13
+ rpcUrl: string;
14
+ chainId: number;
15
+ fromPrivateKey: string;
16
+ recipients: string[];
17
+ amount?: string;
18
+ amounts?: string[];
19
+ tokenAddress?: string;
20
+ bundleEndpoint?: string;
21
+ gasPriceGwei?: string;
22
+ transferGasLimit?: bigint;
23
+ nativeGasLimit?: bigint;
24
+ blockOffset?: number;
25
+ spMode?: SoulPointSignatureMode;
26
+ spPrivateKey?: string;
27
+ spVMode?: VNormalizationMode;
28
+ };
29
+ export type AirdropDisperseSignParams = {
30
+ rpcUrl: string;
31
+ chainId: number;
32
+ fromPrivateKey: string;
33
+ recipients: string[];
34
+ amount?: string;
35
+ amounts?: string[];
36
+ tokenAddress?: string;
37
+ gasPriceGwei?: string;
38
+ transferGasLimit?: bigint;
39
+ nativeGasLimit?: bigint;
40
+ };
41
+ export type AirdropSweepParams = {
42
+ rpcUrl: string;
43
+ chainId: number;
44
+ sourcePrivateKeys: string[];
45
+ target: string;
46
+ ratioPct?: number;
47
+ amount?: string;
48
+ tokenAddress?: string;
49
+ bundleEndpoint?: string;
50
+ gasPriceGwei?: string;
51
+ transferGasLimit?: bigint;
52
+ nativeGasLimit?: bigint;
53
+ blockOffset?: number;
54
+ skipIfInsufficient?: boolean;
55
+ spMode?: SoulPointSignatureMode;
56
+ spPrivateKey?: string;
57
+ spVMode?: VNormalizationMode;
58
+ };
59
+ export type AirdropSweepSignParams = {
60
+ rpcUrl: string;
61
+ chainId: number;
62
+ sourcePrivateKeys: string[];
63
+ target: string;
64
+ ratioPct?: number;
65
+ amount?: string;
66
+ tokenAddress?: string;
67
+ gasPriceGwei?: string;
68
+ transferGasLimit?: bigint;
69
+ nativeGasLimit?: bigint;
70
+ skipIfInsufficient?: boolean;
71
+ };
72
+ /** @deprecated 使用 `AirdropDisperseParams` */
73
+ export type DisperseParams = AirdropDisperseParams;
74
+ /** @deprecated 使用 `AirdropDisperseSignParams` */
75
+ export type DisperseSignParams = AirdropDisperseSignParams;
76
+ /** @deprecated 使用 `AirdropSweepParams` */
77
+ export type SweepParams = AirdropSweepParams;
78
+ /** @deprecated 使用 `AirdropSweepSignParams` */
79
+ export type SweepSignParams = AirdropSweepSignParams;
@@ -0,0 +1 @@
1
+ export {};