four-flap-meme-sdk 2.2.18 → 2.2.20

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 (492) hide show
  1. package/dist/__tests__/subpath-exports.test.d.ts +1 -0
  2. package/dist/__tests__/subpath-exports.test.js +64 -0
  3. package/dist/abis/common.d.ts +85 -0
  4. package/dist/abis/common.js +240 -0
  5. package/dist/abis/contracts/TaxToken.json +969 -0
  6. package/dist/abis/contracts/TokenManager.json +836 -0
  7. package/dist/abis/contracts/TokenManager2.json +136 -0
  8. package/dist/abis/contracts/TokenManagerHelper3.json +993 -0
  9. package/dist/abis/contracts/index.d.ts +5 -0
  10. package/dist/abis/contracts/index.js +5 -0
  11. package/dist/abis/flap/index.d.ts +5 -0
  12. package/dist/abis/flap/index.js +5 -0
  13. package/dist/abis/flap/portal-eip7702.d.ts +4 -0
  14. package/dist/abis/flap/portal-eip7702.js +39 -0
  15. package/dist/abis/flap/portal-events.d.ts +6 -0
  16. package/dist/abis/flap/portal-events.js +17 -0
  17. package/dist/abis/flap/portal-merkle.d.ts +4 -0
  18. package/dist/abis/flap/portal-merkle.js +25 -0
  19. package/dist/abis/flap/portal.d.ts +6 -0
  20. package/dist/abis/flap/portal.js +37 -0
  21. package/dist/abis/flap/vault.d.ts +171 -0
  22. package/dist/abis/flap/vault.js +91 -0
  23. package/dist/abis/index.d.ts +8 -0
  24. package/dist/abis/index.js +11 -0
  25. package/dist/bundle-core/__tests__/config-helpers.test.d.ts +1 -0
  26. package/dist/bundle-core/__tests__/config-helpers.test.js +28 -0
  27. package/dist/bundle-core/__tests__/facade-parity.test.d.ts +1 -0
  28. package/dist/bundle-core/__tests__/facade-parity.test.js +33 -0
  29. package/dist/bundle-core/__tests__/sign-context-helpers.test.d.ts +1 -0
  30. package/dist/bundle-core/__tests__/sign-context-helpers.test.js +60 -0
  31. package/dist/bundle-core/__tests__/sign-fixture.test.d.ts +1 -0
  32. package/dist/bundle-core/__tests__/sign-fixture.test.js +220 -0
  33. package/dist/bundle-core/__tests__/sign-fixtures.d.ts +10 -0
  34. package/dist/bundle-core/__tests__/sign-fixtures.js +16 -0
  35. package/dist/bundle-core/config-helpers.d.ts +37 -0
  36. package/dist/bundle-core/config-helpers.js +58 -0
  37. package/dist/bundle-core/errors.d.ts +50 -0
  38. package/dist/bundle-core/errors.js +38 -0
  39. package/dist/bundle-core/four-meme/approve-tokenmanager.d.ts +7 -0
  40. package/dist/bundle-core/four-meme/approve-tokenmanager.js +99 -0
  41. package/dist/bundle-core/four-meme/core-helpers.d.ts +8 -0
  42. package/dist/bundle-core/four-meme/core-helpers.js +41 -0
  43. package/dist/bundle-core/four-meme/core.d.ts +4 -0
  44. package/dist/bundle-core/four-meme/core.js +515 -0
  45. package/dist/bundle-core/four-meme/pancake-proxy.d.ts +28 -0
  46. package/dist/bundle-core/four-meme/pancake-proxy.js +679 -0
  47. package/dist/bundle-core/four-meme/private.d.ts +27 -0
  48. package/dist/bundle-core/four-meme/private.js +465 -0
  49. package/dist/bundle-core/four-meme/sign-context-helpers.d.ts +2 -0
  50. package/dist/bundle-core/four-meme/sign-context-helpers.js +2 -0
  51. package/dist/bundle-core/four-meme/swap-buy-first.d.ts +8 -0
  52. package/dist/bundle-core/four-meme/swap-buy-first.js +456 -0
  53. package/dist/bundle-core/four-meme/swap-hop-helpers.d.ts +6 -0
  54. package/dist/bundle-core/four-meme/swap-hop-helpers.js +63 -0
  55. package/dist/bundle-core/four-meme/swap-internal.d.ts +3 -0
  56. package/dist/bundle-core/four-meme/swap-internal.js +18 -0
  57. package/dist/bundle-core/four-meme/swap-sign-helpers.d.ts +28 -0
  58. package/dist/bundle-core/four-meme/swap-sign-helpers.js +105 -0
  59. package/dist/bundle-core/four-meme/swap.d.ts +17 -0
  60. package/dist/bundle-core/four-meme/swap.js +505 -0
  61. package/dist/bundle-core/four-meme/types/buy-first.d.ts +50 -0
  62. package/dist/bundle-core/four-meme/types/buy-first.js +1 -0
  63. package/dist/bundle-core/four-meme/types/core-flow.d.ts +63 -0
  64. package/dist/bundle-core/four-meme/types/core-flow.js +1 -0
  65. package/dist/bundle-core/four-meme/types/index.d.ts +600 -0
  66. package/dist/bundle-core/four-meme/types/index.js +1 -0
  67. package/dist/bundle-core/four-meme/types/swap-internal.d.ts +19 -0
  68. package/dist/bundle-core/four-meme/types/swap-internal.js +1 -0
  69. package/dist/bundle-core/four-meme/types.d.ts +1 -0
  70. package/dist/bundle-core/four-meme/types.js +1 -0
  71. package/dist/bundle-core/four-meme/utils-disperse.d.ts +7 -0
  72. package/dist/bundle-core/four-meme/utils-disperse.js +396 -0
  73. package/dist/bundle-core/four-meme/utils-pairwise.d.ts +8 -0
  74. package/dist/bundle-core/four-meme/utils-pairwise.js +328 -0
  75. package/dist/bundle-core/four-meme/utils-sweep.d.ts +8 -0
  76. package/dist/bundle-core/four-meme/utils-sweep.js +744 -0
  77. package/dist/bundle-core/index.d.ts +8 -0
  78. package/dist/bundle-core/index.js +8 -0
  79. package/dist/bundle-core/internal.d.ts +16 -0
  80. package/dist/bundle-core/internal.js +160 -0
  81. package/dist/bundle-core/sign-context-helpers.d.ts +26 -0
  82. package/dist/bundle-core/sign-context-helpers.js +63 -0
  83. package/dist/bundle-core/submit.d.ts +293 -0
  84. package/dist/bundle-core/submit.js +731 -0
  85. package/dist/bundle-core/types/index.d.ts +8 -0
  86. package/dist/bundle-core/types/index.js +1 -0
  87. package/dist/bundle-core/types.d.ts +1 -0
  88. package/dist/bundle-core/types.js +1 -0
  89. package/dist/chains/bsc/four/approve-tokenmanager.d.ts +1 -26
  90. package/dist/chains/bsc/four/approve-tokenmanager.js +1 -113
  91. package/dist/chains/bsc/four/config.d.ts +5 -67
  92. package/dist/chains/bsc/four/config.js +2 -114
  93. package/dist/chains/bsc/four/core.d.ts +1 -4
  94. package/dist/chains/bsc/four/core.js +1 -592
  95. package/dist/chains/bsc/four/index.d.ts +6 -6
  96. package/dist/chains/bsc/four/index.js +6 -6
  97. package/dist/chains/bsc/four/internal.d.ts +2 -46
  98. package/dist/chains/bsc/four/internal.js +2 -239
  99. package/dist/chains/bsc/four/pancake-proxy.d.ts +1 -28
  100. package/dist/chains/bsc/four/pancake-proxy.js +1 -687
  101. package/dist/chains/bsc/four/private.d.ts +1 -27
  102. package/dist/chains/bsc/four/private.js +1 -477
  103. package/dist/chains/bsc/four/submit.d.ts +2 -315
  104. package/dist/chains/bsc/four/submit.js +2 -752
  105. package/dist/chains/bsc/four/swap-buy-first.d.ts +2 -55
  106. package/dist/chains/bsc/four/swap-buy-first.js +2 -507
  107. package/dist/chains/bsc/four/swap-internal.d.ts +1 -3
  108. package/dist/chains/bsc/four/swap-internal.js +1 -18
  109. package/dist/chains/bsc/four/swap.d.ts +2 -144
  110. package/dist/chains/bsc/four/swap.js +2 -766
  111. package/dist/chains/bsc/four/types.d.ts +1 -476
  112. package/dist/chains/bsc/four/utils-disperse.d.ts +1 -0
  113. package/dist/chains/bsc/four/utils-disperse.js +1 -0
  114. package/dist/chains/bsc/four/utils-pairwise.d.ts +1 -0
  115. package/dist/chains/bsc/four/utils-pairwise.js +1 -0
  116. package/dist/chains/bsc/four/utils-sweep.d.ts +1 -0
  117. package/dist/chains/bsc/four/utils-sweep.js +1 -0
  118. package/dist/chains/bsc/four/utils.d.ts +5 -18
  119. package/dist/chains/bsc/four/utils.js +5 -1552
  120. package/dist/chains/bsc/iro.d.ts +5 -0
  121. package/dist/chains/bsc/iro.js +4 -0
  122. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.d.ts +155 -0
  123. package/dist/chains/bsc/pancake/bundle-buy-first-helpers.js +80 -0
  124. package/dist/chains/bsc/pancake/bundle-buy-first.d.ts +1 -91
  125. package/dist/chains/bsc/pancake/bundle-buy-first.js +98 -213
  126. package/dist/chains/bsc/pancake/bundle-swap-helpers.d.ts +241 -0
  127. package/dist/chains/bsc/pancake/bundle-swap-helpers.js +565 -0
  128. package/dist/chains/bsc/pancake/bundle-swap.d.ts +1 -79
  129. package/dist/chains/bsc/pancake/bundle-swap.js +114 -726
  130. package/dist/chains/bsc/pancake/index.d.ts +4 -2
  131. package/dist/chains/bsc/pancake/index.js +1 -3
  132. package/dist/chains/bsc/platforms/iro/factory.d.ts +2 -2
  133. package/dist/chains/bsc/platforms/iro/factory.js +3 -1
  134. package/dist/chains/bsc/platforms/iro/index.d.ts +5 -5
  135. package/dist/chains/bsc/platforms/iro/index.js +3 -3
  136. package/dist/chains/bsc/platforms/iro/pool.js +31 -10
  137. package/dist/chains/bsc/platforms/iro/token.js +4 -1
  138. package/dist/chains/eni/batch-router/bundle-approve.js +4 -3
  139. package/dist/chains/eni/batch-router/transfer.js +55 -25
  140. package/dist/chains/eni/batch-router/utils.js +32 -6
  141. package/dist/chains/eni/bundler/sign.js +5 -6
  142. package/dist/chains/eni/bundler/submit.js +1 -4
  143. package/dist/chains/eni/constants.js +1 -1
  144. package/dist/chains/eni/flat-aliases.d.ts +10 -0
  145. package/dist/chains/eni/flat-aliases.js +8 -0
  146. package/dist/chains/eni/index.d.ts +2 -1
  147. package/dist/chains/eni/index.js +1 -0
  148. package/dist/chains/eni/platforms/daoaas/create.js +2 -2
  149. package/dist/chains/eni/platforms/daoaas/index.d.ts +3 -3
  150. package/dist/chains/eni/platforms/daoaas/index.js +3 -3
  151. package/dist/chains/eni/platforms/daoaas/meta.js +9 -6
  152. package/dist/chains/eni/platforms/daoaas/portal-direct.js +28 -44
  153. package/dist/chains/eni/platforms/daoaas/portal.js +10 -6
  154. package/dist/chains/eni/platforms/dswap/liquidity.js +58 -26
  155. package/dist/chains/eni/platforms/fair-launch/index.d.ts +2 -2
  156. package/dist/chains/eni/platforms/fair-launch/index.js +1 -1
  157. package/dist/chains/eni/platforms/fair-launch/launcher.js +87 -46
  158. package/dist/chains/eni/platforms/fair-launch/pool.js +4 -1
  159. package/dist/chains/eni/platforms/fair-launch/presets.js +2 -2
  160. package/dist/chains/eni/platforms/iro/factory.d.ts +2 -2
  161. package/dist/chains/eni/platforms/iro/factory.js +3 -1
  162. package/dist/chains/eni/platforms/iro/index.d.ts +6 -6
  163. package/dist/chains/eni/platforms/iro/index.js +4 -4
  164. package/dist/chains/eni/platforms/iro/pool.js +90 -26
  165. package/dist/chains/eni/platforms/iro/token.js +107 -31
  166. package/dist/chains/eni/platforms/iro/whitelist.js +6 -18
  167. package/dist/chains/eni/submit.d.ts +43 -0
  168. package/dist/chains/eni/submit.js +287 -0
  169. package/dist/chains/index.d.ts +13 -0
  170. package/dist/chains/index.js +13 -0
  171. package/dist/chains/xlayer/constants.d.ts +5 -0
  172. package/dist/chains/xlayer/eip7702/bundle-approve.d.ts +2 -26
  173. package/dist/chains/xlayer/eip7702/bundle-approve.js +11 -21
  174. package/dist/chains/xlayer/eip7702/bundle-buy.d.ts +2 -6
  175. package/dist/chains/xlayer/eip7702/bundle-buy.js +13 -51
  176. package/dist/chains/xlayer/eip7702/bundle-create.js +104 -74
  177. package/dist/chains/xlayer/eip7702/bundle-sell.d.ts +2 -6
  178. package/dist/chains/xlayer/eip7702/bundle-sell.js +29 -111
  179. package/dist/chains/xlayer/eip7702/bundle-swap.d.ts +3 -65
  180. package/dist/chains/xlayer/eip7702/bundle-swap.js +51 -245
  181. package/dist/chains/xlayer/eip7702/constants.d.ts +11 -26
  182. package/dist/chains/xlayer/eip7702/constants.js +15 -68
  183. package/dist/chains/xlayer/eip7702/flat-aliases.d.ts +13 -0
  184. package/dist/chains/xlayer/eip7702/flat-aliases.js +10 -0
  185. package/dist/chains/xlayer/eip7702/index.d.ts +28 -46
  186. package/dist/chains/xlayer/eip7702/index.js +28 -81
  187. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.d.ts +79 -0
  188. package/dist/chains/xlayer/eip7702/multi-hop-transfer-helpers.js +1 -0
  189. package/dist/chains/xlayer/eip7702/multi-hop-transfer.d.ts +2 -203
  190. package/dist/chains/xlayer/eip7702/multi-hop-transfer.js +63 -307
  191. package/dist/chains/xlayer/eip7702/transfer-context-helpers.d.ts +26 -0
  192. package/dist/chains/xlayer/eip7702/transfer-context-helpers.js +58 -0
  193. package/dist/chains/xlayer/eip7702/types.d.ts +88 -0
  194. package/dist/chains/xlayer/eip7702/utils.d.ts +0 -3
  195. package/dist/chains/xlayer/eip7702/utils.js +23 -28
  196. package/dist/chains/xlayer/eip7702/volume-helpers.d.ts +148 -0
  197. package/dist/chains/xlayer/eip7702/volume-helpers.js +48 -0
  198. package/dist/chains/xlayer/eip7702/volume.d.ts +6 -184
  199. package/dist/chains/xlayer/eip7702/volume.js +89 -164
  200. package/dist/chains/xlayer/eoa/constants.d.ts +1 -1
  201. package/dist/chains/xlayer/eoa/constants.js +2 -16
  202. package/dist/chains/xlayer/eoa/dex-helpers.d.ts +1 -1
  203. package/dist/chains/xlayer/eoa/dex-helpers.js +7 -37
  204. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.d.ts +126 -0
  205. package/dist/chains/xlayer/eoa/eoa-bundle-swap-helpers.js +228 -0
  206. package/dist/chains/xlayer/eoa/eoa-bundle-swap.d.ts +1 -95
  207. package/dist/chains/xlayer/eoa/eoa-bundle-swap.js +66 -299
  208. package/dist/chains/xlayer/eoa/eoa-wash-volume.d.ts +1 -1
  209. package/dist/chains/xlayer/eoa/eoa-wash-volume.js +18 -23
  210. package/dist/chains/xlayer/eoa/index.d.ts +10 -6
  211. package/dist/chains/xlayer/eoa/index.js +8 -23
  212. package/dist/chains/xlayer/eoa/portal-ops.js +7 -2
  213. package/dist/chains/xlayer/eoa/router-manager.js +5 -4
  214. package/dist/chains/xlayer/eoa/types.d.ts +2 -2
  215. package/dist/chains/xlayer/eoa/types.js +1 -3
  216. package/dist/chains/xlayer/index.d.ts +3 -2
  217. package/dist/chains/xlayer/index.js +4 -7
  218. package/dist/contracts/helper3.d.ts +20 -5
  219. package/dist/contracts/helper3.js +56 -20
  220. package/dist/contracts/tm-bundle-helpers.d.ts +88 -0
  221. package/dist/contracts/tm-bundle-helpers.js +73 -0
  222. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.d.ts +1 -26
  223. package/dist/contracts/tm-bundle-merkle/approve-tokenmanager.js +1 -113
  224. package/dist/contracts/tm-bundle-merkle/config.d.ts +5 -67
  225. package/dist/contracts/tm-bundle-merkle/config.js +2 -114
  226. package/dist/contracts/tm-bundle-merkle/core.d.ts +1 -4
  227. package/dist/contracts/tm-bundle-merkle/core.js +1 -591
  228. package/dist/contracts/tm-bundle-merkle/index.d.ts +5 -5
  229. package/dist/contracts/tm-bundle-merkle/index.js +5 -5
  230. package/dist/contracts/tm-bundle-merkle/internal.d.ts +2 -46
  231. package/dist/contracts/tm-bundle-merkle/internal.js +2 -238
  232. package/dist/contracts/tm-bundle-merkle/pancake-proxy.d.ts +1 -28
  233. package/dist/contracts/tm-bundle-merkle/pancake-proxy.js +1 -686
  234. package/dist/contracts/tm-bundle-merkle/private.d.ts +1 -27
  235. package/dist/contracts/tm-bundle-merkle/private.js +1 -476
  236. package/dist/contracts/tm-bundle-merkle/submit.d.ts +3 -314
  237. package/dist/contracts/tm-bundle-merkle/submit.js +3 -928
  238. package/dist/contracts/tm-bundle-merkle/swap-buy-first.d.ts +2 -55
  239. package/dist/contracts/tm-bundle-merkle/swap-buy-first.js +2 -506
  240. package/dist/contracts/tm-bundle-merkle/swap-internal.d.ts +1 -3
  241. package/dist/contracts/tm-bundle-merkle/swap-internal.js +1 -18
  242. package/dist/contracts/tm-bundle-merkle/swap.d.ts +2 -144
  243. package/dist/contracts/tm-bundle-merkle/swap.js +2 -764
  244. package/dist/contracts/tm-bundle-merkle/types.d.ts +1 -476
  245. package/dist/contracts/tm-bundle-merkle/utils-disperse.d.ts +1 -0
  246. package/dist/contracts/tm-bundle-merkle/utils-disperse.js +1 -0
  247. package/dist/contracts/tm-bundle-merkle/utils-pairwise.d.ts +1 -0
  248. package/dist/contracts/tm-bundle-merkle/utils-pairwise.js +1 -0
  249. package/dist/contracts/tm-bundle-merkle/utils-sweep.d.ts +1 -0
  250. package/dist/contracts/tm-bundle-merkle/utils-sweep.js +1 -0
  251. package/dist/contracts/tm-bundle-merkle/utils.d.ts +6 -18
  252. package/dist/contracts/tm-bundle-merkle/utils.js +6 -1501
  253. package/dist/contracts/tm-bundle.d.ts +3 -51
  254. package/dist/contracts/tm-bundle.js +120 -187
  255. package/dist/contracts/tm.d.ts +10 -8
  256. package/dist/contracts/tm.js +39 -35
  257. package/dist/contracts/tm1.js +9 -4
  258. package/dist/contracts/tm2.js +10 -5
  259. package/dist/dex/direct-router-helpers.d.ts +269 -0
  260. package/dist/dex/direct-router-helpers.js +536 -0
  261. package/dist/dex/direct-router.d.ts +3 -125
  262. package/dist/dex/direct-router.js +244 -672
  263. package/dist/dex/types.d.ts +81 -0
  264. package/dist/dex/types.js +1 -0
  265. package/dist/exports/root-bundle-and-tooling.d.ts +27 -0
  266. package/dist/exports/root-bundle-and-tooling.js +30 -0
  267. package/dist/exports/root-eni-and-bsc-iro.d.ts +26 -0
  268. package/dist/exports/root-eni-and-bsc-iro.js +66 -0
  269. package/dist/exports/root-foundations.d.ts +35 -0
  270. package/dist/exports/root-foundations.js +70 -0
  271. package/dist/exports/root-swap-dex-and-xlayer.d.ts +30 -0
  272. package/dist/exports/root-swap-dex-and-xlayer.js +78 -0
  273. package/dist/flap/index.d.ts +11 -0
  274. package/dist/flap/index.js +9 -0
  275. package/dist/flows/create.d.ts +2 -1
  276. package/dist/flows/create.js +6 -6
  277. package/dist/flows/index.d.ts +9 -0
  278. package/dist/flows/index.js +9 -0
  279. package/dist/index.d.ts +20 -88
  280. package/dist/index.js +20 -218
  281. package/dist/merkle/index.d.ts +12 -0
  282. package/dist/merkle/index.js +11 -0
  283. package/dist/shared/abis/common.d.ts +2 -83
  284. package/dist/shared/abis/common.js +2 -254
  285. package/dist/shared/abis/index.d.ts +5 -6
  286. package/dist/shared/abis/index.js +5 -7
  287. package/dist/shared/clients/blockrazor.d.ts +4 -8
  288. package/dist/shared/clients/blockrazor.js +43 -35
  289. package/dist/shared/clients/club48.d.ts +2 -2
  290. package/dist/shared/clients/club48.js +36 -30
  291. package/dist/shared/clients/emitservice.js +2 -0
  292. package/dist/shared/clients/four.d.ts +21 -6
  293. package/dist/shared/clients/four.js +29 -24
  294. package/dist/shared/clients/index.d.ts +8 -0
  295. package/dist/shared/clients/index.js +8 -0
  296. package/dist/shared/clients/merkle.d.ts +4 -3
  297. package/dist/shared/clients/merkle.js +30 -47
  298. package/dist/shared/constants/addresses.d.ts +27 -1
  299. package/dist/shared/constants/addresses.js +39 -2
  300. package/dist/shared/constants/chains.d.ts +1 -1
  301. package/dist/shared/constants/chains.js +1 -1
  302. package/dist/shared/constants/gas.d.ts +1 -1
  303. package/dist/shared/constants/gas.js +2 -6
  304. package/dist/shared/constants/index.d.ts +4 -1
  305. package/dist/shared/constants/index.js +2 -1
  306. package/dist/shared/constants/quote.d.ts +30 -0
  307. package/dist/shared/constants/quote.js +37 -0
  308. package/dist/shared/flap/abi.js +1 -1
  309. package/dist/shared/flap/constants.d.ts +1 -2
  310. package/dist/shared/flap/constants.js +3 -4
  311. package/dist/shared/flap/curve.js +3 -0
  312. package/dist/shared/flap/errors.d.ts +1 -4
  313. package/dist/shared/flap/errors.js +20 -1
  314. package/dist/shared/flap/index.d.ts +4 -5
  315. package/dist/shared/flap/index.js +4 -5
  316. package/dist/shared/flap/launch-v6.d.ts +0 -5
  317. package/dist/shared/flap/launch-v6.js +2 -16
  318. package/dist/shared/flap/meta.d.ts +22 -18
  319. package/dist/shared/flap/meta.js +32 -24
  320. package/dist/shared/flap/permit.js +10 -3
  321. package/dist/shared/flap/pinata.d.ts +22 -6
  322. package/dist/shared/flap/pinata.js +21 -26
  323. package/dist/shared/flap/portal-bundle-merkle/config.d.ts +3 -72
  324. package/dist/shared/flap/portal-bundle-merkle/config.js +4 -124
  325. package/dist/shared/flap/portal-bundle-merkle/core-helpers.d.ts +32 -0
  326. package/dist/shared/flap/portal-bundle-merkle/core-helpers.js +83 -0
  327. package/dist/shared/flap/portal-bundle-merkle/core.d.ts +0 -4
  328. package/dist/shared/flap/portal-bundle-merkle/core.js +168 -175
  329. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.d.ts +17 -4
  330. package/dist/shared/flap/portal-bundle-merkle/create-to-dex.js +96 -117
  331. package/dist/shared/flap/portal-bundle-merkle/curve-to-dex.js +104 -122
  332. package/dist/shared/flap/portal-bundle-merkle/index.d.ts +11 -7
  333. package/dist/shared/flap/portal-bundle-merkle/index.js +4 -7
  334. package/dist/shared/flap/portal-bundle-merkle/pancake-proxy.js +71 -68
  335. package/dist/shared/flap/portal-bundle-merkle/private.js +61 -114
  336. package/dist/shared/flap/portal-bundle-merkle/swap-batch.d.ts +8 -0
  337. package/dist/shared/flap/portal-bundle-merkle/swap-batch.js +227 -0
  338. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.d.ts +125 -0
  339. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first-helpers.js +113 -0
  340. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.d.ts +1 -64
  341. package/dist/shared/flap/portal-bundle-merkle/swap-buy-first.js +69 -288
  342. package/dist/shared/flap/portal-bundle-merkle/swap-cross.d.ts +9 -0
  343. package/dist/shared/flap/portal-bundle-merkle/swap-cross.js +139 -0
  344. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.d.ts +149 -0
  345. package/dist/shared/flap/portal-bundle-merkle/swap-helpers.js +259 -0
  346. package/dist/shared/flap/portal-bundle-merkle/swap-planning.d.ts +70 -0
  347. package/dist/shared/flap/portal-bundle-merkle/swap-planning.js +182 -0
  348. package/dist/shared/flap/portal-bundle-merkle/swap-quick-batch.d.ts +16 -0
  349. package/dist/shared/flap/portal-bundle-merkle/swap-quick-batch.js +327 -0
  350. package/dist/shared/flap/portal-bundle-merkle/swap-single.d.ts +2 -0
  351. package/dist/shared/flap/portal-bundle-merkle/swap-single.js +184 -0
  352. package/dist/shared/flap/portal-bundle-merkle/swap-types.d.ts +101 -0
  353. package/dist/shared/flap/portal-bundle-merkle/swap-types.js +1 -0
  354. package/dist/shared/flap/portal-bundle-merkle/swap.d.ts +6 -199
  355. package/dist/shared/flap/portal-bundle-merkle/swap.js +5 -1357
  356. package/dist/shared/flap/portal-bundle-merkle/types.d.ts +88 -12
  357. package/dist/shared/flap/portal-bundle-merkle/utils.d.ts +1 -80
  358. package/dist/shared/flap/portal-bundle-merkle/utils.js +145 -265
  359. package/dist/shared/flap/portal-bundle.js +83 -78
  360. package/dist/shared/flap/portal-create-token.d.ts +39 -21
  361. package/dist/shared/flap/portal-create-token.js +121 -124
  362. package/dist/shared/flap/portal.d.ts +1 -2
  363. package/dist/shared/flap/portal.js +36 -28
  364. package/dist/shared/flap/vanity.d.ts +6 -6
  365. package/dist/shared/flap/vanity.js +15 -21
  366. package/dist/shared/flap/vault.d.ts +25 -93
  367. package/dist/shared/flap/vault.js +77 -127
  368. package/dist/shared/foundation/amount/split-by-weight.d.ts +5 -0
  369. package/dist/shared/foundation/amount/split-by-weight.js +35 -0
  370. package/dist/shared/foundation/dex/v3-path.d.ts +6 -0
  371. package/dist/shared/foundation/dex/v3-path.js +35 -0
  372. package/dist/shared/foundation/erc20/decimals.d.ts +7 -0
  373. package/dist/shared/foundation/erc20/decimals.js +24 -0
  374. package/dist/shared/foundation/gas/bundle-gas.d.ts +49 -0
  375. package/dist/shared/foundation/gas/bundle-gas.js +93 -0
  376. package/dist/shared/foundation/gas/profit-hop.d.ts +20 -0
  377. package/dist/shared/foundation/gas/profit-hop.js +72 -0
  378. package/dist/shared/foundation/index.d.ts +15 -0
  379. package/dist/shared/foundation/index.js +14 -0
  380. package/dist/shared/foundation/nonce/nonce-manager.d.ts +19 -0
  381. package/dist/shared/foundation/nonce/nonce-manager.js +217 -0
  382. package/dist/shared/foundation/normalize-unknown.d.ts +9 -0
  383. package/dist/shared/foundation/normalize-unknown.js +29 -0
  384. package/dist/shared/foundation/sdk-logger.d.ts +13 -0
  385. package/dist/shared/foundation/sdk-logger.js +12 -0
  386. package/dist/shared/foundation/tx/build-request.d.ts +17 -0
  387. package/dist/shared/foundation/tx/build-request.js +25 -0
  388. package/dist/shared/foundation/tx/sign-batch.d.ts +5 -0
  389. package/dist/shared/foundation/tx/sign-batch.js +26 -0
  390. package/dist/shared/foundation/tx/wallet-sign-patch.d.ts +1 -0
  391. package/dist/shared/foundation/tx/wallet-sign-patch.js +18 -0
  392. package/dist/shared/foundation/types/airdrop-sweep.d.ts +79 -0
  393. package/dist/shared/foundation/types/airdrop-sweep.js +1 -0
  394. package/dist/shared/foundation/types/erc20.d.ts +65 -0
  395. package/dist/shared/foundation/types/erc20.js +1 -0
  396. package/dist/shared/foundation/types/holders-maker.d.ts +64 -0
  397. package/dist/shared/foundation/types/holders-maker.js +1 -0
  398. package/dist/shared/foundation/types/index.d.ts +7 -0
  399. package/dist/shared/foundation/types/index.js +1 -0
  400. package/dist/shared/foundation/types/lp-inspect.d.ts +102 -0
  401. package/dist/shared/foundation/types/lp-inspect.js +1 -0
  402. package/dist/shared/foundation/types/multicall.d.ts +5 -0
  403. package/dist/shared/foundation/types/multicall.js +1 -0
  404. package/dist/shared/foundation/types/private-sale.d.ts +35 -0
  405. package/dist/shared/foundation/types/private-sale.js +1 -0
  406. package/dist/shared/foundation/types/quote-helpers.d.ts +17 -0
  407. package/dist/shared/foundation/types/quote-helpers.js +1 -0
  408. package/dist/shared/foundation/wallet/generate.d.ts +5 -0
  409. package/dist/shared/foundation/wallet/generate.js +8 -0
  410. package/dist/shared/four/tax-token.d.ts +1 -1
  411. package/dist/shared/four/tax-token.js +31 -10
  412. package/dist/shared/index.d.ts +6 -0
  413. package/dist/shared/index.js +4 -0
  414. package/dist/types/errors.d.ts +27 -0
  415. package/dist/types/errors.js +34 -0
  416. package/dist/utils/airdrop-sweep.d.ts +4 -76
  417. package/dist/utils/airdrop-sweep.js +42 -55
  418. package/dist/utils/bundle-helpers.d.ts +9 -243
  419. package/dist/utils/bundle-helpers.js +10 -584
  420. package/dist/utils/constants.d.ts +5 -61
  421. package/dist/utils/constants.js +5 -80
  422. package/dist/utils/contract-factory.d.ts +2 -4
  423. package/dist/utils/contract-factory.js +25 -18
  424. package/dist/utils/erc20.d.ts +7 -89
  425. package/dist/utils/erc20.js +98 -129
  426. package/dist/utils/errors.d.ts +12 -1
  427. package/dist/utils/errors.js +60 -1
  428. package/dist/utils/holders-maker/addresses.d.ts +12 -0
  429. package/dist/utils/holders-maker/addresses.js +15 -0
  430. package/dist/utils/holders-maker/buy-tx.d.ts +44 -0
  431. package/dist/utils/holders-maker/buy-tx.js +278 -0
  432. package/dist/utils/holders-maker/constants.d.ts +6 -0
  433. package/dist/utils/holders-maker/constants.js +7 -0
  434. package/dist/utils/holders-maker/disperse.d.ts +18 -0
  435. package/dist/utils/holders-maker/disperse.js +90 -0
  436. package/dist/utils/holders-maker/routing.d.ts +4 -0
  437. package/dist/utils/holders-maker/routing.js +45 -0
  438. package/dist/utils/holders-maker/transfer-tx.d.ts +4 -0
  439. package/dist/utils/holders-maker/transfer-tx.js +67 -0
  440. package/dist/utils/holders-maker-helpers.d.ts +9 -0
  441. package/dist/utils/holders-maker-helpers.js +9 -0
  442. package/dist/utils/holders-maker.d.ts +2 -138
  443. package/dist/utils/holders-maker.js +50 -671
  444. package/dist/utils/hop-chains.d.ts +35 -0
  445. package/dist/utils/hop-chains.js +215 -0
  446. package/dist/utils/lp-inspect-helpers.d.ts +9 -0
  447. package/dist/utils/lp-inspect-helpers.js +109 -0
  448. package/dist/utils/lp-inspect.d.ts +2 -112
  449. package/dist/utils/lp-inspect.js +78 -293
  450. package/dist/utils/mpcExclusive.d.ts +2 -5
  451. package/dist/utils/mpcExclusive.js +4 -3
  452. package/dist/utils/private-sale.d.ts +2 -58
  453. package/dist/utils/private-sale.js +4 -15
  454. package/dist/utils/provider-factory.d.ts +4 -0
  455. package/dist/utils/provider-factory.js +10 -0
  456. package/dist/utils/quote-helpers.d.ts +4 -45
  457. package/dist/utils/quote-helpers.js +17 -74
  458. package/dist/utils/stealth-transfer.d.ts +2 -28
  459. package/dist/utils/stealth-transfer.js +39 -19
  460. package/dist/utils/swap-helpers.d.ts +2 -15
  461. package/dist/utils/swap-helpers.js +6 -11
  462. package/dist/utils/types/airdrop-sweep.d.ts +1 -0
  463. package/dist/utils/types/airdrop-sweep.js +1 -0
  464. package/dist/utils/types/contract-factory.d.ts +1 -0
  465. package/dist/utils/types/contract-factory.js +1 -0
  466. package/dist/utils/types/erc20.d.ts +1 -0
  467. package/dist/utils/types/erc20.js +1 -0
  468. package/dist/utils/types/errors.d.ts +1 -0
  469. package/dist/utils/types/errors.js +1 -0
  470. package/dist/utils/types/holders-maker.d.ts +1 -0
  471. package/dist/utils/types/holders-maker.js +1 -0
  472. package/dist/utils/types/hop-chains.d.ts +8 -0
  473. package/dist/utils/types/hop-chains.js +1 -0
  474. package/dist/utils/types/index.d.ts +13 -0
  475. package/dist/utils/types/index.js +1 -0
  476. package/dist/utils/types/lp-inspect.d.ts +1 -0
  477. package/dist/utils/types/lp-inspect.js +1 -0
  478. package/dist/utils/types/mpc-exclusive.d.ts +5 -0
  479. package/dist/utils/types/mpc-exclusive.js +1 -0
  480. package/dist/utils/types/private-sale.d.ts +1 -0
  481. package/dist/utils/types/private-sale.js +1 -0
  482. package/dist/utils/types/quote-helpers.d.ts +1 -0
  483. package/dist/utils/types/quote-helpers.js +1 -0
  484. package/dist/utils/types/stealth-transfer.d.ts +44 -0
  485. package/dist/utils/types/stealth-transfer.js +1 -0
  486. package/dist/utils/types/wallet.d.ts +25 -0
  487. package/dist/utils/types/wallet.js +1 -0
  488. package/dist/utils/wallet.d.ts +4 -25
  489. package/dist/utils/wallet.js +27 -22
  490. package/dist/vanity/index.d.ts +5 -0
  491. package/dist/vanity/index.js +5 -0
  492. package/package.json +100 -2
@@ -7,7 +7,7 @@
7
7
  * - 查询代币列表
8
8
  */
9
9
  import { Contract, Interface, Wallet, JsonRpcProvider } from 'ethers';
10
- import { ENI_CHAIN_ID, ENI_RPC_URL, LP_FAIR_LAUNCHER_ABI, NATIVE_TRANSFER_GAS_LIMIT, } from '../../constants.js';
10
+ import { ENI_CHAIN_ID, ENI_RPC_URL, LP_FAIR_LAUNCHER_ABI, NATIVE_TRANSFER_GAS_LIMIT } from '../../constants.js';
11
11
  import { LP_FAIR_LAUNCHER_ADDRESS } from './constants.js';
12
12
  import { buildProfitTransfer } from '../daoaas/portal-direct.js';
13
13
  import { calculateProfitAmount, getProfitRateBps, getProfitRecipient } from '../../../../shared/constants/profit.js';
@@ -17,6 +17,8 @@ const launcherIface = new Interface(LP_FAIR_LAUNCHER_ABI);
17
17
  // 只读查询
18
18
  // ============================================================================
19
19
  export class FairLauncherQuery {
20
+ provider;
21
+ launcher;
20
22
  constructor(config = {}) {
21
23
  const rpcUrl = config.rpcUrl ?? ENI_RPC_URL;
22
24
  this.provider = new JsonRpcProvider(rpcUrl, ENI_CHAIN_ID, { staticNetwork: true });
@@ -257,54 +259,93 @@ export async function launchTokenForSubmit(params) {
257
259
  // ============================================================================
258
260
  function paramsToTuple(p) {
259
261
  return [
260
- p.name, p.symbol, p.logo, p.metadata,
261
- p.quoteTokenAddr, p.initialLp, p.initialQuote,
262
- p.lpAddRate, p.lpAddMin,
263
- p.buybackRate, p.buybackMin, p.buybackPath,
264
- p.marketingRates, p.marketingAddrs,
265
- p.vestingAmount, p.vestingLockEndTime, p.vestingReleaseEndTime,
266
- p.vestingRecipients, p.vestingRatios,
267
- p.tradeStartTime, p.claimStartTime, p.claimEndTime,
268
- p.lockTime, p.releasePeriod,
269
- p.maxCount, p.minAmount, p.maxAmount,
270
- p.whitelistEnabled, p.whitelistAddrs,
271
- p.inviteCodeEnabled, p.inviteCodes,
262
+ p.name,
263
+ p.symbol,
264
+ p.logo,
265
+ p.metadata,
266
+ p.quoteTokenAddr,
267
+ p.initialLp,
268
+ p.initialQuote,
269
+ p.lpAddRate,
270
+ p.lpAddMin,
271
+ p.buybackRate,
272
+ p.buybackMin,
273
+ p.buybackPath,
274
+ p.marketingRates,
275
+ p.marketingAddrs,
276
+ p.vestingAmount,
277
+ p.vestingLockEndTime,
278
+ p.vestingReleaseEndTime,
279
+ p.vestingRecipients,
280
+ p.vestingRatios,
281
+ p.tradeStartTime,
282
+ p.claimStartTime,
283
+ p.claimEndTime,
284
+ p.lockTime,
285
+ p.releasePeriod,
286
+ p.maxCount,
287
+ p.minAmount,
288
+ p.maxAmount,
289
+ p.whitelistEnabled,
290
+ p.whitelistAddrs,
291
+ p.inviteCodeEnabled,
292
+ p.inviteCodes,
272
293
  ];
273
294
  }
295
+ function readRawBigint(raw, key, index) {
296
+ const value = raw[key] ?? raw[index];
297
+ if (value === undefined || value === null)
298
+ return 0n;
299
+ return BigInt(value);
300
+ }
301
+ function readRawString(raw, key, index) {
302
+ const value = raw[key] ?? raw[index];
303
+ return typeof value === 'string' ? value : '';
304
+ }
305
+ function readRawStringArray(raw, key, index) {
306
+ const value = raw[key] ?? raw[index];
307
+ return Array.isArray(value) ? [...value] : [];
308
+ }
309
+ function readRawBigintArray(raw, key, index) {
310
+ const value = raw[key] ?? raw[index];
311
+ if (!Array.isArray(value))
312
+ return [];
313
+ return value.map((item) => BigInt(item));
314
+ }
274
315
  function parseFairLaunchTokenInfo(raw) {
275
316
  return {
276
- indexAll: BigInt(raw.indexAll ?? raw[0] ?? 0),
277
- user: raw.user ?? raw[1] ?? '',
278
- index: BigInt(raw.index ?? raw[2] ?? 0),
279
- tokenAddress: raw.tokenAddr ?? raw[3] ?? '',
280
- poolAddress: raw.poolAddr ?? raw[4] ?? '',
281
- vestingAddress: raw.vestingAddr ?? raw[5] ?? '',
282
- quoteTokenAddr: raw.quoteTokenAddr ?? raw[6] ?? '',
283
- initialSupply: BigInt(raw.initialSupply ?? raw[7] ?? 0),
284
- initialLP: BigInt(raw.initialLP ?? raw[8] ?? 0),
285
- initialQuote: BigInt(raw.initialQuote ?? raw[9] ?? 0),
286
- lpAddRate: BigInt(raw.lpAddRate ?? raw[10] ?? 0),
287
- buybackRate: BigInt(raw.buybackRate ?? raw[11] ?? 0),
288
- buybackPath: Array.from(raw.buybackPath ?? raw[12] ?? []),
289
- marketingRates: (raw.marketingRates ?? raw[13] ?? []).map((r) => BigInt(r)),
290
- marketingAddrs: Array.from(raw.marketingAddrs ?? raw[14] ?? []),
291
- vestingAmount: BigInt(raw.vestingAmount ?? raw[15] ?? 0),
292
- vestingLockEndTime: BigInt(raw.vestingLockEndTime ?? raw[16] ?? 0),
293
- vestingReleaseEndTime: BigInt(raw.vestingReleaseEndTime ?? raw[17] ?? 0),
294
- vestingRecipients: Array.from(raw.vestingRecipients ?? raw[18] ?? []),
295
- vestingRatios: (raw.vestingRatios ?? raw[19] ?? []).map((r) => BigInt(r)),
296
- tradeStartTime: BigInt(raw.tradeStartTime ?? raw[20] ?? 0),
297
- claimStartTime: BigInt(raw.claimStartTime ?? raw[21] ?? 0),
298
- claimEndTime: BigInt(raw.claimEndTime ?? raw[22] ?? 0),
299
- lockTime: BigInt(raw.lockTime ?? raw[23] ?? 0),
300
- releasePeriod: BigInt(raw.releasePeriod ?? raw[24] ?? 0),
301
- maxCount: BigInt(raw.maxCount ?? raw[25] ?? 0),
302
- minAmount: BigInt(raw.minAmount ?? raw[26] ?? 0),
303
- maxAmount: BigInt(raw.maxAmount ?? raw[27] ?? 0),
304
- name: raw.name ?? raw[28] ?? '',
305
- symbol: raw.symbol ?? raw[29] ?? '',
306
- logo: raw.logo ?? raw[30] ?? '',
307
- metadata: raw.metadata ?? raw[31] ?? '',
308
- timestamp: BigInt(raw.timestamp ?? raw[32] ?? 0),
317
+ indexAll: readRawBigint(raw, 'indexAll', 0),
318
+ user: readRawString(raw, 'user', 1),
319
+ index: readRawBigint(raw, 'index', 2),
320
+ tokenAddress: readRawString(raw, 'tokenAddr', 3),
321
+ poolAddress: readRawString(raw, 'poolAddr', 4),
322
+ vestingAddress: readRawString(raw, 'vestingAddr', 5),
323
+ quoteTokenAddr: readRawString(raw, 'quoteTokenAddr', 6),
324
+ initialSupply: readRawBigint(raw, 'initialSupply', 7),
325
+ initialLP: readRawBigint(raw, 'initialLP', 8),
326
+ initialQuote: readRawBigint(raw, 'initialQuote', 9),
327
+ lpAddRate: readRawBigint(raw, 'lpAddRate', 10),
328
+ buybackRate: readRawBigint(raw, 'buybackRate', 11),
329
+ buybackPath: readRawStringArray(raw, 'buybackPath', 12),
330
+ marketingRates: readRawBigintArray(raw, 'marketingRates', 13),
331
+ marketingAddrs: readRawStringArray(raw, 'marketingAddrs', 14),
332
+ vestingAmount: readRawBigint(raw, 'vestingAmount', 15),
333
+ vestingLockEndTime: readRawBigint(raw, 'vestingLockEndTime', 16),
334
+ vestingReleaseEndTime: readRawBigint(raw, 'vestingReleaseEndTime', 17),
335
+ vestingRecipients: readRawStringArray(raw, 'vestingRecipients', 18),
336
+ vestingRatios: readRawBigintArray(raw, 'vestingRatios', 19),
337
+ tradeStartTime: readRawBigint(raw, 'tradeStartTime', 20),
338
+ claimStartTime: readRawBigint(raw, 'claimStartTime', 21),
339
+ claimEndTime: readRawBigint(raw, 'claimEndTime', 22),
340
+ lockTime: readRawBigint(raw, 'lockTime', 23),
341
+ releasePeriod: readRawBigint(raw, 'releasePeriod', 24),
342
+ maxCount: readRawBigint(raw, 'maxCount', 25),
343
+ minAmount: readRawBigint(raw, 'minAmount', 26),
344
+ maxAmount: readRawBigint(raw, 'maxAmount', 27),
345
+ name: readRawString(raw, 'name', 28),
346
+ symbol: readRawString(raw, 'symbol', 29),
347
+ logo: readRawString(raw, 'logo', 30),
348
+ metadata: readRawString(raw, 'metadata', 31),
349
+ timestamp: readRawBigint(raw, 'timestamp', 32),
309
350
  };
310
351
  }
@@ -7,7 +7,7 @@
7
7
  * - 构建跟买交易 (claimForSubmit / batchClaimForSubmit)
8
8
  */
9
9
  import { Contract, Interface, Wallet, JsonRpcProvider } from 'ethers';
10
- import { ENI_CHAIN_ID, ENI_RPC_URL, LP_FAIR_POOL_ABI, NATIVE_TRANSFER_GAS_LIMIT, } from '../../constants.js';
10
+ import { ENI_CHAIN_ID, ENI_RPC_URL, LP_FAIR_POOL_ABI, NATIVE_TRANSFER_GAS_LIMIT } from '../../constants.js';
11
11
  import { buildProfitTransfer } from '../daoaas/portal-direct.js';
12
12
  import { calculateProfitAmount, getProfitRateBps, getProfitRecipient } from '../../../../shared/constants/profit.js';
13
13
  const poolIface = new Interface(LP_FAIR_POOL_ABI);
@@ -15,6 +15,9 @@ const poolIface = new Interface(LP_FAIR_POOL_ABI);
15
15
  // 查询
16
16
  // ============================================================================
17
17
  export class FairPoolQuery {
18
+ provider;
19
+ pool;
20
+ poolAddress;
18
21
  constructor(poolAddress, rpcUrl) {
19
22
  this.poolAddress = poolAddress;
20
23
  this.provider = new JsonRpcProvider(rpcUrl ?? ENI_RPC_URL, ENI_CHAIN_ID, { staticNetwork: true });
@@ -197,10 +197,10 @@ export function validateLaunchParams(params) {
197
197
  // 模式检测(从参数推断类型)
198
198
  // ============================================================================
199
199
  export function detectLaunchType(params) {
200
- const hasMarketing = params.marketingRates.length > 0 && params.marketingRates.some(r => r > 0n);
200
+ const hasMarketing = params.marketingRates.length > 0 && params.marketingRates.some((r) => r > 0n);
201
201
  const hasBuyback = params.buybackRate > 0n;
202
202
  const hasLpAdd = params.lpAddRate > 0n;
203
- const isBurn = hasMarketing && params.marketingAddrs.every(a => a.toLowerCase() === DEAD_ADDRESS.toLowerCase());
203
+ const isBurn = hasMarketing && params.marketingAddrs.every((a) => a.toLowerCase() === DEAD_ADDRESS.toLowerCase());
204
204
  if (isBurn)
205
205
  return TokenLaunchType.Deflationary;
206
206
  if (hasBuyback && hasMarketing)
@@ -4,7 +4,7 @@
4
4
  * ENI 使用 EIP-1559 (type 2) 交易,与 BSC (type 0) 不同
5
5
  */
6
6
  import { JsonRpcProvider } from 'ethers';
7
- import type { IroCreateParams, IroCreateProjectResult, IroQueryConfig, IroFactoryTokenInfo } from './types.js';
7
+ import type { IroCreateParams, IroCreateProjectResult, IroQueryConfig, IroFactoryTokenInfo, IroCreateProjectParams } from './types.js';
8
8
  export declare class IroFactoryQuery {
9
9
  private provider;
10
10
  private factory;
@@ -20,7 +20,7 @@ export declare class IroFactoryQuery {
20
20
  }>;
21
21
  get providerInstance(): JsonRpcProvider;
22
22
  }
23
- export declare function encodeCreateProjectCall(params: import('./types.js').IroCreateProjectParams): string;
23
+ export declare function encodeCreateProjectCall(params: IroCreateProjectParams): string;
24
24
  export declare function createProject(params: IroCreateParams): Promise<IroCreateProjectResult>;
25
25
  export declare function parseCreateProjectEvent(receipt: {
26
26
  logs: Array<{
@@ -5,12 +5,14 @@
5
5
  */
6
6
  import { Contract, Interface, Wallet, JsonRpcProvider } from 'ethers';
7
7
  import { ENI_CHAIN_ID, ENI_RPC_URL } from '../../constants.js';
8
- import { ENI_IRO_FACTORY_ADDRESS, IRO_FACTORY_ABI, CREATE_PROJECT_GAS_LIMIT, } from './constants.js';
8
+ import { ENI_IRO_FACTORY_ADDRESS, IRO_FACTORY_ABI, CREATE_PROJECT_GAS_LIMIT } from './constants.js';
9
9
  const factoryIface = new Interface(IRO_FACTORY_ABI);
10
10
  // ============================================================================
11
11
  // 只读查询
12
12
  // ============================================================================
13
13
  export class IroFactoryQuery {
14
+ provider;
15
+ factory;
14
16
  constructor(config = {}) {
15
17
  const rpcUrl = config.rpcUrl ?? ENI_RPC_URL;
16
18
  const chainId = config.chainId ?? ENI_CHAIN_ID;
@@ -8,11 +8,11 @@
8
8
  */
9
9
  export type { WhiteListQuota, IroCreateProjectParams, IroFactoryTokenInfo, IroSubscribeParams, IroPledgeParams, IroTokenPrice, IroPoolRemovePledgeParams, IroPoolExtractParams, IroPoolTransferAwardsParams, IroTokenInfo, IroTxResult, IroCreateProjectResult, IroQueryConfig, IroCreateParams, } from './types.js';
10
10
  export { ENI_IRO_FACTORY_ADDRESS, ENI_IRO_OWNER_ADDRESS, ENI_IRO_SELL_FEE_CONTRACT, ENI_IROSWAP_V2_ROUTER, ENI_IROSWAP_V2_FACTORY, ENI_USDT, IRO_FACTORY_ABI, IRO_TOKEN_ABI, IRO_POOL_ABI, CREATE_PROJECT_GAS_LIMIT, SUBSCRIBE_GAS_LIMIT, POOL_OPERATION_GAS_LIMIT, } from './constants.js';
11
- export { IroFactoryQuery, encodeCreateProjectCall, createProject, parseCreateProjectEvent, } from './factory.js';
12
- export { IroTokenQuery, subscribe, pledge, batchSubscribe, batchSubscribeForSubmit, } from './token.js';
13
- export type { IroBatchSubscribeForSubmitParams, IroBatchSubscribeForSubmitResult, } from './token.js';
14
- export { IroPoolQuery, poolRemovePledge, poolExtract, poolTransferAwards, batchExtract, } from './pool.js';
15
- export { ENI_IRO_PLATFORM_URL, setIroApiBase, iroApiCreateProject, iroApiUploadImage, } from './api.js';
16
- export type { IroApiCreateProjectRequest, IroApiCreateProjectResponse, IroApiUploadImageResponse, } from './api.js';
11
+ export { IroFactoryQuery, encodeCreateProjectCall, createProject, parseCreateProjectEvent } from './factory.js';
12
+ export { IroTokenQuery, subscribe, pledge, batchSubscribe, batchSubscribeForSubmit } from './token.js';
13
+ export type { IroBatchSubscribeForSubmitParams, IroBatchSubscribeForSubmitResult } from './token.js';
14
+ export { IroPoolQuery, poolRemovePledge, poolExtract, poolTransferAwards, batchExtract } from './pool.js';
15
+ export { ENI_IRO_PLATFORM_URL, setIroApiBase, iroApiCreateProject, iroApiUploadImage } from './api.js';
16
+ export type { IroApiCreateProjectRequest, IroApiCreateProjectResponse, IroApiUploadImageResponse } from './api.js';
17
17
  export { IRO_OWNER_WHITELIST_ABI, WHITELIST_GAS_LIMIT, BATCH_WHITELIST_GAS_LIMIT, getTokenWhiteList, addTokenWhiteListForSubmit, batchAddTokenWhiteListForSubmit, removeTokenWhiteListForSubmit, } from './whitelist.js';
18
18
  export type { WhitelistManageConfig, AddWhitelistParams, BatchAddWhitelistParams, RemoveWhitelistParams, GetWhitelistParams, } from './whitelist.js';
@@ -13,19 +13,19 @@ export { ENI_IRO_FACTORY_ADDRESS, ENI_IRO_OWNER_ADDRESS, ENI_IRO_SELL_FEE_CONTRA
13
13
  // ============================================================================
14
14
  // Factory
15
15
  // ============================================================================
16
- export { IroFactoryQuery, encodeCreateProjectCall, createProject, parseCreateProjectEvent, } from './factory.js';
16
+ export { IroFactoryQuery, encodeCreateProjectCall, createProject, parseCreateProjectEvent } from './factory.js';
17
17
  // ============================================================================
18
18
  // Token
19
19
  // ============================================================================
20
- export { IroTokenQuery, subscribe, pledge, batchSubscribe, batchSubscribeForSubmit, } from './token.js';
20
+ export { IroTokenQuery, subscribe, pledge, batchSubscribe, batchSubscribeForSubmit } from './token.js';
21
21
  // ============================================================================
22
22
  // Pool
23
23
  // ============================================================================
24
- export { IroPoolQuery, poolRemovePledge, poolExtract, poolTransferAwards, batchExtract, } from './pool.js';
24
+ export { IroPoolQuery, poolRemovePledge, poolExtract, poolTransferAwards, batchExtract } from './pool.js';
25
25
  // ============================================================================
26
26
  // API
27
27
  // ============================================================================
28
- export { ENI_IRO_PLATFORM_URL, setIroApiBase, iroApiCreateProject, iroApiUploadImage, } from './api.js';
28
+ export { ENI_IRO_PLATFORM_URL, setIroApiBase, iroApiCreateProject, iroApiUploadImage } from './api.js';
29
29
  // ============================================================================
30
30
  // Whitelist Management (IROOwner)
31
31
  // ============================================================================
@@ -11,38 +11,79 @@ const poolIface = new Interface(IRO_POOL_ABI);
11
11
  // 查询
12
12
  // ============================================================================
13
13
  export class IroPoolQuery {
14
+ provider;
15
+ pool;
16
+ poolAddress;
14
17
  constructor(poolAddress, rpcUrl, chainId) {
15
18
  this.poolAddress = poolAddress;
16
19
  this.provider = new JsonRpcProvider(rpcUrl ?? ENI_RPC_URL, chainId ?? ENI_CHAIN_ID, { staticNetwork: true });
17
20
  this.pool = new Contract(poolAddress, IRO_POOL_ABI, this.provider);
18
21
  }
19
- async token() { return this.pool.token(); }
20
- async totalShare() { return this.pool.totalShare(); }
21
- async produceNum() { return this.pool.produceNum(); }
22
- async produceLpNum() { return this.pool.produceLpNum(); }
23
- async produceLimit() { return this.pool.produceLimit(); }
24
- async lastAddProduce() { return this.pool.lastAddProduce(); }
25
- async getDeposit(account) { return this.pool.getDeposit(account); }
26
- async getUserPledgeLpForUsdt(user) { return this.pool.getUserPledgeLpForUsdt(user); }
27
- async getLPValueForUSDTValue(targetTKAValue) { return this.pool.getLPValueForUSDTValue(targetTKAValue); }
22
+ async token() {
23
+ return this.pool.token();
24
+ }
25
+ async totalShare() {
26
+ return this.pool.totalShare();
27
+ }
28
+ async produceNum() {
29
+ return this.pool.produceNum();
30
+ }
31
+ async produceLpNum() {
32
+ return this.pool.produceLpNum();
33
+ }
34
+ async produceLimit() {
35
+ return this.pool.produceLimit();
36
+ }
37
+ async lastAddProduce() {
38
+ return this.pool.lastAddProduce();
39
+ }
40
+ async getDeposit(account) {
41
+ return this.pool.getDeposit(account);
42
+ }
43
+ async getUserPledgeLpForUsdt(user) {
44
+ return this.pool.getUserPledgeLpForUsdt(user);
45
+ }
46
+ async getLPValueForUSDTValue(targetTKAValue) {
47
+ return this.pool.getLPValueForUSDTValue(targetTKAValue);
48
+ }
28
49
  async increaseRateMap(index) {
29
50
  const raw = await this.pool.increaseRateMap(index);
30
51
  return { status: raw[0], rate: BigInt(raw[1]) };
31
52
  }
32
- async totalSupply() { return this.pool.totalSupply(); }
33
- async balanceOf(account) { return this.pool.balanceOf(account); }
34
- async lastPrice() { return this.pool.lastPrice(); }
53
+ async totalSupply() {
54
+ return this.pool.totalSupply();
55
+ }
56
+ async balanceOf(account) {
57
+ return this.pool.balanceOf(account);
58
+ }
59
+ async lastPrice() {
60
+ return this.pool.lastPrice();
61
+ }
35
62
  async userAward(account) {
36
63
  const raw = await this.pool.userAward(account);
37
64
  return {
38
- deposit: BigInt(raw[0]), debt: BigInt(raw[1]), share: BigInt(raw[2]), lastTimestamp: BigInt(raw[3]),
39
- totalDeposit: BigInt(raw[4]), totalInviteReward: BigInt(raw[5]), lastInviteReward: BigInt(raw[6]), pledgeNum: BigInt(raw[7]),
65
+ deposit: BigInt(raw[0]),
66
+ debt: BigInt(raw[1]),
67
+ share: BigInt(raw[2]),
68
+ lastTimestamp: BigInt(raw[3]),
69
+ totalDeposit: BigInt(raw[4]),
70
+ totalInviteReward: BigInt(raw[5]),
71
+ lastInviteReward: BigInt(raw[6]),
72
+ pledgeNum: BigInt(raw[7]),
40
73
  };
41
74
  }
42
- async getUserStake(account) { return this.pool.getUserStake(account); }
43
- async ownerAddr() { return this.pool.ownerAddr(); }
44
- async isInitialized() { return this.pool.isInitialized(); }
45
- get providerInstance() { return this.provider; }
75
+ async getUserStake(account) {
76
+ return this.pool.getUserStake(account);
77
+ }
78
+ async ownerAddr() {
79
+ return this.pool.ownerAddr();
80
+ }
81
+ async isInitialized() {
82
+ return this.pool.isInitialized();
83
+ }
84
+ get providerInstance() {
85
+ return this.provider;
86
+ }
46
87
  }
47
88
  // ============================================================================
48
89
  // 写入操作 — EIP-1559
@@ -57,8 +98,14 @@ export async function poolRemovePledge(params) {
57
98
  const maxFeePerGas = gasPrice ?? feeData.maxFeePerGas ?? feeData.gasPrice ?? 1000000000n;
58
99
  const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? 0n;
59
100
  const signedTx = await wallet.signTransaction({
60
- to: poolAddress, data: calldata, nonce, chainId,
61
- type: 2, maxFeePerGas, maxPriorityFeePerGas, gasLimit: POOL_OPERATION_GAS_LIMIT,
101
+ to: poolAddress,
102
+ data: calldata,
103
+ nonce,
104
+ chainId,
105
+ type: 2,
106
+ maxFeePerGas,
107
+ maxPriorityFeePerGas,
108
+ gasLimit: POOL_OPERATION_GAS_LIMIT,
62
109
  });
63
110
  return { signedTx, from: wallet.address, nonce };
64
111
  }
@@ -72,13 +119,19 @@ export async function poolExtract(params) {
72
119
  const maxFeePerGas = gasPrice ?? feeData.maxFeePerGas ?? feeData.gasPrice ?? 1000000000n;
73
120
  const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? 0n;
74
121
  const signedTx = await wallet.signTransaction({
75
- to: poolAddress, data: calldata, nonce, chainId,
76
- type: 2, maxFeePerGas, maxPriorityFeePerGas, gasLimit: POOL_OPERATION_GAS_LIMIT,
122
+ to: poolAddress,
123
+ data: calldata,
124
+ nonce,
125
+ chainId,
126
+ type: 2,
127
+ maxFeePerGas,
128
+ maxPriorityFeePerGas,
129
+ gasLimit: POOL_OPERATION_GAS_LIMIT,
77
130
  });
78
131
  return { signedTx, from: wallet.address, nonce };
79
132
  }
80
133
  export async function poolTransferAwards(params) {
81
- const { rpcUrl = ENI_RPC_URL, chainId = ENI_CHAIN_ID, privateKey, poolAddress, recipients, amounts, gasPrice } = params;
134
+ const { rpcUrl = ENI_RPC_URL, chainId = ENI_CHAIN_ID, privateKey, poolAddress, recipients, amounts, gasPrice, } = params;
82
135
  const provider = new JsonRpcProvider(rpcUrl, chainId, { staticNetwork: true });
83
136
  const wallet = new Wallet(privateKey, provider);
84
137
  const calldata = poolIface.encodeFunctionData('transferAwards', [recipients, amounts]);
@@ -87,8 +140,14 @@ export async function poolTransferAwards(params) {
87
140
  const maxFeePerGas = gasPrice ?? feeData.maxFeePerGas ?? feeData.gasPrice ?? 1000000000n;
88
141
  const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? 0n;
89
142
  const signedTx = await wallet.signTransaction({
90
- to: poolAddress, data: calldata, nonce, chainId,
91
- type: 2, maxFeePerGas, maxPriorityFeePerGas, gasLimit: POOL_OPERATION_GAS_LIMIT,
143
+ to: poolAddress,
144
+ data: calldata,
145
+ nonce,
146
+ chainId,
147
+ type: 2,
148
+ maxFeePerGas,
149
+ maxPriorityFeePerGas,
150
+ gasLimit: POOL_OPERATION_GAS_LIMIT,
92
151
  });
93
152
  return { signedTx, from: wallet.address, nonce };
94
153
  }
@@ -98,7 +157,12 @@ export async function batchExtract(params) {
98
157
  const results = [];
99
158
  for (const w of wallets) {
100
159
  const result = await poolExtract({
101
- rpcUrl, chainId, privateKey: w.privateKey, poolAddress, amount: w.amount, gasPrice,
160
+ rpcUrl,
161
+ chainId,
162
+ privateKey: w.privateKey,
163
+ poolAddress,
164
+ amount: w.amount,
165
+ gasPrice,
102
166
  });
103
167
  signedTransactions.push(result.signedTx);
104
168
  results.push(result);
@@ -13,26 +13,59 @@ const tokenIface = new Interface(IRO_TOKEN_ABI);
13
13
  // 查询
14
14
  // ============================================================================
15
15
  export class IroTokenQuery {
16
+ provider;
17
+ token;
18
+ tokenAddress;
16
19
  constructor(tokenAddress, rpcUrl, chainId) {
17
20
  this.tokenAddress = tokenAddress;
18
21
  this.provider = new JsonRpcProvider(rpcUrl ?? ENI_RPC_URL, chainId ?? ENI_CHAIN_ID, { staticNetwork: true });
19
22
  this.token = new Contract(tokenAddress, IRO_TOKEN_ABI, this.provider);
20
23
  }
21
- async name() { return this.token.name(); }
22
- async symbol() { return this.token.symbol(); }
23
- async decimals() { return Number(await this.token.decimals()); }
24
- async totalSupply() { return this.token.totalSupply(); }
25
- async balanceOf(account) { return this.token.balanceOf(account); }
26
- async allowance(owner, spender) { return this.token.allowance(owner, spender); }
27
- async price() { return this.token.price(); }
28
- async creator() { return this.token.creator(); }
29
- async isOpen() { return this.token.isOpen(); }
30
- async isWhitelisted() { return this.token.isWhitelisted(); }
31
- async isWXOC() { return this.token.isWXOC(); }
32
- async tradingLimit() { return this.token.tradingLimit(); }
33
- async totalCreatorFee() { return this.token.totalCreatorFee(); }
34
- async pool() { return this.token.POOL(); }
35
- async tka() { return this.token.TKA(); }
24
+ async name() {
25
+ return this.token.name();
26
+ }
27
+ async symbol() {
28
+ return this.token.symbol();
29
+ }
30
+ async decimals() {
31
+ return Number(await this.token.decimals());
32
+ }
33
+ async totalSupply() {
34
+ return this.token.totalSupply();
35
+ }
36
+ async balanceOf(account) {
37
+ return this.token.balanceOf(account);
38
+ }
39
+ async allowance(owner, spender) {
40
+ return this.token.allowance(owner, spender);
41
+ }
42
+ async price() {
43
+ return this.token.price();
44
+ }
45
+ async creator() {
46
+ return this.token.creator();
47
+ }
48
+ async isOpen() {
49
+ return this.token.isOpen();
50
+ }
51
+ async isWhitelisted() {
52
+ return this.token.isWhitelisted();
53
+ }
54
+ async isWXOC() {
55
+ return this.token.isWXOC();
56
+ }
57
+ async tradingLimit() {
58
+ return this.token.tradingLimit();
59
+ }
60
+ async totalCreatorFee() {
61
+ return this.token.totalCreatorFee();
62
+ }
63
+ async pool() {
64
+ return this.token.POOL();
65
+ }
66
+ async tka() {
67
+ return this.token.TKA();
68
+ }
36
69
  async getTokenPrice() {
37
70
  const raw = await this.token.getTokenPrice();
38
71
  return {
@@ -46,16 +79,32 @@ export class IroTokenQuery {
46
79
  }
47
80
  async getTokenInfo() {
48
81
  const [name, symbol, decimals, totalSupply, poolAddress, isOpen, priceVal, creatorAddr, tkaAddr] = await Promise.all([
49
- this.name(), this.symbol(), this.decimals(), this.totalSupply(),
50
- this.pool(), this.isOpen(), this.price(), this.creator(), this.tka(),
82
+ this.name(),
83
+ this.symbol(),
84
+ this.decimals(),
85
+ this.totalSupply(),
86
+ this.pool(),
87
+ this.isOpen(),
88
+ this.price(),
89
+ this.creator(),
90
+ this.tka(),
51
91
  ]);
52
92
  return {
53
- name, symbol, decimals, totalSupply,
93
+ name,
94
+ symbol,
95
+ decimals,
96
+ totalSupply,
54
97
  tokenAddress: this.tokenAddress,
55
- poolAddress, isOpen, price: priceVal, creator: creatorAddr, tka: tkaAddr,
98
+ poolAddress,
99
+ isOpen,
100
+ price: priceVal,
101
+ creator: creatorAddr,
102
+ tka: tkaAddr,
56
103
  };
57
104
  }
58
- get providerInstance() { return this.provider; }
105
+ get providerInstance() {
106
+ return this.provider;
107
+ }
59
108
  }
60
109
  // ============================================================================
61
110
  // 写入操作 — EIP-1559
@@ -70,8 +119,15 @@ export async function subscribe(params) {
70
119
  const maxFeePerGas = gasPrice ?? feeData.maxFeePerGas ?? feeData.gasPrice ?? 1000000000n;
71
120
  const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? 0n;
72
121
  const signedTx = await wallet.signTransaction({
73
- to: tokenAddress, data: calldata, value: value ?? 0n, nonce, chainId,
74
- type: 2, maxFeePerGas, maxPriorityFeePerGas, gasLimit: subscribeGasLimit ?? SUBSCRIBE_GAS_LIMIT,
122
+ to: tokenAddress,
123
+ data: calldata,
124
+ value: value ?? 0n,
125
+ nonce,
126
+ chainId,
127
+ type: 2,
128
+ maxFeePerGas,
129
+ maxPriorityFeePerGas,
130
+ gasLimit: subscribeGasLimit ?? SUBSCRIBE_GAS_LIMIT,
75
131
  });
76
132
  return { signedTx, from: wallet.address, nonce };
77
133
  }
@@ -85,8 +141,15 @@ export async function pledge(params) {
85
141
  const maxFeePerGas = gasPrice ?? feeData.maxFeePerGas ?? feeData.gasPrice ?? 1000000000n;
86
142
  const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? 0n;
87
143
  const signedTx = await wallet.signTransaction({
88
- to: tokenAddress, data: calldata, value: value ?? 0n, nonce, chainId,
89
- type: 2, maxFeePerGas, maxPriorityFeePerGas, gasLimit: subscribeGasLimit ?? SUBSCRIBE_GAS_LIMIT,
144
+ to: tokenAddress,
145
+ data: calldata,
146
+ value: value ?? 0n,
147
+ nonce,
148
+ chainId,
149
+ type: 2,
150
+ maxFeePerGas,
151
+ maxPriorityFeePerGas,
152
+ gasLimit: subscribeGasLimit ?? SUBSCRIBE_GAS_LIMIT,
90
153
  });
91
154
  return { signedTx, from: wallet.address, nonce };
92
155
  }
@@ -99,8 +162,14 @@ export async function batchSubscribe(params) {
99
162
  const results = [];
100
163
  for (const sub of subscribers) {
101
164
  const result = await subscribe({
102
- rpcUrl, chainId, privateKey: sub.privateKey, tokenAddress,
103
- user: sub.user, amount: sub.amount, value: sub.value, gasPrice: resolvedGasPrice,
165
+ rpcUrl,
166
+ chainId,
167
+ privateKey: sub.privateKey,
168
+ tokenAddress,
169
+ user: sub.user,
170
+ amount: sub.amount,
171
+ value: sub.value,
172
+ gasPrice: resolvedGasPrice,
104
173
  });
105
174
  signedTransactions.push(result.signedTx);
106
175
  results.push(result);
@@ -108,7 +177,7 @@ export async function batchSubscribe(params) {
108
177
  return { signedTransactions, results };
109
178
  }
110
179
  export async function batchSubscribeForSubmit(params) {
111
- const { rpcUrl = ENI_RPC_URL, chainId = ENI_CHAIN_ID, tokenAddress, subscribers, approvalTxs = [], gasPrice, subscribeGasLimit } = params;
180
+ const { rpcUrl = ENI_RPC_URL, chainId = ENI_CHAIN_ID, tokenAddress, subscribers, approvalTxs = [], gasPrice, subscribeGasLimit, } = params;
112
181
  if (subscribers.length === 0) {
113
182
  return { signedTransactions: [...approvalTxs], subscribeResults: [], profitAmount: 0n };
114
183
  }
@@ -117,16 +186,23 @@ export async function batchSubscribeForSubmit(params) {
117
186
  const maxFeePerGas = gasPrice ?? feeData.maxFeePerGas ?? feeData.gasPrice ?? 1000000000n;
118
187
  const maxPriorityFeePerGas = feeData.maxPriorityFeePerGas ?? 0n;
119
188
  const resolvedGasLimit = subscribeGasLimit ?? SUBSCRIBE_GAS_LIMIT;
120
- const wallets = subscribers.map(sub => new Wallet(sub.privateKey, provider));
121
- const nonces = await Promise.all(wallets.map(w => w.getNonce()));
189
+ const wallets = subscribers.map((sub) => new Wallet(sub.privateKey, provider));
190
+ const nonces = await Promise.all(wallets.map((w) => w.getNonce()));
122
191
  const subscribeTxs = [];
123
192
  const subscribeResults = [];
124
193
  for (let i = 0; i < subscribers.length; i++) {
125
194
  const sub = subscribers[i];
126
195
  const calldata = tokenIface.encodeFunctionData('subscribe', [sub.user, sub.amount]);
127
196
  const signedTx = await wallets[i].signTransaction({
128
- to: tokenAddress, data: calldata, value: sub.value ?? 0n, nonce: nonces[i], chainId,
129
- type: 2, maxFeePerGas, maxPriorityFeePerGas, gasLimit: resolvedGasLimit,
197
+ to: tokenAddress,
198
+ data: calldata,
199
+ value: sub.value ?? 0n,
200
+ nonce: nonces[i],
201
+ chainId,
202
+ type: 2,
203
+ maxFeePerGas,
204
+ maxPriorityFeePerGas,
205
+ gasLimit: resolvedGasLimit,
130
206
  });
131
207
  subscribeTxs.push(signedTx);
132
208
  subscribeResults.push({ signedTx, from: wallets[i].address, nonce: nonces[i] });