@antseed/ants 0.1.5 → 0.1.6

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 +13 -2
  183. package/dist/service/context.js +35 -4
  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 +3 -0
  228. package/dist/service/rpc-provider.js +32 -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 +50 -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
@@ -1,10 +1,17 @@
1
+ import { closedPositionIds } from './positions.js';
2
+ import { poolYield } from './yield.js';
1
3
  import { Interface, ZeroAddress } from 'ethers';
2
4
  import { multicallRead } from '@antseed/node/payments';
3
5
  import { toJson } from './json.js';
4
6
  import { explorerSellers } from './explorer.js';
5
7
  import { mergePools, sortPools } from './pool-merge.js';
6
8
  import { IndexerError } from './indexer.js';
7
- const VOLUME_EPOCHS = 3;
9
+ import { stakeEligibility } from './stake-eligibility.js';
10
+ import { displayData } from './display-snapshot.js';
11
+ import { liveWalletPositions } from './indexed-wallet.js';
12
+ const VOLUME_EPOCHS = 9;
13
+ /** Epochs of per-pool history returned by the single-pool endpoint for charts. */
14
+ export const HISTORY_EPOCHS = 16;
8
15
  async function safe(read, fallback) {
9
16
  try {
10
17
  return await read();
@@ -20,13 +27,14 @@ function per1k(reward, power) {
20
27
  return power === 0n ? null : (reward * 1000n * 10n ** 18n / power).toString();
21
28
  }
22
29
  const POOLS_IFACE = new Interface([
30
+ 'function minStakeEpochs() view returns (uint256)',
31
+ 'function MAX_STAKE_EPOCHS() view returns (uint256)',
23
32
  'function poolActiveStakeAtEpoch(uint256 agentId, uint256 epoch) view returns (uint256)',
24
33
  'function poolWeightAtEpoch(uint256 agentId, uint256 epoch) view returns (uint256)',
25
34
  'function currentPoolSecurityShareBps(uint256 agentId) returns (uint256)',
26
35
  'function stakerAgentActiveStake(address staker, uint256 agentId) view returns (uint256)',
27
36
  'function positionWeightAtEpoch(uint256 positionId, uint256 epoch) view returns (uint256)',
28
37
  ]);
29
- const REGISTRY_IFACE = new Interface(['function agentSeller(uint256 agentId) view returns (address)']);
30
38
  const ACCOUNTING_IFACE = new Interface([
31
39
  'function agentEpochUsage(uint256 epoch, uint256 agentId) view returns (tuple(uint256 points, uint256 weightedPoints))',
32
40
  'function totalWeightedPoolPointsByEpoch(uint256 epoch) view returns (uint256)',
@@ -37,10 +45,6 @@ const REWARDS_IFACE = new Interface([
37
45
  'function poolEpochEmissions(uint256 epoch, uint256 agentId) view returns (bool, uint256)',
38
46
  'function stakerEpochBudget(uint256 epoch) view returns (uint256)',
39
47
  ]);
40
- const LEGACY_IFACE = new Interface([
41
- 'function userSellerPoints(address account, uint256 epoch) view returns (uint256)',
42
- 'function epochTotalSellerPoints(uint256 epoch) view returns (uint256)',
43
- ]);
44
48
  /** Collects multicall requests and hands back typed readers once the batch has run. */
45
49
  class Batch {
46
50
  requests = [];
@@ -60,81 +64,99 @@ const big = (read, index = 0) => {
60
64
  const value = read()?.[index];
61
65
  return typeof value === 'bigint' ? value : 0n;
62
66
  };
63
- function volumeCall(ctx, stack, batch, epoch, seller) {
64
- const effective = stack.effectiveEpoch ?? Number.MAX_SAFE_INTEGER;
65
- const recognized = stack.phase === 'active' && epoch >= effective;
66
- if (recognized) {
67
- return seller
68
- ? batch.add(ctx.chain.usageAccountingAddress, ACCOUNTING_IFACE, 'sellerPointsByEpoch', [epoch, seller])
69
- : batch.add(ctx.chain.usageAccountingAddress, ACCOUNTING_IFACE, 'totalSellerPointsByEpoch', [epoch]);
70
- }
71
- return seller
72
- ? batch.add(stack.legacyEmissions, LEGACY_IFACE, 'userSellerPoints', [seller, epoch])
73
- : batch.add(stack.legacyEmissions, LEGACY_IFACE, 'epochTotalSellerPoints', [epoch]);
67
+ function totalPending(own) {
68
+ return [...own.values()].reduce((sum, entry) => sum + entry.pending, 0n);
74
69
  }
75
- async function poolContext(ctx) {
70
+ async function poolContext(ctx, indexed) {
76
71
  const stack = await ctx.stack();
77
72
  const pools = ctx.requirePools();
78
73
  const poolRewards = ctx.poolRewards();
79
74
  const accounting = ctx.usageAccounting();
80
75
  const epoch = stack.currentEpoch;
76
+ const display = await displayData(ctx, stack);
77
+ let live;
78
+ if (ctx.address !== ZeroAddress && ctx.indexer())
79
+ live = await liveWalletPositions(ctx, epoch);
80
+ const current = display.snapshot?.epochs.find(row => row.epoch === epoch) ?? (display.source.error ? null : indexed?.currentEpoch === epoch && indexed.network.current?.epoch === epoch && indexed.network.current.complete !== false ? indexed.network.current : null);
81
+ const last = display.snapshot?.epochs.find(row => row.epoch === epoch - 1) ?? (display.source.error ? null : indexed?.currentEpoch === epoch && indexed.network.last?.epoch === epoch - 1 && indexed.network.last.complete !== false ? indexed.network.last : null);
81
82
  const epochs = Array.from({ length: VOLUME_EPOCHS }, (_, index) => epoch - index).filter((value) => value >= 0);
82
83
  const [totalPowerWeight, stakerBudget, totalWeightedPoolPoints, lastStakerBudget, lastTotalWeightedPoolPoints, explorer, own] = await Promise.all([
83
- safe(() => pools.totalPowerWeightAtEpoch(epoch), 0n),
84
- poolRewards ? safe(() => poolRewards.stakerEpochBudget(epoch), 0n) : Promise.resolve(0n),
85
- accounting ? safe(() => accounting.totalWeightedPoolPointsByEpoch(epoch), 0n) : Promise.resolve(0n),
86
- poolRewards && epoch > 0 ? safe(() => poolRewards.stakerEpochBudget(epoch - 1), 0n) : Promise.resolve(0n),
87
- accounting && epoch > 0 ? safe(() => accounting.totalWeightedPoolPointsByEpoch(epoch - 1), 0n) : Promise.resolve(0n),
84
+ current ? Promise.resolve(BigInt(current.totalPowerWeight)) : safe(() => pools.totalPowerWeightAtEpoch(epoch), 0n),
85
+ current ? Promise.resolve(BigInt(current.stakerBudget)) : poolRewards ? safe(() => poolRewards.stakerEpochBudget(epoch), 0n) : Promise.resolve(0n),
86
+ current ? Promise.resolve(BigInt(current.totalWeightedPoolPoints)) : accounting ? safe(() => accounting.totalWeightedPoolPointsByEpoch(epoch), 0n) : Promise.resolve(0n),
87
+ last ? Promise.resolve(BigInt(last.stakerBudget)) : !ctx.indexer()?.displaySnapshot && poolRewards && epoch > 0 ? safe(() => poolRewards.stakerEpochBudget(epoch - 1), 0n) : Promise.resolve(0n),
88
+ last ? Promise.resolve(BigInt(last.totalWeightedPoolPoints)) : !ctx.indexer()?.displaySnapshot && accounting && epoch > 0 ? safe(() => accounting.totalWeightedPoolPointsByEpoch(epoch - 1), 0n) : Promise.resolve(0n),
88
89
  explorerSellers(ctx.chain.explorerApiUrl),
89
- pools.positionsBatch(await pools.allStakerPositionIds(ctx.address)),
90
+ (async () => {
91
+ if (ctx.address === ZeroAddress || live)
92
+ return [];
93
+ const [open, closed] = await Promise.all([pools.allStakerPositionIds(ctx.address), closedPositionIds(ctx)]);
94
+ return pools.positionsBatch([...new Set([...open, ...closed.ids])]);
95
+ })(),
90
96
  ]);
91
- const ownPositions = new Map();
92
- for (const position of own) {
93
- if (position.withdrawn || position.closedAtEpoch !== 0)
94
- continue;
95
- ownPositions.set(position.agentId, [...(ownPositions.get(position.agentId) ?? []), position.id]);
97
+ // A moved/split source keeps its power until its effective epoch, so it still counts as open here.
98
+ const openRows = own.filter((position) => position.owner.toLowerCase() === ctx.address.toLowerCase() && !position.withdrawn && (position.closedAtEpoch === 0 || position.closedAtEpoch > epoch));
99
+ const [totalActiveStake, ownSummary] = await Promise.all([
100
+ current ? Promise.resolve(BigInt(current.totalActiveStake)) : safe(() => pools.totalActiveStakeAtEpoch(epoch), 0n),
101
+ live ? Promise.resolve(ownPoolsFromLive(live)) : ownPools(ctx, openRows, epoch),
102
+ ]);
103
+ return { stack, display, totalActiveStake, epochs, totalPowerWeight, stakerBudget, totalWeightedPoolPoints, lastStakerBudget, lastTotalWeightedPoolPoints, explorer, own: ownSummary };
104
+ }
105
+ function ownPoolsFromLive(live) {
106
+ return new Map(live.summary.map(row => [row.agentId, { positionIds: row.positionIds, power: BigInt(row.power), stake: BigInt(row.activeStake), pending: BigInt(row.pendingStake) }]));
107
+ }
108
+ export async function ownPools(ctx, rows, epoch) {
109
+ const power = new Map();
110
+ if (rows.length > 0) {
111
+ const poolsAddress = ctx.requirePools().contractAddress;
112
+ const batch = new Batch();
113
+ const reads = rows.map((position) => batch.add(poolsAddress, POOLS_IFACE, 'positionWeightAtEpoch', [position.id, epoch]));
114
+ await batch.run(ctx);
115
+ rows.forEach((position, index) => power.set(position.id, big(reads[index])));
96
116
  }
97
- return { stack, epochs, totalPowerWeight, stakerBudget, totalWeightedPoolPoints, lastStakerBudget, lastTotalWeightedPoolPoints, explorer, ownPositions };
117
+ const own = new Map();
118
+ for (const position of rows) {
119
+ const entry = own.get(position.agentId) ?? { positionIds: [], power: 0n, stake: 0n, pending: 0n };
120
+ entry.positionIds.push(position.id);
121
+ entry.power += power.get(position.id) ?? 0n;
122
+ if (position.stakeStartEpoch <= epoch)
123
+ entry.stake += position.amount;
124
+ else if (position.closedAtEpoch === 0)
125
+ entry.pending += position.amount;
126
+ own.set(position.agentId, entry);
127
+ }
128
+ return own;
98
129
  }
99
- /**
100
- * Describe many pools in two multicall rounds. Round one is cheap for every
101
- * candidate (seller binding + current power); round two reads the full
102
- * analytics only for agents with a pool, a binding, or your stake, and just
103
- * the settled volume for the rest (explorer sellers without a pool yet).
104
- */
105
130
  async function describePools(ctx, agents, context) {
106
131
  const poolsAddress = ctx.requirePools().contractAddress;
107
132
  const epoch = context.stack.currentEpoch;
108
133
  const first = new Batch();
109
- const firstReads = agents.map(([agentId, bound]) => ({
110
- seller: bound ? null : first.add(ctx.chain.sellerRegistryAddress, REGISTRY_IFACE, 'agentSeller', [agentId]),
134
+ const firstReads = agents.map(([agentId]) => ({
111
135
  weight: first.add(poolsAddress, POOLS_IFACE, 'poolWeightAtEpoch', [agentId, epoch]),
112
136
  }));
113
- await first.run(ctx);
114
- const resolved = agents.map(([agentId, bound], index) => {
137
+ const [eligibility] = await Promise.all([stakeEligibility(ctx, agents.map(([agentId]) => agentId)), first.run(ctx)]);
138
+ const resolved = agents.map(([agentId], index) => {
115
139
  const read = firstReads[index];
116
- const registrySeller = bound ?? (read.seller ? read.seller()?.[0] ?? ZeroAddress : ZeroAddress);
117
- const stakeable = !!registrySeller && registrySeller !== ZeroAddress;
118
- const seller = stakeable ? registrySeller : context.explorer.byAgent.get(agentId) ?? null;
140
+ const registration = eligibility.get(agentId);
141
+ const stakeable = registration.stakeable;
142
+ const seller = stakeable ? registration.owner : context.explorer.byAgent.get(agentId) ?? null;
119
143
  const weight = big(read.weight);
120
- const yourIds = context.ownPositions.get(agentId) ?? [];
121
- return { agentId, stakeable, seller, weight, yourIds, full: weight !== 0n || stakeable || yourIds.length > 0 };
144
+ const mine = context.own.get(agentId);
145
+ return { agentId, stakeable, seller, weight, mine, full: weight !== 0n || stakeable || mine !== undefined };
122
146
  });
123
147
  const none = () => null;
148
+ const readHistory = !ctx.indexer()?.displaySnapshot && epoch > 0;
124
149
  const batch = new Batch();
125
- const reads = resolved.map(({ agentId, seller, yourIds, full }) => ({
150
+ const reads = resolved.map(({ agentId, full }) => ({
126
151
  activeStake: full ? batch.add(poolsAddress, POOLS_IFACE, 'poolActiveStakeAtEpoch', [agentId, epoch]) : none,
127
- lastWeight: full && epoch > 0 ? batch.add(poolsAddress, POOLS_IFACE, 'poolWeightAtEpoch', [agentId, epoch - 1]) : none,
152
+ lastWeight: full && readHistory ? batch.add(poolsAddress, POOLS_IFACE, 'poolWeightAtEpoch', [agentId, epoch - 1]) : none,
128
153
  security: full ? batch.add(poolsAddress, POOLS_IFACE, 'currentPoolSecurityShareBps', [agentId]) : none,
129
154
  usage: full ? batch.add(ctx.chain.usageAccountingAddress, ACCOUNTING_IFACE, 'agentEpochUsage', [epoch, agentId]) : none,
130
- lastUsage: full && epoch > 0 ? batch.add(ctx.chain.usageAccountingAddress, ACCOUNTING_IFACE, 'agentEpochUsage', [epoch - 1, agentId]) : none,
131
- lastEmission: full && epoch > 0 ? batch.add(ctx.chain.sellerPoolsRewardsAddress, REWARDS_IFACE, 'poolEpochEmissions', [epoch - 1, agentId]) : none,
132
- yourStake: yourIds.length > 0 ? batch.add(poolsAddress, POOLS_IFACE, 'stakerAgentActiveStake', [ctx.address, agentId]) : none,
133
- yourWeights: yourIds.map((id) => batch.add(poolsAddress, POOLS_IFACE, 'positionWeightAtEpoch', [id, epoch])),
134
- volumes: context.epochs.map((value) => volumeCall(ctx, context.stack, batch, value, seller)),
155
+ lastUsage: full && readHistory ? batch.add(ctx.chain.usageAccountingAddress, ACCOUNTING_IFACE, 'agentEpochUsage', [epoch - 1, agentId]) : none,
156
+ lastEmission: full && readHistory ? batch.add(ctx.chain.sellerPoolsRewardsAddress, REWARDS_IFACE, 'poolEpochEmissions', [epoch - 1, agentId]) : none,
135
157
  }));
136
158
  await batch.run(ctx);
137
- return resolved.map(({ agentId, stakeable, seller, weight, yourIds }, index) => {
159
+ return resolved.map(({ agentId, stakeable, seller, weight, mine }, index) => {
138
160
  const read = reads[index];
139
161
  const lastWeight = big(read.lastWeight);
140
162
  const usage = read.usage()?.[0];
@@ -150,7 +172,7 @@ async function describePools(ctx, agents, context) {
150
172
  const emissionAmount = settled
151
173
  ? emission?.[1]
152
174
  : context.lastTotalWeightedPoolPoints > 0n ? context.lastStakerBudget * lastWeightedPoints / context.lastTotalWeightedPoolPoints : 0n;
153
- const yourPower = read.yourWeights.reduce((sum, weightRead) => sum + big(weightRead), 0n);
175
+ const yourPower = mine?.power ?? 0n;
154
176
  const projected = context.totalWeightedPoolPoints > 0n && weightedPoints > 0n
155
177
  ? context.stakerBudget * weightedPoints / context.totalWeightedPoolPoints
156
178
  : 0n;
@@ -165,7 +187,8 @@ async function describePools(ctx, agents, context) {
165
187
  weight: weight.toString(),
166
188
  powerShareBps: bps(weight, context.totalPowerWeight),
167
189
  securityShareBps: Number(big(read.security)),
168
- volumes: context.epochs.map((value, position) => ({ epoch: value, usdc: big(read.volumes[position]).toString() })),
190
+ volumes: [],
191
+ volumeStatus: 'unavailable',
169
192
  usagePoints: points.toString(),
170
193
  weightedUsagePoints: weightedPoints.toString(),
171
194
  lastEpochUsagePoints: lastPoints.toString(),
@@ -173,33 +196,14 @@ async function describePools(ctx, agents, context) {
173
196
  lastEpochEmissionSettled: settled,
174
197
  lastEpochRewardPer1kPower: emissionAmount > 0n ? per1k(emissionAmount, lastWeight) : null,
175
198
  projectedRewardPer1kPower: projected > 0n ? per1k(projected, weight) : null,
176
- yourStake: big(read.yourStake).toString(),
199
+ yourStake: (mine?.stake ?? 0n).toString(),
200
+ yourPendingStake: (mine?.pending ?? 0n).toString(),
177
201
  yourPower: yourPower.toString(),
178
202
  yourPoolShareBps: bps(yourPower, weight),
179
- yourPositionIds: yourIds,
203
+ yourPositionIds: mine?.positionIds ?? [],
180
204
  };
181
205
  });
182
206
  }
183
- async function networkVolumes(ctx, stack, epochs) {
184
- const batch = new Batch();
185
- const reads = epochs.map((epoch) => volumeCall(ctx, stack, batch, epoch, null));
186
- await batch.run(ctx);
187
- return epochs.map((epoch, index) => ({ epoch, usdc: big(reads[index]).toString() }));
188
- }
189
- /** Your open positions grouped by agent, with each position's live power this epoch (a bounded read: only your ids). */
190
- async function ownPools(ctx, context) {
191
- const poolsAddress = ctx.requirePools().contractAddress;
192
- const epoch = context.stack.currentEpoch;
193
- const batch = new Batch();
194
- const reads = [...context.ownPositions.entries()].map(([agentId, ids]) => ({
195
- agentId,
196
- ids,
197
- stake: batch.add(poolsAddress, POOLS_IFACE, 'stakerAgentActiveStake', [ctx.address, agentId]),
198
- weights: ids.map((id) => batch.add(poolsAddress, POOLS_IFACE, 'positionWeightAtEpoch', [id, epoch])),
199
- }));
200
- await batch.run(ctx);
201
- return new Map(reads.map((read) => [read.agentId, { positionIds: read.ids, stake: big(read.stake), power: read.weights.reduce((sum, weight) => sum + big(weight), 0n) }]));
202
- }
203
207
  /**
204
208
  * Pool comparison. Statistics for every pool come from the indexer; the
205
209
  * chain is read only for this wallet's own positions. Without an indexer
@@ -207,8 +211,17 @@ async function ownPools(ctx, context) {
207
211
  * described live, and `source` says so.
208
212
  */
209
213
  export async function poolsView(ctx) {
210
- const context = await poolContext(ctx);
211
214
  const indexer = ctx.indexer();
215
+ let indexerError = null;
216
+ // Start public data immediately; do not put it behind wallet/reward RPC work.
217
+ const indexed = indexer ? await indexer.pools().catch(error => {
218
+ if (error instanceof IndexerError) {
219
+ indexerError = error.message;
220
+ return null;
221
+ }
222
+ throw error;
223
+ }) : null;
224
+ const context = await poolContext(ctx, indexed ?? undefined);
212
225
  const epochs = context.epochs;
213
226
  const base = {
214
227
  currentEpoch: context.stack.currentEpoch,
@@ -216,22 +229,28 @@ export async function poolsView(ctx) {
216
229
  stakerBudget: context.stakerBudget.toString(),
217
230
  explorer: ctx.chain.explorerApiUrl ?? null,
218
231
  };
219
- if (indexer) {
232
+ if (indexer && indexed) {
220
233
  try {
221
- const [indexed, sellerEpochs, metrics, own] = await Promise.all([indexer.pools(), indexer.sellerEpochs(VOLUME_EPOCHS), indexer.epochMetrics(), ownPools(ctx, context)]);
222
- const views = mergePools({ indexed, explorer: context.explorer, sellerEpochs, epochs, own });
223
- const totalPower = BigInt(indexed.network.current?.totalPowerWeight ?? '0') || context.totalPowerWeight;
224
- const yourTotalPower = [...own.values()].reduce((sum, entry) => sum + entry.power, 0n);
234
+ const [sellerEpochs, metrics] = await Promise.all([indexer.sellerEpochs(VOLUME_EPOCHS), indexer.epochMetrics()]);
235
+ const views = mergePools({ indexed, explorer: context.explorer, sellerEpochs, epochs, own: context.own });
236
+ await verifyStakeability(ctx, views);
237
+ for (const view of views)
238
+ setVolumeStatus(view, indexed.currentEpoch, context.stack.currentEpoch);
239
+ await enrichYields(ctx, context, views, indexed);
240
+ const totalPower = context.totalPowerWeight;
241
+ const yourTotalPower = [...context.own.values()].reduce((sum, entry) => sum + entry.power, 0n);
225
242
  return toJson({
226
243
  ...base,
227
- totalActiveStake: indexed.network.current?.totalActiveStake ?? '0',
244
+ totalActiveStake: context.totalActiveStake.toString(),
228
245
  totalPowerWeight: totalPower.toString(),
229
- networkVolumes: epochs.map((epoch) => ({ epoch, usdc: metrics.find((row) => row.epoch === epoch)?.volumeUsdc ?? '0' })),
246
+ networkVolumes: metrics.filter(row => epochs.includes(row.epoch)).map((row) => ({ epoch: row.epoch, usdc: row.volumeUsdc })),
230
247
  yourTotalPower: yourTotalPower.toString(),
231
248
  yourNetworkShareBps: bps(yourTotalPower, totalPower),
249
+ yourPendingStake: totalPending(context.own).toString(),
232
250
  source: 'indexer',
233
- sourceError: null,
234
- pools: views,
251
+ sourceError: context.display.source.error ?? null,
252
+ displaySource: context.display.source,
253
+ pools: sortPools(views),
235
254
  });
236
255
  }
237
256
  catch (error) {
@@ -240,26 +259,25 @@ export async function poolsView(ctx) {
240
259
  return chainOnlyPools(ctx, context, base, error.message);
241
260
  }
242
261
  }
243
- return chainOnlyPools(ctx, context, base, null);
262
+ return chainOnlyPools(ctx, context, base, indexerError);
244
263
  }
245
264
  async function chainOnlyPools(ctx, context, base, sourceError) {
246
- const pools = ctx.requirePools();
247
- const agents = [...context.ownPositions.keys()].map((agentId) => [agentId, null]);
265
+ const agents = [...context.own.keys()].map((agentId) => [agentId, null]);
248
266
  const views = sortPools(await describePools(ctx, agents, context));
249
- const [totalActiveStake, network] = await Promise.all([
250
- safe(() => pools.totalActiveStakeAtEpoch(context.stack.currentEpoch), 0n),
251
- networkVolumes(ctx, context.stack, context.epochs),
252
- ]);
267
+ await enrichYields(ctx, context, views);
268
+ const totalActiveStake = context.totalActiveStake;
253
269
  const yourTotalPower = views.reduce((sum, pool) => sum + BigInt(pool.yourPower), 0n);
254
270
  return toJson({
255
271
  ...base,
256
272
  totalActiveStake: totalActiveStake.toString(),
257
273
  totalPowerWeight: context.totalPowerWeight.toString(),
258
- networkVolumes: network,
274
+ networkVolumes: [],
259
275
  yourTotalPower: yourTotalPower.toString(),
260
276
  yourNetworkShareBps: bps(yourTotalPower, context.totalPowerWeight),
277
+ yourPendingStake: totalPending(context.own).toString(),
261
278
  source: 'chain',
262
279
  sourceError,
280
+ displaySource: context.display.source,
263
281
  pools: views,
264
282
  });
265
283
  }
@@ -268,13 +286,30 @@ export async function singlePool(ctx, agentId) {
268
286
  const indexer = ctx.indexer();
269
287
  if (indexer) {
270
288
  try {
271
- const [indexed, sellerEpochs, own] = await Promise.all([indexer.pools(), indexer.sellerEpochs(VOLUME_EPOCHS), ownPools(ctx, context)]);
272
- const ownHere = new Map([...own.entries()].filter(([id]) => id === agentId));
289
+ const [indexed, sellerEpochs] = await Promise.all([indexer.pools(), indexer.sellerEpochs(VOLUME_EPOCHS)]);
290
+ const ownHere = new Map([...context.own.entries()].filter(([id]) => id === agentId));
273
291
  const explorer = { byAddress: context.explorer.byAddress, byAgent: new Map([...context.explorer.byAgent.entries()].filter(([id]) => id === agentId)) };
274
292
  const merged = mergePools({ indexed: { ...indexed, pools: indexed.pools.filter((pool) => pool.agentId === agentId) }, explorer, sellerEpochs, epochs: context.epochs, own: ownHere });
275
293
  const view = merged.find((pool) => pool.agentId === agentId);
276
- if (view)
294
+ if (view) {
295
+ await verifyStakeability(ctx, [view]);
296
+ setVolumeStatus(view, indexed.currentEpoch, context.stack.currentEpoch);
297
+ await enrichYields(ctx, context, [view], indexed);
298
+ const detail = indexer.displaySnapshot ? await indexer.pool(agentId, HISTORY_EPOCHS).catch(() => null) : null;
299
+ if (detail) {
300
+ view.stakers = detail.stakers;
301
+ if (detail.openPositions != null)
302
+ view.openPositions = detail.openPositions;
303
+ if (detail.pendingStake != null)
304
+ view.pendingStake = detail.pendingStake;
305
+ if (detail.activeStake != null)
306
+ view.activeStake = detail.activeStake;
307
+ const indexedPool = indexed.pools.find((pool) => pool.agentId === agentId);
308
+ view.history = poolHistory(detail.epochs, context.stack.currentEpoch, indexedPool && indexed.currentEpoch === context.stack.currentEpoch
309
+ ? { last: indexedPool.lastEmission, current: indexedPool.projectedEmission } : undefined);
310
+ }
277
311
  return toJson({ ...view, currentEpoch: context.stack.currentEpoch });
312
+ }
278
313
  }
279
314
  catch (error) {
280
315
  if (!(error instanceof IndexerError))
@@ -282,6 +317,130 @@ export async function singlePool(ctx, agentId) {
282
317
  }
283
318
  }
284
319
  const [view] = await describePools(ctx, [[agentId, null]], context);
320
+ if (view)
321
+ await enrichYields(ctx, context, [view]);
285
322
  return toJson({ ...view, currentEpoch: context.stack.currentEpoch });
286
323
  }
324
+ /**
325
+ * Oldest-first epoch rows up to the current epoch; the current epoch is a partial, unsettled point.
326
+ * The indexer only records an emission once a claim settles it, so the previous epoch falls back to
327
+ * the pool's running estimate and the current epoch to its projection until then.
328
+ */
329
+ export function poolHistory(epochs, currentEpoch, estimates) {
330
+ return (epochs ?? [])
331
+ .filter((row) => row.epoch <= currentEpoch)
332
+ .sort((a, b) => a.epoch - b.epoch)
333
+ .map((row) => {
334
+ const settled = row.settled && row.epoch < currentEpoch;
335
+ let emission = row.settledEmission;
336
+ if (!settled && estimates && !/^[1-9]/.test(emission)) {
337
+ if (row.epoch === currentEpoch - 1)
338
+ emission = estimates.last;
339
+ else if (row.epoch === currentEpoch)
340
+ emission = estimates.current;
341
+ }
342
+ return { epoch: row.epoch, activeStake: row.activeStake, weight: row.weight, volumeUsdc: row.volumeUsdc, requests: row.requests, emission, settled };
343
+ });
344
+ }
345
+ function setVolumeStatus(view, indexedEpoch, currentEpoch) {
346
+ if (indexedEpoch !== currentEpoch) {
347
+ view.volumes = [];
348
+ view.volumeStatus = 'stale';
349
+ }
350
+ else
351
+ view.volumeStatus = view.volumes.length ? 'available' : 'unavailable';
352
+ }
353
+ async function verifyStakeability(ctx, views) {
354
+ const eligibility = await stakeEligibility(ctx, views.map(view => view.agentId));
355
+ for (const view of views)
356
+ view.stakeable = eligibility.get(view.agentId).stakeable;
357
+ }
358
+ /** Read historical principal and emission inputs together; failed reads remain unknown. */
359
+ async function enrichYields(ctx, context, views, indexed) {
360
+ if (ctx.indexer()?.displaySnapshot) {
361
+ await indexedYields(ctx, context, views);
362
+ return;
363
+ }
364
+ const epoch = context.stack.currentEpoch - 1;
365
+ const batch = new Batch();
366
+ const minLock = batch.add(ctx.chain.sellerPoolsAddress, POOLS_IFACE, 'minStakeEpochs', []);
367
+ const maxLock = batch.add(ctx.chain.sellerPoolsAddress, POOLS_IFACE, 'MAX_STAKE_EPOCHS', []);
368
+ const budget = batch.add(ctx.chain.sellerPoolsRewardsAddress, REWARDS_IFACE, 'stakerEpochBudget', [Math.max(0, epoch)]);
369
+ const totalPoints = batch.add(ctx.chain.usageAccountingAddress, ACCOUNTING_IFACE, 'totalWeightedPoolPointsByEpoch', [Math.max(0, epoch)]);
370
+ const historical = new Map(indexed?.currentEpoch === context.stack.currentEpoch
371
+ ? indexed.pools.flatMap(p => p.historicalYield ? [[p.agentId, p.historicalYield]] : []) : []);
372
+ // The seller directory includes providers without a staking pool. Their yield is
373
+ // unavailable; querying historical contracts for each of them dominates cold loads.
374
+ const candidates = views.filter(view => view.hasPool || view.yourPositionIds.length > 0 || BigInt(historical.get(view.agentId)?.power ?? '0') > 0n);
375
+ const reads = candidates.map(view => ({
376
+ power: historical.has(view.agentId) ? () => [BigInt(historical.get(view.agentId).power)] : batch.add(ctx.chain.sellerPoolsAddress, POOLS_IFACE, 'poolWeightAtEpoch', [view.agentId, Math.max(0, epoch)]),
377
+ principal: batch.add(ctx.chain.sellerPoolsAddress, POOLS_IFACE, 'poolActiveStakeAtEpoch', [view.agentId, Math.max(0, epoch)]),
378
+ emission: historical.get(view.agentId)?.settled ? () => [true, BigInt(historical.get(view.agentId).reward)] : batch.add(ctx.chain.sellerPoolsRewardsAddress, REWARDS_IFACE, 'poolEpochEmissions', [Math.max(0, epoch), view.agentId]),
379
+ points: batch.add(ctx.chain.usageAccountingAddress, ACCOUNTING_IFACE, 'agentEpochUsage', [Math.max(0, epoch), view.agentId]),
380
+ }));
381
+ await batch.run(ctx);
382
+ candidates.forEach((view, i) => {
383
+ const read = reads[i];
384
+ const emission = read.emission(), principal = read.principal()?.[0];
385
+ let reward = emission?.[0] === true && typeof emission[1] === 'bigint' ? emission[1] : null;
386
+ const b = budget()?.[0], total = totalPoints()?.[0];
387
+ const points = read.points()?.[0]?.weightedPoints;
388
+ if (reward === null && emission?.[0] === false && typeof b === 'bigint' && typeof total === 'bigint' && typeof points === 'bigint')
389
+ reward = total > 0n ? b * points / total : 0n;
390
+ view.yield = poolYield(reward, typeof principal === 'bigint' ? principal : null, epoch, context.stack.epochDuration, context.stack.genesis, emission?.[0] === true);
391
+ view.yield.reward = reward?.toString() ?? null;
392
+ view.yield.power = read.power()?.[0]?.toString() ?? null;
393
+ view.yield.minLockEpochs = minLock()?.[0] == null ? null : Number(minLock()[0]);
394
+ view.yield.maxLockEpochs = maxLock()?.[0] == null ? null : Number(maxLock()[0]);
395
+ view.statsUpdatedAt = Date.now();
396
+ });
397
+ }
398
+ async function indexedYields(ctx, context, views) {
399
+ const snapshot = context.display.snapshot;
400
+ const epoch = context.stack.currentEpoch - 1;
401
+ const historical = new Map(snapshot?.pools.filter(row => row.epoch === epoch).map(row => [row.agentId, row]) ?? []);
402
+ const current = new Map(snapshot?.pools.filter(row => row.epoch === context.stack.currentEpoch).map(row => [row.agentId, row]) ?? []);
403
+ const network = snapshot?.epochs.find(row => row.epoch === epoch);
404
+ const batch = new Batch();
405
+ const minLock = batch.add(ctx.chain.sellerPoolsAddress, POOLS_IFACE, 'minStakeEpochs', []);
406
+ const maxLock = batch.add(ctx.chain.sellerPoolsAddress, POOLS_IFACE, 'MAX_STAKE_EPOCHS', []);
407
+ await batch.run(ctx);
408
+ for (const view of views) {
409
+ view.displaySource = context.display.source;
410
+ const now = current.get(view.agentId);
411
+ if (now) {
412
+ view.activeStake = now.activeStake;
413
+ view.weight = now.weight;
414
+ view.usagePoints = now.usagePoints;
415
+ view.weightedUsagePoints = now.weightedUsagePoints;
416
+ view.powerShareBps = bps(BigInt(now.weight), context.totalPowerWeight);
417
+ view.yourPoolShareBps = bps(BigInt(view.yourPower), BigInt(now.weight));
418
+ view.hasPool = view.hasPool || BigInt(now.weight) > 0n || BigInt(now.activeStake) > 0n;
419
+ const projected = context.totalWeightedPoolPoints > 0n
420
+ ? context.stakerBudget * BigInt(now.weightedUsagePoints) / context.totalWeightedPoolPoints : 0n;
421
+ view.projectedRewardPer1kPower = per1k(projected, BigInt(now.weight));
422
+ }
423
+ else if (snapshot && view.hasPool) {
424
+ view.displaySource = { ...context.display.source, error: 'Current pool epoch is missing; current statistics may lag.' };
425
+ }
426
+ const row = historical.get(view.agentId);
427
+ if (!view.hasPool && view.yourPositionIds.length === 0 && !row)
428
+ continue;
429
+ const reward = row?.settled ? BigInt(row.settledEmission) : row && network
430
+ ? BigInt(network.totalWeightedPoolPoints) > 0n ? BigInt(network.stakerBudget) * BigInt(row.weightedUsagePoints) / BigInt(network.totalWeightedPoolPoints) : 0n
431
+ : null;
432
+ view.yield = {
433
+ ...poolYield(reward, row ? BigInt(row.activeStake) : null, epoch, context.stack.epochDuration, context.stack.genesis, row?.settled === true),
434
+ reward: reward?.toString() ?? null, power: row?.weight ?? null,
435
+ minLockEpochs: minLock()?.[0] == null ? null : Number(minLock()[0]), maxLockEpochs: maxLock()?.[0] == null ? null : Number(maxLock()[0]),
436
+ };
437
+ view.lastEpochEmission = reward?.toString() ?? null;
438
+ view.lastEpochEmissionSettled = row?.settled === true;
439
+ view.lastEpochRewardPer1kPower = reward !== null && row ? per1k(reward, BigInt(row.weight)) : null;
440
+ if (row)
441
+ view.lastEpochUsagePoints = row.usagePoints;
442
+ if (snapshot && now)
443
+ view.statsUpdatedAt = snapshot.indexedAt * 1000;
444
+ }
445
+ }
287
446
  //# sourceMappingURL=pools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pools.js","sourceRoot":"","sources":["../../src/service/pools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pools.js","sourceRoot":"","sources":["../../src/service/pools.ts"],"names":[],"mappings":"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"}