@antseed/ants 0.1.5 → 0.1.7

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 (251) hide show
  1. package/dist/ants-web/assets/Arc-VDBY7LNS-BChRXCXW.js +1 -0
  2. package/dist/ants-web/assets/Brave-BRAKJXDS-mq-Xo37j.js +1 -0
  3. package/dist/ants-web/assets/Browser-76IHF3Y2-BMhRaC5Z.js +1 -0
  4. package/dist/ants-web/assets/Chrome-65Q5P54Y-DR9MQEVr.js +1 -0
  5. package/dist/ants-web/assets/Edge-XSPUTORV-DEoZslQE.js +1 -0
  6. package/dist/ants-web/assets/Firefox-AAHGJQIP-Bp_Hm04m.js +1 -0
  7. package/dist/ants-web/assets/Linux-OO4TNCLJ-B0aw93n9.js +1 -0
  8. package/dist/ants-web/assets/Macos-MW4AE7LN-Vvm8Drw3.js +1 -0
  9. package/dist/ants-web/assets/Opera-KQZLSACL-Cwv5MDFy.js +1 -0
  10. package/dist/ants-web/assets/Safari-ZPL37GXR-C4Ggg6rz.js +1 -0
  11. package/dist/ants-web/assets/Windows-PPTHQER6-BlyV2p7Y.js +1 -0
  12. package/dist/ants-web/assets/add-1qQ_SVL6.js +15 -0
  13. package/dist/ants-web/assets/all-wallets-D0QF065k.js +6 -0
  14. package/dist/ants-web/assets/apechain-SX5YFU6N-q5qBv-mp.js +1 -0
  15. package/dist/ants-web/assets/app-store-j-2thKGl.js +17 -0
  16. package/dist/ants-web/assets/apple-CCcInWVX.js +18 -0
  17. package/dist/ants-web/assets/ar_AR-44JUQ6EW-BMX-am0v.js +1487 -0
  18. package/dist/ants-web/assets/arbitrum-WURIBY6W-CqVkHBr5.js +1 -0
  19. package/dist/ants-web/assets/arrow-bottom-DVZa97G2.js +8 -0
  20. package/dist/ants-web/assets/arrow-bottom-circle-tt2k5BWG.js +11 -0
  21. package/dist/ants-web/assets/arrow-left-DnjqXMe0.js +8 -0
  22. package/dist/ants-web/assets/arrow-right-De8QMymS.js +8 -0
  23. package/dist/ants-web/assets/arrow-top-BS2oLt_x.js +8 -0
  24. package/dist/ants-web/assets/assets-Q6ZU7ZJ5-P8HioiAD.js +1 -0
  25. package/dist/ants-web/assets/avalanche-KOMJD3XY-Dsn_JPR4.js +1 -0
  26. package/dist/ants-web/assets/bank-DIxCskFM.js +14 -0
  27. package/dist/ants-web/assets/base-OAXLRA4F-CoYTVIiL.js +1 -0
  28. package/dist/ants-web/assets/baseAccount-44UITRK7-CsjdbWCf.js +1 -0
  29. package/dist/ants-web/assets/basic-D0Dg7j2v.js +2128 -0
  30. package/dist/ants-web/assets/berachain-NJECWIVC-DumxnFvf.js +1 -0
  31. package/dist/ants-web/assets/blast-V555OVXZ-BbhJh1tj.js +1 -0
  32. package/dist/ants-web/assets/browser-n9VVPree.js +14 -0
  33. package/dist/ants-web/assets/bsc-N647EYR2-B2nLKXWV.js +1 -0
  34. package/dist/ants-web/assets/card-Bl7AHEuE.js +14 -0
  35. package/dist/ants-web/assets/ccip-C_ifxkiT.js +1 -0
  36. package/dist/ants-web/assets/celo-GEP4TUHG-CenIBYLU.js +1 -0
  37. package/dist/ants-web/assets/checkmark-DXB1SsFx.js +11 -0
  38. package/dist/ants-web/assets/checkmark-bold-CIMnw7st.js +8 -0
  39. package/dist/ants-web/assets/chevron-bottom-DGkVb8CY.js +8 -0
  40. package/dist/ants-web/assets/chevron-left-D8vC6sW_.js +8 -0
  41. package/dist/ants-web/assets/chevron-right-CP8tyhU4.js +8 -0
  42. package/dist/ants-web/assets/chevron-top-DUqp6O8b.js +8 -0
  43. package/dist/ants-web/assets/chrome-store-CDk6Jfiv.js +61 -0
  44. package/dist/ants-web/assets/clock-t0Dwo5ck.js +8 -0
  45. package/dist/ants-web/assets/close-BiTlv6FX.js +8 -0
  46. package/dist/ants-web/assets/coinPlaceholder-PJZCh_De.js +8 -0
  47. package/dist/ants-web/assets/compass-CctP2ZVM.js +8 -0
  48. package/dist/ants-web/assets/connect-UA7M4XW6-IY3X6Bmr.js +1 -0
  49. package/dist/ants-web/assets/copy-b1i5dSZT.js +15 -0
  50. package/dist/ants-web/assets/core-4w9H32as.js +908 -0
  51. package/dist/ants-web/assets/create-FASO7PVG-D_rvSpre.js +1 -0
  52. package/dist/ants-web/assets/cronos-HJPAQTAE-BEOvlOC4.js +1 -0
  53. package/dist/ants-web/assets/cursor-kLCZuRWK.js +3 -0
  54. package/dist/ants-web/assets/cursor-transparent-C1IxvCBs.js +12 -0
  55. package/dist/ants-web/assets/de_DE-PYAO5YD6-BWlqPWgO.js +1487 -0
  56. package/dist/ants-web/assets/degen-FQQ4XGHB-CeHTs88l.js +1 -0
  57. package/dist/ants-web/assets/desktop-Qa_41eha.js +9 -0
  58. package/dist/ants-web/assets/disconnect-7QBZVVG8.js +8 -0
  59. package/dist/ants-web/assets/discord-DuRr0OMy.js +17 -0
  60. package/dist/ants-web/assets/es_419-HRGOJ6VT-D-qzxUM-.js +1487 -0
  61. package/dist/ants-web/assets/ethereum-RGGVA4PY-SWGOlkuk.js +1 -0
  62. package/dist/ants-web/assets/etherscan-BOImzSgC.js +6 -0
  63. package/dist/ants-web/assets/events-DQ172AOg.js +1 -0
  64. package/dist/ants-web/assets/exclamation-triangle-evZ54TSt.js +4 -0
  65. package/dist/ants-web/assets/extension-YSvzNEgu.js +8 -0
  66. package/dist/ants-web/assets/external-link-BukU3aK3.js +8 -0
  67. package/dist/ants-web/assets/facebook-WJZQGI9M.js +26 -0
  68. package/dist/ants-web/assets/farcaster-Dt0XRvlP.js +12 -0
  69. package/dist/ants-web/assets/filters-CFC5g--u.js +8 -0
  70. package/dist/ants-web/assets/flow-5FQJFCTK-CUie2reO.js +1 -0
  71. package/dist/ants-web/assets/fr_FR-IGGVC6RM-D8LpUM75.js +1487 -0
  72. package/dist/ants-web/assets/github-Bhz0AnGj.js +18 -0
  73. package/dist/ants-web/assets/gnosis-37ZC4RBL-B137OtHZ.js +1 -0
  74. package/dist/ants-web/assets/google-CGzSUXjP.js +18 -0
  75. package/dist/ants-web/assets/gravity-J5YQHTYH-Bj6B0uod.js +1 -0
  76. package/dist/ants-web/assets/hardhat-TX56IT5N-CV1FY-wE.js +1 -0
  77. package/dist/ants-web/assets/help-circle-BoGPtVJY.js +12 -0
  78. package/dist/ants-web/assets/hi_IN-XSKAA3MF-C3QUpWyP.js +1487 -0
  79. package/dist/ants-web/assets/hyperevm-VKPAA4SA-CHwraEsx.js +1 -0
  80. package/dist/ants-web/assets/id-ir8rS0J_.js +12 -0
  81. package/dist/ants-web/assets/id_ID-KUOB4UAL-K9y-nRWm.js +1487 -0
  82. package/dist/ants-web/assets/image-DXBUHwz_.js +4 -0
  83. package/dist/ants-web/assets/index-9ALlRD6p.css +1 -0
  84. package/dist/ants-web/assets/index-B7p3jPAJ.js +1 -0
  85. package/dist/ants-web/assets/index-BqWNkBzB.js +395 -0
  86. package/dist/ants-web/assets/index-C-I4ROfT.js +16 -0
  87. package/dist/ants-web/assets/index-Chq8yV_g.js +47 -0
  88. package/dist/ants-web/assets/index-Ci5bF__2.js +1729 -0
  89. package/dist/ants-web/assets/index-kzlEvkEN.js +1 -0
  90. package/dist/ants-web/assets/index.es-D1GdDJUC.js +39 -0
  91. package/dist/ants-web/assets/info-DzGq_QPQ.js +3 -0
  92. package/dist/ants-web/assets/info-circle-z91TqQxH.js +12 -0
  93. package/dist/ants-web/assets/ink-FZMYZWHG-62p-5IK5.js +1 -0
  94. package/dist/ants-web/assets/ja_JP-4WRQ63RX-Ct5pF4ug.js +1487 -0
  95. package/dist/ants-web/assets/kaia-65D2U3PU-JmuLQ4gC.js +1 -0
  96. package/dist/ants-web/assets/ko_KR-I2K7AIEP-B5gw8Mwb.js +1487 -0
  97. package/dist/ants-web/assets/lightbulb-CgYwiQYs.js +3 -0
  98. package/dist/ants-web/assets/linea-QRMVQ5DY-DuI3vv0d.js +1 -0
  99. package/dist/ants-web/assets/login-UP3DZBGS-Db_wM5oQ.js +1 -0
  100. package/dist/ants-web/assets/mail-FLPFIbqi.js +8 -0
  101. package/dist/ants-web/assets/manta-SI27YFEJ-CpVOKa06.js +1 -0
  102. package/dist/ants-web/assets/mantle-CKIUT334-DR2WgqzU.js +1 -0
  103. package/dist/ants-web/assets/metaMaskWallet-SITXT2FV-BlemcphV.js +1 -0
  104. package/dist/ants-web/assets/metamask-sdk-QG4PtQco.js +542 -0
  105. package/dist/ants-web/assets/mobile--kHpa5NK.js +9 -0
  106. package/dist/ants-web/assets/monad-4KWC6TSS-DVXSkpiz.js +1 -0
  107. package/dist/ants-web/assets/more-CJbReLy0.js +11 -0
  108. package/dist/ants-web/assets/ms_MY-6VZW6Q3Z-BtFD07hR.js +1487 -0
  109. package/dist/ants-web/assets/network-placeholder-BfSizFBN.js +14 -0
  110. package/dist/ants-web/assets/nftPlaceholder-BTfly2G8.js +8 -0
  111. package/dist/ants-web/assets/off-DCMXa6Y2.js +8 -0
  112. package/dist/ants-web/assets/optimism-HAF2GUT7-ec6Nqxs9.js +1 -0
  113. package/dist/ants-web/assets/play-store-CbbevixE.js +32 -0
  114. package/dist/ants-web/assets/plus-BxINT2r_.js +13 -0
  115. package/dist/ants-web/assets/polygon-WW6ZI7PM-DXlmm4L1.js +1 -0
  116. package/dist/ants-web/assets/pt_BR-N3XOZ4SV-CvVpfsHb.js +1487 -0
  117. package/dist/ants-web/assets/qr-code-CMEsvGrE.js +6 -0
  118. package/dist/ants-web/assets/rainbowWallet-O26YNBMX-DUhYus-9.js +1 -0
  119. package/dist/ants-web/assets/recycle-horizontal-BldRTXPT.js +9 -0
  120. package/dist/ants-web/assets/refresh-82vLCcdB.js +8 -0
  121. package/dist/ants-web/assets/refresh-S4T5V5GX-CwqIaaxK.js +1 -0
  122. package/dist/ants-web/assets/reown-logo-BPGalyzg.js +12 -0
  123. package/dist/ants-web/assets/ronin-EMCPYXZT-N-QBHZdV.js +1 -0
  124. package/dist/ants-web/assets/ru_RU-IITAPRET-DOj6Jzj7.js +1487 -0
  125. package/dist/ants-web/assets/safeWallet-5MNKTR5Z-D-5imDLD.js +1 -0
  126. package/dist/ants-web/assets/sanko-RHQYXGM5-OX010CbN.js +1 -0
  127. package/dist/ants-web/assets/scan-4UYSQ56Q-CjMz6-XC.js +1 -0
  128. package/dist/ants-web/assets/scroll-5OBGQVOV-DJFECiai.js +1 -0
  129. package/dist/ants-web/assets/search-CADsyV1c.js +8 -0
  130. package/dist/ants-web/assets/secp256k1-B5byVYSZ.js +1 -0
  131. package/dist/ants-web/assets/secp256k1-Cb4vPU9D.js +1 -0
  132. package/dist/ants-web/assets/send-DyAisqGO.js +15 -0
  133. package/dist/ants-web/assets/sign-A7IJEUT5-CGsRnPrd.js +1 -0
  134. package/dist/ants-web/assets/superposition-HG6MMR2Y-bRkgatRO.js +1 -0
  135. package/dist/ants-web/assets/swapHorizontal-BfHwXZPT.js +8 -0
  136. package/dist/ants-web/assets/swapHorizontalBold-FIoCjqnp.js +8 -0
  137. package/dist/ants-web/assets/swapHorizontalMedium-CzDDCY_G.js +16 -0
  138. package/dist/ants-web/assets/swapHorizontalRoundedBold-CvMRJeWj.js +8 -0
  139. package/dist/ants-web/assets/swapVertical-BgSezaow.js +8 -0
  140. package/dist/ants-web/assets/telegram-CsMNhXCs.js +16 -0
  141. package/dist/ants-web/assets/th_TH-3ZQCKCQE-BcHUN2Q4.js +1487 -0
  142. package/dist/ants-web/assets/three-dots-DYf4gmVW.js +5 -0
  143. package/dist/ants-web/assets/tr_TR-QUPUGMUF-CwpF6ZFn.js +1487 -0
  144. package/dist/ants-web/assets/twitch-BtBr-NTg.js +18 -0
  145. package/dist/ants-web/assets/twitterIcon-BmRf6M77.js +6 -0
  146. package/dist/ants-web/assets/uk_UA-SSN6SV5E-IlYYyRC6.js +1487 -0
  147. package/dist/ants-web/assets/unichain-C5BWO2ZY-BfguYsnu.js +1 -0
  148. package/dist/ants-web/assets/verify-cxA8gdP6.js +8 -0
  149. package/dist/ants-web/assets/verify-filled-DHnnW8EE.js +8 -0
  150. package/dist/ants-web/assets/vi_VN-7BUVRNYY-CZ9S75qZ.js +1487 -0
  151. package/dist/ants-web/assets/w3m-modal-D1ucMOAa.js +642 -0
  152. package/dist/ants-web/assets/wallet-BT4Fue1R.js +8 -0
  153. package/dist/ants-web/assets/wallet-placeholder-C2J5s6Yp.js +14 -0
  154. package/dist/ants-web/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js +1 -0
  155. package/dist/ants-web/assets/walletconnect-B5k8iJl-.js +30 -0
  156. package/dist/ants-web/assets/warning-circle-9rNSUSsX.js +12 -0
  157. package/dist/ants-web/assets/x-CpRc85jR.js +12 -0
  158. package/dist/ants-web/assets/xdc-KJ3TDBYO-DNV6zchh.js +1 -0
  159. package/dist/ants-web/assets/zetachain-TLDS5IPW-Udhyw16T.js +1 -0
  160. package/dist/ants-web/assets/zh_CN-HJBN674C-Baf0GEeT.js +1487 -0
  161. package/dist/ants-web/assets/zh_HK-JW3WLRKE-VztJKXL5.js +1487 -0
  162. package/dist/ants-web/assets/zh_TW-VNNRNXY7-aWfg7Qp4.js +1487 -0
  163. package/dist/ants-web/assets/zksync-DH7HK5U4-Dt4usFw6.js +1 -0
  164. package/dist/ants-web/assets/zora-FYL5H3IO-iB4wygST.js +1 -0
  165. package/dist/ants-web/index.html +2 -2
  166. package/dist/api-types.d.ts +168 -6
  167. package/dist/browser-signer.d.ts +30 -0
  168. package/dist/browser-signer.js +189 -0
  169. package/dist/browser-signer.js.map +1 -0
  170. package/dist/jobs.d.ts +10 -3
  171. package/dist/jobs.js +97 -20
  172. package/dist/jobs.js.map +1 -1
  173. package/dist/position-actions.d.ts +13 -0
  174. package/dist/position-actions.js +25 -0
  175. package/dist/position-actions.js.map +1 -0
  176. package/dist/routes.d.ts +7 -0
  177. package/dist/routes.js +63 -5
  178. package/dist/routes.js.map +1 -1
  179. package/dist/server.d.ts +8 -0
  180. package/dist/server.js +157 -12
  181. package/dist/server.js.map +1 -1
  182. package/dist/service/context.d.ts +25 -3
  183. package/dist/service/context.js +56 -5
  184. package/dist/service/context.js.map +1 -1
  185. package/dist/service/display-snapshot.d.ts +28 -0
  186. package/dist/service/display-snapshot.js +144 -0
  187. package/dist/service/display-snapshot.js.map +1 -0
  188. package/dist/service/emissions.js +11 -19
  189. package/dist/service/emissions.js.map +1 -1
  190. package/dist/service/explorer.js +2 -1
  191. package/dist/service/explorer.js.map +1 -1
  192. package/dist/service/format.d.ts +1 -1
  193. package/dist/service/format.js +2 -0
  194. package/dist/service/format.js.map +1 -1
  195. package/dist/service/indexed-wallet.d.ts +7 -0
  196. package/dist/service/indexed-wallet.js +58 -0
  197. package/dist/service/indexed-wallet.js.map +1 -0
  198. package/dist/service/indexer.d.ts +32 -3
  199. package/dist/service/indexer.js +64 -8
  200. package/dist/service/indexer.js.map +1 -1
  201. package/dist/service/legacy-payout.d.ts +3 -0
  202. package/dist/service/legacy-payout.js +32 -0
  203. package/dist/service/legacy-payout.js.map +1 -0
  204. package/dist/service/network.d.ts +5 -0
  205. package/dist/service/network.js +185 -0
  206. package/dist/service/network.js.map +1 -0
  207. package/dist/service/overview-reads.d.ts +30 -0
  208. package/dist/service/overview-reads.js +69 -0
  209. package/dist/service/overview-reads.js.map +1 -0
  210. package/dist/service/overview.js +14 -36
  211. package/dist/service/overview.js.map +1 -1
  212. package/dist/service/pool-merge.d.ts +2 -1
  213. package/dist/service/pool-merge.js +11 -4
  214. package/dist/service/pool-merge.js.map +1 -1
  215. package/dist/service/pools.d.ts +22 -1
  216. package/dist/service/pools.js +257 -98
  217. package/dist/service/pools.js.map +1 -1
  218. package/dist/service/position-feed.d.ts +73 -0
  219. package/dist/service/position-feed.js +173 -0
  220. package/dist/service/position-feed.js.map +1 -0
  221. package/dist/service/positions.d.ts +3 -5
  222. package/dist/service/positions.js +155 -93
  223. package/dist/service/positions.js.map +1 -1
  224. package/dist/service/rewards.d.ts +1 -0
  225. package/dist/service/rewards.js +117 -56
  226. package/dist/service/rewards.js.map +1 -1
  227. package/dist/service/rpc-provider.d.ts +4 -0
  228. package/dist/service/rpc-provider.js +44 -3
  229. package/dist/service/rpc-provider.js.map +1 -1
  230. package/dist/service/seller-models.d.ts +2 -0
  231. package/dist/service/seller-models.js +94 -0
  232. package/dist/service/seller-models.js.map +1 -0
  233. package/dist/service/seller.js +33 -30
  234. package/dist/service/seller.js.map +1 -1
  235. package/dist/service/stake-eligibility.d.ts +6 -0
  236. package/dist/service/stake-eligibility.js +68 -0
  237. package/dist/service/stake-eligibility.js.map +1 -0
  238. package/dist/service/usage.js +5 -13
  239. package/dist/service/usage.js.map +1 -1
  240. package/dist/service/yield.d.ts +3 -0
  241. package/dist/service/yield.js +12 -0
  242. package/dist/service/yield.js.map +1 -0
  243. package/dist/view-cache.d.ts +5 -10
  244. package/dist/view-cache.js +12 -14
  245. package/dist/view-cache.js.map +1 -1
  246. package/dist/wallet-errors.d.ts +9 -0
  247. package/dist/wallet-errors.js +32 -0
  248. package/dist/wallet-errors.js.map +1 -0
  249. package/package.json +8 -3
  250. package/dist/ants-web/assets/index-BunPfgXh.css +0 -1
  251. package/dist/ants-web/assets/index-zCPoF694.js +0 -40
@@ -0,0 +1,94 @@
1
+ const rows = (value) => {
2
+ if (!Array.isArray(value) || value.some(row => !row || typeof row !== 'object' || Array.isArray(row)))
3
+ throw new Error('Invalid Antscan response');
4
+ return value;
5
+ };
6
+ const text = (value) => typeof value === 'string' && value.trim() ? value : null;
7
+ const price = (value) => typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : null;
8
+ const timestamp = (value) => typeof value === 'number' && Number.isSafeInteger(value) && value > 0 ? value : null;
9
+ const count = (value) => {
10
+ if (typeof value !== 'string' || !/^\d+$/.test(value))
11
+ throw new Error('Invalid settlement counter');
12
+ return BigInt(value);
13
+ };
14
+ export async function sellerModels(baseUrl, address, fetchImpl = fetch) {
15
+ if (!/^0x[0-9a-fA-F]{40}$/.test(address))
16
+ throw new Error('Seller must be an address.');
17
+ const result = { fetchedAt: Date.now(), catalogStatus: 'unavailable', catalogUpdatedAt: null, offerings: [], usageStatus: 'unavailable', usageError: null, period: null, totals: null, usage: [] };
18
+ if (!baseUrl)
19
+ return result;
20
+ const seller = address.toLowerCase();
21
+ const read = async (path) => {
22
+ const response = await fetchImpl(`${baseUrl.replace(/\/$/, '')}${path}`, { signal: AbortSignal.timeout(8_000) });
23
+ if (!response.ok)
24
+ throw new Error(`Antscan ${response.status}`);
25
+ return await response.json();
26
+ };
27
+ await Promise.all([
28
+ (async () => {
29
+ try {
30
+ const catalog = await read(`/api/marketplace?seller=${seller}&limit=5000`);
31
+ const offerings = rows(catalog.offerings).filter(row => text(row.sellerAddress)?.toLowerCase() === seller).map(row => {
32
+ const id = text(row.id), name = text(row.serviceDisplayName) ?? text(row.service), provider = text(row.provider);
33
+ if (!id || !name || !provider)
34
+ throw new Error('Invalid offering');
35
+ return { id, name, provider, categories: Array.isArray(row.categories) ? row.categories.filter((value) => typeof value === 'string') : [], inputUsdPerMillion: price(row.inputUsdPerMillion), outputUsdPerMillion: price(row.outputUsdPerMillion) };
36
+ });
37
+ result.offerings = offerings;
38
+ result.catalogStatus = catalog.status === 'live' ? 'live' : 'stale';
39
+ result.catalogUpdatedAt = timestamp(catalog.updatedAt);
40
+ }
41
+ catch { }
42
+ })(),
43
+ (async () => {
44
+ try {
45
+ const emissions = await read('/api/emissions');
46
+ const currentEpoch = count(emissions.currentEpoch);
47
+ const genesis = count(emissions.genesis);
48
+ const duration = count(emissions.epochDuration);
49
+ if (currentEpoch < 1n)
50
+ throw new Error('No completed epoch yet.');
51
+ if (duration === 0n || duration > 366n * 86400n)
52
+ throw new Error('Invalid epoch duration.');
53
+ const epoch = Number(currentEpoch - 1n);
54
+ const from = Number(genesis + (currentEpoch - 1n) * duration);
55
+ const to = Number(genesis + currentEpoch * duration);
56
+ if (![epoch, from, to].every(Number.isSafeInteger) || to > Math.floor(Date.now() / 1000))
57
+ throw new Error('Invalid epoch boundaries.');
58
+ result.period = { epoch, from, to };
59
+ const response = await read(`/api/sellers/${seller}/model-usage?from=${from}&to=${to}`);
60
+ const period = response.period;
61
+ const coverage = response.coverage;
62
+ if (text(response.seller)?.toLowerCase() !== seller || period?.from !== from || period?.to !== to || period?.startInclusive !== true || period?.endExclusive !== true || period?.basis !== 'settlement_time' || coverage?.records !== 'all_indexed_records_in_period')
63
+ throw new Error('Invalid model usage period or seller.');
64
+ const totals = response.totals;
65
+ if (!totals)
66
+ throw new Error('Missing model usage totals.');
67
+ const parsedTotals = {
68
+ settledVolumeUsdc: String(count(totals.settledVolumeUsdc)),
69
+ attributedVolumeUsdc: String(count(totals.attributedVolumeUsdc)),
70
+ unattributedVolumeUsdc: totals.unattributedVolumeUsdc === null ? null : String(count(totals.unattributedVolumeUsdc)),
71
+ excessAttributedVolumeUsdc: String(count(totals.excessAttributedVolumeUsdc)),
72
+ };
73
+ const seen = new Set();
74
+ const usage = rows(response.models).map(row => {
75
+ const serviceId = text(row.serviceId);
76
+ if (!serviceId || seen.has(serviceId))
77
+ throw new Error('Invalid model usage identity.');
78
+ seen.add(serviceId);
79
+ return { serviceId, name: text(row.name) ?? serviceId, requests: String(count(row.requestCount)), inputTokens: String(count(row.inputTokens)), outputTokens: String(count(row.outputTokens)), volumeUsdc: String(count(row.volumeUsdc)) };
80
+ });
81
+ result.usage = usage.sort((first, second) => BigInt(first.volumeUsdc) > BigInt(second.volumeUsdc) ? -1 : BigInt(first.volumeUsdc) < BigInt(second.volumeUsdc) ? 1 : first.serviceId.localeCompare(second.serviceId));
82
+ result.totals = parsedTotals;
83
+ result.usageStatus = 'available';
84
+ }
85
+ catch (error) {
86
+ result.usageError = error instanceof Error && error.message === 'Antscan 404'
87
+ ? 'The configured Antscan server does not expose the model-usage API. The updated API must be deployed to Antscan.'
88
+ : error instanceof Error && error.message === 'No completed epoch yet.' ? error.message : 'Antscan last-epoch usage could not load. Check the configured Antscan service and retry.';
89
+ }
90
+ })(),
91
+ ]);
92
+ return result;
93
+ }
94
+ //# sourceMappingURL=seller-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seller-models.js","sourceRoot":"","sources":["../../src/service/seller-models.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,6 @@
1
- import { ZeroAddress } from 'ethers';
2
1
  import { formatAnts } from './format.js';
3
2
  import { toJson } from './json.js';
4
- import { silentReporter } from './steps.js';
5
- async function safe(read, fallback) {
6
- try {
7
- return await read();
8
- }
9
- catch {
10
- return fallback;
11
- }
12
- }
3
+ import { assertAgentId, silentReporter } from './steps.js';
13
4
  export async function seller(ctx) {
14
5
  const stack = await ctx.stack();
15
6
  const identity = ctx.identity();
@@ -18,22 +9,24 @@ export async function seller(ctx) {
18
9
  const pools = ctx.pools();
19
10
  const init = ctx.positionInit();
20
11
  const [identityRegistered, registryAgentId, legacyAgentId, legacyStake, legacyEligible, registryEligible, legacyEligibilityEnabled, minPoolStake] = await Promise.all([
21
- identity ? safe(() => identity.isRegistered(ctx.address), false) : Promise.resolve(false),
22
- registry ? safe(() => registry.getAgentId(ctx.address), 0) : Promise.resolve(0),
23
- legacyStaking ? safe(() => legacyStaking.getAgentId(ctx.address), 0) : Promise.resolve(0),
24
- legacyStaking ? safe(() => legacyStaking.getStake(ctx.address), 0n) : Promise.resolve(0n),
25
- legacyStaking ? safe(() => legacyStaking.isStakedAboveMin(ctx.address), false) : Promise.resolve(false),
26
- registry ? safe(() => registry.isStakedAboveMin(ctx.address), false) : Promise.resolve(false),
27
- registry ? safe(() => registry.legacyStakeEligibilityEnabled(), null) : Promise.resolve(null),
28
- registry ? safe(() => registry.minSellerPoolStake(), null) : Promise.resolve(null),
12
+ identity ? identity.isRegistered(ctx.address) : Promise.resolve(false),
13
+ registry ? registry.getAgentId(ctx.address) : Promise.resolve(0),
14
+ legacyStaking ? legacyStaking.getAgentId(ctx.address) : Promise.resolve(0),
15
+ legacyStaking ? legacyStaking.getStake(ctx.address) : Promise.resolve(0n),
16
+ legacyStaking ? legacyStaking.isStakedAboveMin(ctx.address) : Promise.resolve(false),
17
+ registry ? registry.isStakedAboveMin(ctx.address) : Promise.resolve(false),
18
+ registry ? registry.legacyStakeEligibilityEnabled() : Promise.resolve(null),
19
+ registry ? registry.minSellerPoolStake() : Promise.resolve(null),
29
20
  ]);
30
21
  const agentId = registryAgentId || legacyAgentId;
31
- const poolActiveStake = pools && agentId ? await safe(() => pools.poolActiveStakeAtEpoch(agentId, stack.currentEpoch), 0n) : 0n;
22
+ const registryBound = !!registry && registryAgentId !== 0 &&
23
+ (await registry.agentSeller(registryAgentId)).toLowerCase() === ctx.address.toLowerCase();
24
+ const poolActiveStake = pools && agentId ? await pools.poolActiveStakeAtEpoch(agentId, stack.currentEpoch) : 0n;
32
25
  let starter = null;
33
26
  if (init && pools) {
34
27
  const [initialized, remaining, amount, endEpoch, activationDelay] = await Promise.all([
35
- agentId ? safe(() => init.agentInitialized(agentId), false) : Promise.resolve(false),
36
- safe(() => init.remainingInits(), 0n), safe(() => init.initAmount(), 0n), safe(() => init.initEndEpoch(), 0), safe(() => pools.stakeActivationDelay(), 1),
28
+ agentId ? init.agentInitialized(agentId) : Promise.resolve(false),
29
+ init.remainingInits(), init.initAmount(), init.initEndEpoch(), pools.stakeActivationDelay(),
37
30
  ]);
38
31
  const legacyStarterEligible = legacyAgentId !== 0 && legacyEligible;
39
32
  const expired = stack.currentEpoch + activationDelay >= endEpoch;
@@ -46,7 +39,7 @@ export async function seller(ctx) {
46
39
  address: ctx.address,
47
40
  agentId,
48
41
  identityRegistered,
49
- registryBound: registryAgentId !== 0,
42
+ registryBound,
50
43
  eligible: stack.phase === 'active' ? registryEligible : legacyEligible,
51
44
  legacyStake: legacyStake.toString(),
52
45
  legacyEligibilityEnabled,
@@ -62,17 +55,27 @@ export async function registerBinding(ctx, agentIdInput, report = silentReporter
62
55
  throw new Error('Seller registry is not configured; use `antseed seller register` on this chain.');
63
56
  const stack = await ctx.stack();
64
57
  const legacyStaking = ctx.legacyStakingAt(stack.legacyStaking);
65
- const agentId = agentIdInput ?? (legacyStaking ? await safe(() => legacyStaking.getAgentId(ctx.address), 0) : 0);
66
- if (!agentId)
67
- throw new Error('No agent ID known for this wallet. Register an identity first with `antseed seller register`.');
68
58
  const identity = ctx.identity();
69
- if (identity) {
70
- const owner = await safe(() => identity.getAgentWallet(agentId), ZeroAddress);
71
- if (owner.toLowerCase() !== ctx.address.toLowerCase())
72
- throw new Error(`Agent ${agentId} is owned by ${owner}, not this wallet.`);
59
+ if (!identity)
60
+ throw new Error('The identity registry is not configured for this chain.');
61
+ let agentId = agentIdInput === undefined ? await registry.getAgentId(ctx.address) : assertAgentId(agentIdInput);
62
+ if (!agentId && legacyStaking)
63
+ agentId = await legacyStaking.getAgentId(ctx.address);
64
+ let sent = false;
65
+ if (!agentId) {
66
+ if (await identity.isRegistered(ctx.address)) {
67
+ throw new Error('This wallet already owns an identity. Enter its agent ID to finish binding; check Activity if a previous registration stopped partway through.');
68
+ }
69
+ await report('Creating an ERC-8004 identity');
70
+ agentId = await identity.register(signer);
71
+ sent = true;
72
+ assertAgentId(agentId);
73
+ await report(`Identity created: agent ${agentId}. If binding fails, retry with this agent ID.`);
73
74
  }
75
+ const owner = await identity.getAgentWallet(agentId);
76
+ if (owner.toLowerCase() !== ctx.address.toLowerCase())
77
+ throw new Error(`Agent ${agentId} is owned by ${owner}, not this wallet.`);
74
78
  await report(`Binding agent ${agentId} to ${ctx.address} in the seller registry`);
75
- let sent = false;
76
79
  await registry.registerSellerBinding(signer, agentId, async (hash) => { sent = true; await report('Registration confirmed', hash); });
77
80
  if (!sent)
78
81
  await report('Registration already complete; nothing sent');
@@ -1 +1 @@
1
- {"version":3,"file":"seller.js","sourceRoot":"","sources":["../../src/service/seller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seller.js","sourceRoot":"","sources":["../../src/service/seller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AntsContext } from './context.js';
2
+ export interface StakeEligibility {
3
+ owner: string | null;
4
+ stakeable: boolean;
5
+ }
6
+ export declare function stakeEligibility(ctx: AntsContext, agentIds: number[]): Promise<Map<number, StakeEligibility>>;
@@ -0,0 +1,68 @@
1
+ import { Interface, isAddress, ZeroAddress } from 'ethers';
2
+ import { multicallRead } from '@antseed/node/payments';
3
+ const ABI = new Interface([
4
+ 'function identityRegistry() view returns (address)',
5
+ 'function stakingSource() view returns (address)',
6
+ 'function ownerOf(uint256 agentId) view returns (address)',
7
+ 'function getAgentId(address owner) view returns (uint256)',
8
+ ]);
9
+ function requiredAddress(value, field) {
10
+ if (typeof value !== 'string' || !isAddress(value) || value.toLowerCase() === ZeroAddress) {
11
+ throw new Error(`Unable to verify staking eligibility: ${field} is unavailable. Retry when the RPC is available.`);
12
+ }
13
+ return value.toLowerCase();
14
+ }
15
+ /** Ownership and registration change rarely; a transaction from this dashboard clears the cache. */
16
+ const ELIGIBILITY_TTL_MS = 10 * 60_000;
17
+ const memoKey = (agentId) => `stake-eligibility:${agentId}`;
18
+ export async function stakeEligibility(ctx, agentIds) {
19
+ const result = new Map();
20
+ const missing = [];
21
+ for (const agentId of new Set(agentIds)) {
22
+ const cached = ctx.memoGet?.(memoKey(agentId));
23
+ if (cached)
24
+ result.set(agentId, cached);
25
+ else
26
+ missing.push(agentId);
27
+ }
28
+ for (const [agentId, eligibility] of await readEligibility(ctx, missing)) {
29
+ ctx.memoSet?.(memoKey(agentId), eligibility, ELIGIBILITY_TTL_MS);
30
+ result.set(agentId, eligibility);
31
+ }
32
+ return result;
33
+ }
34
+ async function readEligibility(ctx, ids) {
35
+ if (ids.length === 0)
36
+ return new Map();
37
+ const pools = ctx.requirePools();
38
+ const blockTag = await pools.provider.getBlockNumber();
39
+ const pointers = await multicallRead(pools.provider, ['identityRegistry', 'stakingSource'].map(method => ({
40
+ target: pools.contractAddress, iface: ABI, method,
41
+ })), { blockTag });
42
+ const identity = requiredAddress(pointers[0]?.[0], 'identity registry');
43
+ const source = requiredAddress(pointers[1]?.[0], 'staking source');
44
+ const owners = await multicallRead(pools.provider, ids.map(agentId => ({
45
+ target: identity, iface: ABI, method: 'ownerOf', args: [agentId],
46
+ })), { blockTag });
47
+ const byAgent = new Map(ids.map((agentId, index) => {
48
+ const value = owners[index]?.[0];
49
+ const owner = value == null || value === ZeroAddress ? null : requiredAddress(value, `owner of agent ${agentId}`);
50
+ return [agentId, owner];
51
+ }));
52
+ const uniqueOwners = [...new Set([...byAgent.values()].filter((owner) => owner !== null))];
53
+ const registrations = await multicallRead(pools.provider, uniqueOwners.map(owner => ({
54
+ target: source, iface: ABI, method: 'getAgentId', args: [owner],
55
+ })), { blockTag });
56
+ const registered = new Map(uniqueOwners.map((owner, index) => {
57
+ const agentId = registrations[index]?.[0];
58
+ if (typeof agentId !== 'bigint') {
59
+ throw new Error('Unable to verify staking eligibility: seller registration is unavailable. Retry when the RPC is available.');
60
+ }
61
+ return [owner, agentId];
62
+ }));
63
+ return new Map(ids.map(agentId => {
64
+ const owner = byAgent.get(agentId);
65
+ return [agentId, { owner, stakeable: owner !== null && registered.get(owner) === BigInt(agentId) }];
66
+ }));
67
+ }
68
+ //# sourceMappingURL=stake-eligibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stake-eligibility.js","sourceRoot":"","sources":["../../src/service/stake-eligibility.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,6 @@
1
1
  import { ZeroAddress } from 'ethers';
2
2
  import { toJson } from './json.js';
3
3
  import { IndexerError } from './indexer.js';
4
- async function safe(read, fallback) {
5
- try {
6
- return await read();
7
- }
8
- catch {
9
- return fallback;
10
- }
11
- }
12
4
  /**
13
5
  * Your buyer and seller usage per epoch with network totals. The per-epoch
14
6
  * series comes from the indexer (no per-epoch chain reads); only the
@@ -53,11 +45,11 @@ export async function usage(ctx, options = {}) {
53
45
  }
54
46
  }
55
47
  const [buyerTotal, networkTotal, pointsPolicy, poolWeightPolicy, minimumPower] = await Promise.all([
56
- accounting ? safe(() => accounting.buyerUsageTotal(ctx.address), { points: 0n, weightedPoints: 0n }) : Promise.resolve({ points: 0n, weightedPoints: 0n }),
57
- accounting ? safe(() => accounting.totalUsage(), { buyers: { points: 0n, weightedPoints: 0n }, sellers: { points: 0n, weightedPoints: 0n } }) : Promise.resolve({ buyers: { points: 0n, weightedPoints: 0n }, sellers: { points: 0n, weightedPoints: 0n } }),
58
- accounting ? safe(() => accounting.pointsPolicy(), null) : Promise.resolve(null),
59
- accounting ? safe(() => accounting.poolWeightPolicy(), null) : Promise.resolve(null),
60
- accounting ? safe(() => accounting.minimumAccountedPoolPower(), null) : Promise.resolve(null),
48
+ accounting ? accounting.buyerUsageTotal(ctx.address) : Promise.resolve({ points: 0n, weightedPoints: 0n }),
49
+ accounting ? accounting.totalUsage() : Promise.resolve({ buyers: { points: 0n, weightedPoints: 0n }, sellers: { points: 0n, weightedPoints: 0n } }),
50
+ accounting ? accounting.pointsPolicy() : Promise.resolve(null),
51
+ accounting ? accounting.poolWeightPolicy() : Promise.resolve(null),
52
+ accounting ? accounting.minimumAccountedPoolPower() : Promise.resolve(null),
61
53
  ]);
62
54
  return toJson({
63
55
  currentEpoch: stack.currentEpoch,
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/service/usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/service/usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PoolYield } from '../api-types.js';
2
+ /** Token-denominated pool average, using the same completed epoch for rewards and principal. */
3
+ export declare function poolYield(reward: bigint | null, principal: bigint | null, epoch: number, duration: number, genesis: number, settled: boolean): PoolYield;
@@ -0,0 +1,12 @@
1
+ /** Token-denominated pool average, using the same completed epoch for rewards and principal. */
2
+ export function poolYield(reward, principal, epoch, duration, genesis, settled) {
3
+ const base = { epoch, startsAt: genesis + epoch * duration, endsAt: genesis + (epoch + 1) * duration };
4
+ if (epoch < 0 || duration <= 0 || reward === null || principal === null || principal <= 0n || reward < 0n)
5
+ return { ...base, apr: null, apy: null, status: 'unavailable' };
6
+ const rate = Number(reward * 10n ** 18n / principal) / 1e18;
7
+ const periods = 365 * 86400 / duration;
8
+ const apr = rate * periods * 100;
9
+ const apy = Math.expm1(Math.log1p(rate) * periods) * 100;
10
+ return { ...base, apr: Number.isFinite(apr) ? apr : null, apy: Number.isFinite(apy) ? apy : null, status: settled ? 'settled' : 'estimated' };
11
+ }
12
+ //# sourceMappingURL=yield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yield.js","sourceRoot":"","sources":["../../src/service/yield.ts"],"names":[],"mappings":"AACA,gGAAgG;AAChG,MAAM,UAAU,SAAS,CAAC,MAAqB,EAAE,SAAwB,EAAE,KAAa,EAAE,QAAgB,EAAE,OAAe,EAAE,OAAgB;IAC3I,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC;IACvG,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,IAAI,EAAE,IAAI,MAAM,GAAG,EAAE;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAC3K,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IAC5D,MAAM,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,OAAO,GAAG,GAAG,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC;IACzD,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAChJ,CAAC"}
@@ -1,18 +1,13 @@
1
- /**
2
- * Read-side cache for dashboard views. Public Base RPCs throttle bursts, and
3
- * the failover provider fans a slow call out to every endpoint, so four tabs
4
- * loading at once used to turn into minutes of 429 backoff. Reads are run one
5
- * at a time (each view already batches its own calls), identical concurrent
6
- * requests share one load, and results stay fresh for `ttlMs` unless a job
7
- * invalidates them.
1
+ /** Independent views load concurrently; the shared RPC provider paces chain requests.
2
+ * Identical reads share one promise, and completed values expire or invalidate after actions.
8
3
  */
9
4
  export declare class ViewCache {
10
5
  private readonly ttlMs;
11
6
  private readonly entries;
12
7
  private readonly inflight;
13
- private queue;
8
+ private generation;
14
9
  constructor(ttlMs?: number);
15
- read<T>(key: string, load: () => Promise<T>): Promise<T>;
16
- /** Drop every cached view; in-flight loads finish and are cached as usual. */
10
+ read<T>(key: string, load: () => Promise<T>, ttlMs?: number): Promise<T>;
11
+ /** Old reads may finish, but cannot populate the next wallet's cache. */
17
12
  invalidate(): void;
18
13
  }
@@ -1,38 +1,36 @@
1
1
  const DEFAULT_TTL_MS = 20_000;
2
- /**
3
- * Read-side cache for dashboard views. Public Base RPCs throttle bursts, and
4
- * the failover provider fans a slow call out to every endpoint, so four tabs
5
- * loading at once used to turn into minutes of 429 backoff. Reads are run one
6
- * at a time (each view already batches its own calls), identical concurrent
7
- * requests share one load, and results stay fresh for `ttlMs` unless a job
8
- * invalidates them.
2
+ /** Independent views load concurrently; the shared RPC provider paces chain requests.
3
+ * Identical reads share one promise, and completed values expire or invalidate after actions.
9
4
  */
10
5
  export class ViewCache {
11
6
  ttlMs;
12
7
  entries = new Map();
13
8
  inflight = new Map();
14
- queue = Promise.resolve();
9
+ generation = 0;
15
10
  constructor(ttlMs = DEFAULT_TTL_MS) {
16
11
  this.ttlMs = ttlMs;
17
12
  }
18
- read(key, load) {
13
+ read(key, load, ttlMs = this.ttlMs) {
19
14
  const hit = this.entries.get(key);
20
- if (hit && Date.now() - hit.at < this.ttlMs)
15
+ if (hit && Date.now() - hit.at < ttlMs)
21
16
  return Promise.resolve(hit.value);
22
17
  const running = this.inflight.get(key);
23
18
  if (running)
24
19
  return running;
25
- const task = this.queue.then(load, load);
26
- this.queue = task.catch(() => undefined);
20
+ const generation = this.generation;
21
+ const task = Promise.resolve().then(load);
27
22
  this.inflight.set(key, task);
28
23
  // Settle in the first continuation so a caller awaiting `task` never sees a stale in-flight entry.
29
24
  const settle = () => { if (this.inflight.get(key) === task)
30
25
  this.inflight.delete(key); };
31
- task.then((value) => { this.entries.set(key, { at: Date.now(), value }); settle(); }, settle);
26
+ task.then((value) => { if (generation === this.generation)
27
+ this.entries.set(key, { at: Date.now(), value }); settle(); }, settle);
32
28
  return task;
33
29
  }
34
- /** Drop every cached view; in-flight loads finish and are cached as usual. */
30
+ /** Old reads may finish, but cannot populate the next wallet's cache. */
35
31
  invalidate() {
32
+ this.generation++;
33
+ this.inflight.clear();
36
34
  this.entries.clear();
37
35
  }
38
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"view-cache.js","sourceRoot":"","sources":["../src/view-cache.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,OAAO,SAAS;IAKS;IAJZ,OAAO,GAAG,IAAI,GAAG,EAA0C,CAAC;IAC5D,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IACxD,KAAK,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEpD,YAA6B,QAAQ,cAAc;QAAtB,UAAK,GAAL,KAAK,CAAiB;IAAG,CAAC;IAEvD,IAAI,CAAI,GAAW,EAAE,IAAsB;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAU,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO;YAAE,OAAO,OAAqB,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,mGAAmG;QACnG,MAAM,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,UAAU;QACR,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"view-cache.js","sourceRoot":"","sources":["../src/view-cache.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B;;GAEG;AACH,MAAM,OAAO,SAAS;IAKS;IAJZ,OAAO,GAAG,IAAI,GAAG,EAA0C,CAAC;IAC5D,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IACxD,UAAU,GAAG,CAAC,CAAC;IAEvB,YAA6B,QAAQ,cAAc;QAAtB,UAAK,GAAL,KAAK,CAAiB;IAAG,CAAC;IAEvD,IAAI,CAAI,GAAW,EAAE,IAAsB,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,KAAK;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAU,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO;YAAE,OAAO,OAAqB,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,mGAAmG;QACnG,MAAM,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAClI,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,UAAU;QACR,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ export declare const WALLET_ERRORS: {
2
+ rejected: string;
3
+ disconnected: string;
4
+ network: string;
5
+ reverted: string;
6
+ unknown: string;
7
+ };
8
+ export declare function walletFailure(error: unknown): string;
9
+ export declare function safeWalletFailure(message: string): string;
@@ -0,0 +1,32 @@
1
+ export const WALLET_ERRORS = {
2
+ rejected: 'You rejected the wallet request. This request was not submitted.',
3
+ disconnected: 'The wallet disconnected or no longer permits this request. Reconnect before retrying.',
4
+ network: 'The wallet is on the wrong network. Switch to the dashboard network before retrying.',
5
+ reverted: 'The contract rejected this transaction during wallet simulation. Refresh the position and review its action restrictions.',
6
+ unknown: 'The wallet could not complete the request. Check its activity before retrying; the submission status is unknown.',
7
+ };
8
+ export function walletFailure(error) {
9
+ const seen = new Set();
10
+ let current = error;
11
+ let fallback = WALLET_ERRORS.unknown;
12
+ while (current && typeof current === 'object' && !seen.has(current)) {
13
+ seen.add(current);
14
+ const detail = current;
15
+ if (detail.code === 4001 || detail.name === 'UserRejectedRequestError')
16
+ return WALLET_ERRORS.rejected;
17
+ if (detail.code === 4100 || detail.code === 4900 || detail.name === 'ProviderDisconnectedError' || detail.name === 'ConnectorNotConnectedError')
18
+ return WALLET_ERRORS.disconnected;
19
+ if (detail.code === 4901)
20
+ return WALLET_ERRORS.network;
21
+ if (detail.name === 'ChainMismatchError' || detail.name === 'SwitchChainError' || detail.name === 'ChainDisconnectedError')
22
+ fallback = WALLET_ERRORS.network;
23
+ if (detail.name === 'ContractFunctionRevertedError' || detail.name === 'ExecutionRevertedError')
24
+ fallback = WALLET_ERRORS.reverted;
25
+ current = detail.cause;
26
+ }
27
+ return fallback;
28
+ }
29
+ export function safeWalletFailure(message) {
30
+ return Object.values(WALLET_ERRORS).includes(message) ? message : WALLET_ERRORS.unknown;
31
+ }
32
+ //# sourceMappingURL=wallet-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-errors.js","sourceRoot":"","sources":["../src/wallet-errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,kEAAkE;IAC5E,YAAY,EAAE,uFAAuF;IACrG,OAAO,EAAE,sFAAsF;IAC/F,QAAQ,EAAE,2HAA2H;IACrI,OAAO,EAAE,kHAAkH;CAC5H,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC;IACrC,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,MAAM,MAAM,GAAG,OAA8D,CAAC;QAC9E,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,0BAA0B;YAAE,OAAO,aAAa,CAAC,QAAQ,CAAC;QACtG,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,2BAA2B,IAAI,MAAM,CAAC,IAAI,KAAK,4BAA4B;YAAE,OAAO,aAAa,CAAC,YAAY,CAAC;QACnL,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,aAAa,CAAC,OAAO,CAAC;QACvD,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAwB;YAAE,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC;QAC7J,IAAI,MAAM,CAAC,IAAI,KAAK,+BAA+B,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAwB;YAAE,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;QACnI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;AAC1F,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antseed/ants",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "ANTS staking dashboard and service layer for the AntSeed CLI",
5
5
  "files": [
6
6
  "dist"
@@ -16,7 +16,7 @@
16
16
  "@fastify/static": "^9.0.0",
17
17
  "ethers": "^6.13.0",
18
18
  "fastify": "^5.7.4",
19
- "@antseed/node": "0.2.122"
19
+ "@antseed/node": "0.2.124"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/node": "^20.11.0",
@@ -29,7 +29,12 @@
29
29
  "sass": "^1.97.3",
30
30
  "typescript": "^5.6.0",
31
31
  "vite": "^6.0.0",
32
- "vitest": "^2.1.9"
32
+ "vitest": "^2.1.9",
33
+ "@rainbow-me/rainbowkit": "^2.2.10",
34
+ "@tanstack/react-query": "^5.94.5",
35
+ "wagmi": "^2.14.0",
36
+ "viem": "^2.47.6",
37
+ "@antseed/ui": "0.0.0"
33
38
  },
34
39
  "scripts": {
35
40
  "build": "npm run build:server && npm run build:web",