@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.
- package/dist/ants-web/assets/Arc-VDBY7LNS-BChRXCXW.js +1 -0
- package/dist/ants-web/assets/Brave-BRAKJXDS-mq-Xo37j.js +1 -0
- package/dist/ants-web/assets/Browser-76IHF3Y2-BMhRaC5Z.js +1 -0
- package/dist/ants-web/assets/Chrome-65Q5P54Y-DR9MQEVr.js +1 -0
- package/dist/ants-web/assets/Edge-XSPUTORV-DEoZslQE.js +1 -0
- package/dist/ants-web/assets/Firefox-AAHGJQIP-Bp_Hm04m.js +1 -0
- package/dist/ants-web/assets/Linux-OO4TNCLJ-B0aw93n9.js +1 -0
- package/dist/ants-web/assets/Macos-MW4AE7LN-Vvm8Drw3.js +1 -0
- package/dist/ants-web/assets/Opera-KQZLSACL-Cwv5MDFy.js +1 -0
- package/dist/ants-web/assets/Safari-ZPL37GXR-C4Ggg6rz.js +1 -0
- package/dist/ants-web/assets/Windows-PPTHQER6-BlyV2p7Y.js +1 -0
- package/dist/ants-web/assets/add-1qQ_SVL6.js +15 -0
- package/dist/ants-web/assets/all-wallets-D0QF065k.js +6 -0
- package/dist/ants-web/assets/apechain-SX5YFU6N-q5qBv-mp.js +1 -0
- package/dist/ants-web/assets/app-store-j-2thKGl.js +17 -0
- package/dist/ants-web/assets/apple-CCcInWVX.js +18 -0
- package/dist/ants-web/assets/ar_AR-44JUQ6EW-BMX-am0v.js +1487 -0
- package/dist/ants-web/assets/arbitrum-WURIBY6W-CqVkHBr5.js +1 -0
- package/dist/ants-web/assets/arrow-bottom-DVZa97G2.js +8 -0
- package/dist/ants-web/assets/arrow-bottom-circle-tt2k5BWG.js +11 -0
- package/dist/ants-web/assets/arrow-left-DnjqXMe0.js +8 -0
- package/dist/ants-web/assets/arrow-right-De8QMymS.js +8 -0
- package/dist/ants-web/assets/arrow-top-BS2oLt_x.js +8 -0
- package/dist/ants-web/assets/assets-Q6ZU7ZJ5-P8HioiAD.js +1 -0
- package/dist/ants-web/assets/avalanche-KOMJD3XY-Dsn_JPR4.js +1 -0
- package/dist/ants-web/assets/bank-DIxCskFM.js +14 -0
- package/dist/ants-web/assets/base-OAXLRA4F-CoYTVIiL.js +1 -0
- package/dist/ants-web/assets/baseAccount-44UITRK7-CsjdbWCf.js +1 -0
- package/dist/ants-web/assets/basic-D0Dg7j2v.js +2128 -0
- package/dist/ants-web/assets/berachain-NJECWIVC-DumxnFvf.js +1 -0
- package/dist/ants-web/assets/blast-V555OVXZ-BbhJh1tj.js +1 -0
- package/dist/ants-web/assets/browser-n9VVPree.js +14 -0
- package/dist/ants-web/assets/bsc-N647EYR2-B2nLKXWV.js +1 -0
- package/dist/ants-web/assets/card-Bl7AHEuE.js +14 -0
- package/dist/ants-web/assets/ccip-C_ifxkiT.js +1 -0
- package/dist/ants-web/assets/celo-GEP4TUHG-CenIBYLU.js +1 -0
- package/dist/ants-web/assets/checkmark-DXB1SsFx.js +11 -0
- package/dist/ants-web/assets/checkmark-bold-CIMnw7st.js +8 -0
- package/dist/ants-web/assets/chevron-bottom-DGkVb8CY.js +8 -0
- package/dist/ants-web/assets/chevron-left-D8vC6sW_.js +8 -0
- package/dist/ants-web/assets/chevron-right-CP8tyhU4.js +8 -0
- package/dist/ants-web/assets/chevron-top-DUqp6O8b.js +8 -0
- package/dist/ants-web/assets/chrome-store-CDk6Jfiv.js +61 -0
- package/dist/ants-web/assets/clock-t0Dwo5ck.js +8 -0
- package/dist/ants-web/assets/close-BiTlv6FX.js +8 -0
- package/dist/ants-web/assets/coinPlaceholder-PJZCh_De.js +8 -0
- package/dist/ants-web/assets/compass-CctP2ZVM.js +8 -0
- package/dist/ants-web/assets/connect-UA7M4XW6-IY3X6Bmr.js +1 -0
- package/dist/ants-web/assets/copy-b1i5dSZT.js +15 -0
- package/dist/ants-web/assets/core-4w9H32as.js +908 -0
- package/dist/ants-web/assets/create-FASO7PVG-D_rvSpre.js +1 -0
- package/dist/ants-web/assets/cronos-HJPAQTAE-BEOvlOC4.js +1 -0
- package/dist/ants-web/assets/cursor-kLCZuRWK.js +3 -0
- package/dist/ants-web/assets/cursor-transparent-C1IxvCBs.js +12 -0
- package/dist/ants-web/assets/de_DE-PYAO5YD6-BWlqPWgO.js +1487 -0
- package/dist/ants-web/assets/degen-FQQ4XGHB-CeHTs88l.js +1 -0
- package/dist/ants-web/assets/desktop-Qa_41eha.js +9 -0
- package/dist/ants-web/assets/disconnect-7QBZVVG8.js +8 -0
- package/dist/ants-web/assets/discord-DuRr0OMy.js +17 -0
- package/dist/ants-web/assets/es_419-HRGOJ6VT-D-qzxUM-.js +1487 -0
- package/dist/ants-web/assets/ethereum-RGGVA4PY-SWGOlkuk.js +1 -0
- package/dist/ants-web/assets/etherscan-BOImzSgC.js +6 -0
- package/dist/ants-web/assets/events-DQ172AOg.js +1 -0
- package/dist/ants-web/assets/exclamation-triangle-evZ54TSt.js +4 -0
- package/dist/ants-web/assets/extension-YSvzNEgu.js +8 -0
- package/dist/ants-web/assets/external-link-BukU3aK3.js +8 -0
- package/dist/ants-web/assets/facebook-WJZQGI9M.js +26 -0
- package/dist/ants-web/assets/farcaster-Dt0XRvlP.js +12 -0
- package/dist/ants-web/assets/filters-CFC5g--u.js +8 -0
- package/dist/ants-web/assets/flow-5FQJFCTK-CUie2reO.js +1 -0
- package/dist/ants-web/assets/fr_FR-IGGVC6RM-D8LpUM75.js +1487 -0
- package/dist/ants-web/assets/github-Bhz0AnGj.js +18 -0
- package/dist/ants-web/assets/gnosis-37ZC4RBL-B137OtHZ.js +1 -0
- package/dist/ants-web/assets/google-CGzSUXjP.js +18 -0
- package/dist/ants-web/assets/gravity-J5YQHTYH-Bj6B0uod.js +1 -0
- package/dist/ants-web/assets/hardhat-TX56IT5N-CV1FY-wE.js +1 -0
- package/dist/ants-web/assets/help-circle-BoGPtVJY.js +12 -0
- package/dist/ants-web/assets/hi_IN-XSKAA3MF-C3QUpWyP.js +1487 -0
- package/dist/ants-web/assets/hyperevm-VKPAA4SA-CHwraEsx.js +1 -0
- package/dist/ants-web/assets/id-ir8rS0J_.js +12 -0
- package/dist/ants-web/assets/id_ID-KUOB4UAL-K9y-nRWm.js +1487 -0
- package/dist/ants-web/assets/image-DXBUHwz_.js +4 -0
- package/dist/ants-web/assets/index-9ALlRD6p.css +1 -0
- package/dist/ants-web/assets/index-B7p3jPAJ.js +1 -0
- package/dist/ants-web/assets/index-BqWNkBzB.js +395 -0
- package/dist/ants-web/assets/index-C-I4ROfT.js +16 -0
- package/dist/ants-web/assets/index-Chq8yV_g.js +47 -0
- package/dist/ants-web/assets/index-Ci5bF__2.js +1729 -0
- package/dist/ants-web/assets/index-kzlEvkEN.js +1 -0
- package/dist/ants-web/assets/index.es-D1GdDJUC.js +39 -0
- package/dist/ants-web/assets/info-DzGq_QPQ.js +3 -0
- package/dist/ants-web/assets/info-circle-z91TqQxH.js +12 -0
- package/dist/ants-web/assets/ink-FZMYZWHG-62p-5IK5.js +1 -0
- package/dist/ants-web/assets/ja_JP-4WRQ63RX-Ct5pF4ug.js +1487 -0
- package/dist/ants-web/assets/kaia-65D2U3PU-JmuLQ4gC.js +1 -0
- package/dist/ants-web/assets/ko_KR-I2K7AIEP-B5gw8Mwb.js +1487 -0
- package/dist/ants-web/assets/lightbulb-CgYwiQYs.js +3 -0
- package/dist/ants-web/assets/linea-QRMVQ5DY-DuI3vv0d.js +1 -0
- package/dist/ants-web/assets/login-UP3DZBGS-Db_wM5oQ.js +1 -0
- package/dist/ants-web/assets/mail-FLPFIbqi.js +8 -0
- package/dist/ants-web/assets/manta-SI27YFEJ-CpVOKa06.js +1 -0
- package/dist/ants-web/assets/mantle-CKIUT334-DR2WgqzU.js +1 -0
- package/dist/ants-web/assets/metaMaskWallet-SITXT2FV-BlemcphV.js +1 -0
- package/dist/ants-web/assets/metamask-sdk-QG4PtQco.js +542 -0
- package/dist/ants-web/assets/mobile--kHpa5NK.js +9 -0
- package/dist/ants-web/assets/monad-4KWC6TSS-DVXSkpiz.js +1 -0
- package/dist/ants-web/assets/more-CJbReLy0.js +11 -0
- package/dist/ants-web/assets/ms_MY-6VZW6Q3Z-BtFD07hR.js +1487 -0
- package/dist/ants-web/assets/network-placeholder-BfSizFBN.js +14 -0
- package/dist/ants-web/assets/nftPlaceholder-BTfly2G8.js +8 -0
- package/dist/ants-web/assets/off-DCMXa6Y2.js +8 -0
- package/dist/ants-web/assets/optimism-HAF2GUT7-ec6Nqxs9.js +1 -0
- package/dist/ants-web/assets/play-store-CbbevixE.js +32 -0
- package/dist/ants-web/assets/plus-BxINT2r_.js +13 -0
- package/dist/ants-web/assets/polygon-WW6ZI7PM-DXlmm4L1.js +1 -0
- package/dist/ants-web/assets/pt_BR-N3XOZ4SV-CvVpfsHb.js +1487 -0
- package/dist/ants-web/assets/qr-code-CMEsvGrE.js +6 -0
- package/dist/ants-web/assets/rainbowWallet-O26YNBMX-DUhYus-9.js +1 -0
- package/dist/ants-web/assets/recycle-horizontal-BldRTXPT.js +9 -0
- package/dist/ants-web/assets/refresh-82vLCcdB.js +8 -0
- package/dist/ants-web/assets/refresh-S4T5V5GX-CwqIaaxK.js +1 -0
- package/dist/ants-web/assets/reown-logo-BPGalyzg.js +12 -0
- package/dist/ants-web/assets/ronin-EMCPYXZT-N-QBHZdV.js +1 -0
- package/dist/ants-web/assets/ru_RU-IITAPRET-DOj6Jzj7.js +1487 -0
- package/dist/ants-web/assets/safeWallet-5MNKTR5Z-D-5imDLD.js +1 -0
- package/dist/ants-web/assets/sanko-RHQYXGM5-OX010CbN.js +1 -0
- package/dist/ants-web/assets/scan-4UYSQ56Q-CjMz6-XC.js +1 -0
- package/dist/ants-web/assets/scroll-5OBGQVOV-DJFECiai.js +1 -0
- package/dist/ants-web/assets/search-CADsyV1c.js +8 -0
- package/dist/ants-web/assets/secp256k1-B5byVYSZ.js +1 -0
- package/dist/ants-web/assets/secp256k1-Cb4vPU9D.js +1 -0
- package/dist/ants-web/assets/send-DyAisqGO.js +15 -0
- package/dist/ants-web/assets/sign-A7IJEUT5-CGsRnPrd.js +1 -0
- package/dist/ants-web/assets/superposition-HG6MMR2Y-bRkgatRO.js +1 -0
- package/dist/ants-web/assets/swapHorizontal-BfHwXZPT.js +8 -0
- package/dist/ants-web/assets/swapHorizontalBold-FIoCjqnp.js +8 -0
- package/dist/ants-web/assets/swapHorizontalMedium-CzDDCY_G.js +16 -0
- package/dist/ants-web/assets/swapHorizontalRoundedBold-CvMRJeWj.js +8 -0
- package/dist/ants-web/assets/swapVertical-BgSezaow.js +8 -0
- package/dist/ants-web/assets/telegram-CsMNhXCs.js +16 -0
- package/dist/ants-web/assets/th_TH-3ZQCKCQE-BcHUN2Q4.js +1487 -0
- package/dist/ants-web/assets/three-dots-DYf4gmVW.js +5 -0
- package/dist/ants-web/assets/tr_TR-QUPUGMUF-CwpF6ZFn.js +1487 -0
- package/dist/ants-web/assets/twitch-BtBr-NTg.js +18 -0
- package/dist/ants-web/assets/twitterIcon-BmRf6M77.js +6 -0
- package/dist/ants-web/assets/uk_UA-SSN6SV5E-IlYYyRC6.js +1487 -0
- package/dist/ants-web/assets/unichain-C5BWO2ZY-BfguYsnu.js +1 -0
- package/dist/ants-web/assets/verify-cxA8gdP6.js +8 -0
- package/dist/ants-web/assets/verify-filled-DHnnW8EE.js +8 -0
- package/dist/ants-web/assets/vi_VN-7BUVRNYY-CZ9S75qZ.js +1487 -0
- package/dist/ants-web/assets/w3m-modal-D1ucMOAa.js +642 -0
- package/dist/ants-web/assets/wallet-BT4Fue1R.js +8 -0
- package/dist/ants-web/assets/wallet-placeholder-C2J5s6Yp.js +14 -0
- package/dist/ants-web/assets/walletConnectWallet-YHWKVTDY-D3lyiczV.js +1 -0
- package/dist/ants-web/assets/walletconnect-B5k8iJl-.js +30 -0
- package/dist/ants-web/assets/warning-circle-9rNSUSsX.js +12 -0
- package/dist/ants-web/assets/x-CpRc85jR.js +12 -0
- package/dist/ants-web/assets/xdc-KJ3TDBYO-DNV6zchh.js +1 -0
- package/dist/ants-web/assets/zetachain-TLDS5IPW-Udhyw16T.js +1 -0
- package/dist/ants-web/assets/zh_CN-HJBN674C-Baf0GEeT.js +1487 -0
- package/dist/ants-web/assets/zh_HK-JW3WLRKE-VztJKXL5.js +1487 -0
- package/dist/ants-web/assets/zh_TW-VNNRNXY7-aWfg7Qp4.js +1487 -0
- package/dist/ants-web/assets/zksync-DH7HK5U4-Dt4usFw6.js +1 -0
- package/dist/ants-web/assets/zora-FYL5H3IO-iB4wygST.js +1 -0
- package/dist/ants-web/index.html +2 -2
- package/dist/api-types.d.ts +168 -6
- package/dist/browser-signer.d.ts +30 -0
- package/dist/browser-signer.js +189 -0
- package/dist/browser-signer.js.map +1 -0
- package/dist/jobs.d.ts +10 -3
- package/dist/jobs.js +97 -20
- package/dist/jobs.js.map +1 -1
- package/dist/position-actions.d.ts +13 -0
- package/dist/position-actions.js +25 -0
- package/dist/position-actions.js.map +1 -0
- package/dist/routes.d.ts +7 -0
- package/dist/routes.js +63 -5
- package/dist/routes.js.map +1 -1
- package/dist/server.d.ts +8 -0
- package/dist/server.js +157 -12
- package/dist/server.js.map +1 -1
- package/dist/service/context.d.ts +25 -3
- package/dist/service/context.js +56 -5
- package/dist/service/context.js.map +1 -1
- package/dist/service/display-snapshot.d.ts +28 -0
- package/dist/service/display-snapshot.js +144 -0
- package/dist/service/display-snapshot.js.map +1 -0
- package/dist/service/emissions.js +11 -19
- package/dist/service/emissions.js.map +1 -1
- package/dist/service/explorer.js +2 -1
- package/dist/service/explorer.js.map +1 -1
- package/dist/service/format.d.ts +1 -1
- package/dist/service/format.js +2 -0
- package/dist/service/format.js.map +1 -1
- package/dist/service/indexed-wallet.d.ts +7 -0
- package/dist/service/indexed-wallet.js +58 -0
- package/dist/service/indexed-wallet.js.map +1 -0
- package/dist/service/indexer.d.ts +32 -3
- package/dist/service/indexer.js +64 -8
- package/dist/service/indexer.js.map +1 -1
- package/dist/service/legacy-payout.d.ts +3 -0
- package/dist/service/legacy-payout.js +32 -0
- package/dist/service/legacy-payout.js.map +1 -0
- package/dist/service/network.d.ts +5 -0
- package/dist/service/network.js +185 -0
- package/dist/service/network.js.map +1 -0
- package/dist/service/overview-reads.d.ts +30 -0
- package/dist/service/overview-reads.js +69 -0
- package/dist/service/overview-reads.js.map +1 -0
- package/dist/service/overview.js +14 -36
- package/dist/service/overview.js.map +1 -1
- package/dist/service/pool-merge.d.ts +2 -1
- package/dist/service/pool-merge.js +11 -4
- package/dist/service/pool-merge.js.map +1 -1
- package/dist/service/pools.d.ts +22 -1
- package/dist/service/pools.js +257 -98
- package/dist/service/pools.js.map +1 -1
- package/dist/service/position-feed.d.ts +73 -0
- package/dist/service/position-feed.js +173 -0
- package/dist/service/position-feed.js.map +1 -0
- package/dist/service/positions.d.ts +3 -5
- package/dist/service/positions.js +155 -93
- package/dist/service/positions.js.map +1 -1
- package/dist/service/rewards.d.ts +1 -0
- package/dist/service/rewards.js +117 -56
- package/dist/service/rewards.js.map +1 -1
- package/dist/service/rpc-provider.d.ts +4 -0
- package/dist/service/rpc-provider.js +44 -3
- package/dist/service/rpc-provider.js.map +1 -1
- package/dist/service/seller-models.d.ts +2 -0
- package/dist/service/seller-models.js +94 -0
- package/dist/service/seller-models.js.map +1 -0
- package/dist/service/seller.js +33 -30
- package/dist/service/seller.js.map +1 -1
- package/dist/service/stake-eligibility.d.ts +6 -0
- package/dist/service/stake-eligibility.js +68 -0
- package/dist/service/stake-eligibility.js.map +1 -0
- package/dist/service/usage.js +5 -13
- package/dist/service/usage.js.map +1 -1
- package/dist/service/yield.d.ts +3 -0
- package/dist/service/yield.js +12 -0
- package/dist/service/yield.js.map +1 -0
- package/dist/view-cache.d.ts +5 -10
- package/dist/view-cache.js +12 -14
- package/dist/view-cache.js.map +1 -1
- package/dist/wallet-errors.d.ts +9 -0
- package/dist/wallet-errors.js +32 -0
- package/dist/wallet-errors.js.map +1 -0
- package/package.json +8 -3
- package/dist/ants-web/assets/index-BunPfgXh.css +0 -1
- package/dist/ants-web/assets/index-zCPoF694.js +0 -40
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { Interface, ZeroAddress } from 'ethers';
|
|
2
|
+
import { GATE_MINTERS, gateMinterId, multicallRead } from '@antseed/node/payments';
|
|
3
|
+
const ABI = new Interface([
|
|
4
|
+
'function genesis() view returns(uint256)',
|
|
5
|
+
'function epochDuration() view returns(uint256)',
|
|
6
|
+
'function effectiveEpoch() view returns(uint256)',
|
|
7
|
+
'function currentEpoch() view returns(uint256)',
|
|
8
|
+
'function INITIAL_EMISSION() view returns(uint256)',
|
|
9
|
+
'function initialEmission() view returns(uint256)',
|
|
10
|
+
'function HALVING_INTERVAL() view returns(uint256)',
|
|
11
|
+
'function SHARE_DENOMINATOR() view returns(uint256)',
|
|
12
|
+
'function GATE_SHARE_DENOMINATOR() view returns(uint256)',
|
|
13
|
+
'function getEpochEmission(uint256) view returns(uint256)',
|
|
14
|
+
'function cumulativeEmissionThrough(uint256) view returns(uint256)',
|
|
15
|
+
'function minters(bytes32) view returns(address controller,uint32 shareBps,bool editable)',
|
|
16
|
+
'function minterEpochBudget(bytes32,uint256) view returns(uint256)',
|
|
17
|
+
'function totalSupply() view returns(uint256)',
|
|
18
|
+
'function MAX_SUPPLY() view returns(uint256)',
|
|
19
|
+
'function totalActiveStakeAtEpoch(uint256) view returns(uint256)',
|
|
20
|
+
'function totalPowerWeightAtEpoch(uint256) view returns(uint256)',
|
|
21
|
+
'function totalBuyerPointsByEpoch(uint256) view returns(uint256)',
|
|
22
|
+
'function totalSellerPointsByEpoch(uint256) view returns(uint256)',
|
|
23
|
+
'function stakerEpochBudget(uint256) view returns(uint256)',
|
|
24
|
+
'function usageEpochBudgets(uint256) view returns(uint256 buyer,uint256 seller)',
|
|
25
|
+
'function dynamicStakerConfigAt(uint256) view returns(tuple(uint32 minShareBps,uint32 maxShareBps,uint256 stakeShareTarget))',
|
|
26
|
+
'function dynamicUsageConfigAt(uint256) view returns(tuple(uint32 buyerMinShareBps,uint32 buyerMaxShareBps,uint32 sellerMinShareBps,uint32 sellerMaxShareBps,uint256 volumeShareTarget))',
|
|
27
|
+
'function emissionsGate() view returns(address)',
|
|
28
|
+
'function sellerPools() view returns(address)',
|
|
29
|
+
'function usageAccounting() view returns(address)',
|
|
30
|
+
'function emissions() view returns(address)',
|
|
31
|
+
'function staking() view returns(address)',
|
|
32
|
+
]);
|
|
33
|
+
const caches = new WeakMap();
|
|
34
|
+
const TTL_MS = 20_000;
|
|
35
|
+
export function invalidateNetwork(ctx) {
|
|
36
|
+
const cache = caches.get(ctx);
|
|
37
|
+
if (cache)
|
|
38
|
+
caches.set(ctx, { key: cache.key, metadata: cache.metadata });
|
|
39
|
+
}
|
|
40
|
+
export function networkSnapshot(ctx) {
|
|
41
|
+
const key = JSON.stringify(ctx.chain);
|
|
42
|
+
let cache = caches.get(ctx);
|
|
43
|
+
if (!cache || cache.key !== key) {
|
|
44
|
+
cache = { key };
|
|
45
|
+
caches.set(ctx, cache);
|
|
46
|
+
}
|
|
47
|
+
if (cache.pending)
|
|
48
|
+
return cache.pending;
|
|
49
|
+
const value = cache.value;
|
|
50
|
+
const age = value ? Date.now() - value.fetchedAt : Infinity;
|
|
51
|
+
if (value && age < TTL_MS && age < value.epoch.secondsToBoundary * 1000)
|
|
52
|
+
return Promise.resolve(value);
|
|
53
|
+
const entry = cache;
|
|
54
|
+
const pending = readSnapshot(ctx, entry).then(snapshot => {
|
|
55
|
+
entry.value = snapshot;
|
|
56
|
+
return snapshot;
|
|
57
|
+
}).finally(() => { entry.pending = undefined; });
|
|
58
|
+
entry.pending = pending;
|
|
59
|
+
return pending;
|
|
60
|
+
}
|
|
61
|
+
async function readSnapshot(ctx, cache) {
|
|
62
|
+
const chain = ctx.chain;
|
|
63
|
+
const gate = chain.emissionsGateAddress;
|
|
64
|
+
if (!gate || gate === ZeroAddress)
|
|
65
|
+
throw new Error('The emission gate is not configured on this network.');
|
|
66
|
+
const provider = ctx.provider();
|
|
67
|
+
const block = await provider.getBlock('latest');
|
|
68
|
+
if (!block)
|
|
69
|
+
throw new Error('The latest network block is unavailable.');
|
|
70
|
+
const options = { blockTag: block.number };
|
|
71
|
+
if (!cache.metadata) {
|
|
72
|
+
const methods = ['genesis', 'epochDuration', 'INITIAL_EMISSION', 'HALVING_INTERVAL', 'SHARE_DENOMINATOR'];
|
|
73
|
+
const values = await multicallRead(provider, methods.map(method => ({ target: gate, iface: ABI, method })), options);
|
|
74
|
+
const required = (index) => {
|
|
75
|
+
const value = values[index]?.[0];
|
|
76
|
+
if (typeof value !== 'bigint')
|
|
77
|
+
throw new Error(`Network configuration unavailable: ${methods[index]}.`);
|
|
78
|
+
return value;
|
|
79
|
+
};
|
|
80
|
+
const metadata = { genesis: Number(required(0)), duration: Number(required(1)), initial: required(2).toString(), halving: Number(required(3)), denominator: Number(required(4)) };
|
|
81
|
+
if (![metadata.genesis, metadata.duration, metadata.halving, metadata.denominator].every(Number.isSafeInteger) || metadata.duration <= 0 || metadata.denominator <= 0)
|
|
82
|
+
throw new Error('Invalid emission timing or share denominator.');
|
|
83
|
+
cache.metadata = metadata;
|
|
84
|
+
}
|
|
85
|
+
const metadata = cache.metadata;
|
|
86
|
+
const epoch = Math.max(0, Math.floor((block.timestamp - metadata.genesis) / metadata.duration));
|
|
87
|
+
const requests = [];
|
|
88
|
+
const errors = [];
|
|
89
|
+
const add = (target, method, args = []) => {
|
|
90
|
+
if (!target || target === ZeroAddress)
|
|
91
|
+
return -1;
|
|
92
|
+
return requests.push({ target, iface: ABI, method, args }) - 1;
|
|
93
|
+
};
|
|
94
|
+
const poolRewards = chain.sellerPoolsRewardsAddress;
|
|
95
|
+
const usageRewards = chain.usageRewardsAddress;
|
|
96
|
+
const ids = {
|
|
97
|
+
epoch: add(gate, 'currentEpoch'), effective: add(gate, 'effectiveEpoch'),
|
|
98
|
+
emission: add(gate, 'getEpochEmission', [epoch]), nextEmission: add(gate, 'getEpochEmission', [epoch + 1]),
|
|
99
|
+
cumulative: add(gate, 'cumulativeEmissionThrough', [epoch + 1]),
|
|
100
|
+
supply: add(chain.antsTokenAddress, 'totalSupply'), maxSupply: add(chain.antsTokenAddress, 'MAX_SUPPLY'),
|
|
101
|
+
stake: add(chain.sellerPoolsAddress, 'totalActiveStakeAtEpoch', [epoch]), weight: add(chain.sellerPoolsAddress, 'totalPowerWeightAtEpoch', [epoch]),
|
|
102
|
+
buyerPoints: add(chain.usageAccountingAddress, 'totalBuyerPointsByEpoch', [epoch]), sellerPoints: add(chain.usageAccountingAddress, 'totalSellerPointsByEpoch', [epoch]),
|
|
103
|
+
stakerBudget: add(poolRewards, 'stakerEpochBudget', [epoch]), usageBudgets: add(usageRewards, 'usageEpochBudgets', [epoch]),
|
|
104
|
+
stakerConfig: add(poolRewards, 'dynamicStakerConfigAt', [epoch]), nextStakerConfig: add(poolRewards, 'dynamicStakerConfigAt', [epoch + 1]),
|
|
105
|
+
usageConfig: add(usageRewards, 'dynamicUsageConfigAt', [epoch]), nextUsageConfig: add(usageRewards, 'dynamicUsageConfigAt', [epoch + 1]),
|
|
106
|
+
initial: add(poolRewards, 'initialEmission'),
|
|
107
|
+
stakerGate: add(poolRewards, 'emissionsGate'), usageGate: add(usageRewards, 'emissionsGate'),
|
|
108
|
+
pools: add(poolRewards, 'sellerPools'), accounting: add(usageRewards, 'usageAccounting'),
|
|
109
|
+
stakerDenominator: add(poolRewards, 'GATE_SHARE_DENOMINATOR'), usageDenominator: add(usageRewards, 'GATE_SHARE_DENOMINATOR'),
|
|
110
|
+
registryEmissions: add(chain.registryContractAddress, 'emissions'), registryStaking: add(chain.registryContractAddress, 'staking'),
|
|
111
|
+
};
|
|
112
|
+
const buckets = GATE_MINTERS.map(minter => {
|
|
113
|
+
const id = gateMinterId(minter.id);
|
|
114
|
+
return { name: minter.name, id, info: add(gate, 'minters', [id]), budget: add(gate, 'minterEpochBudget', [id, epoch]), nextBudget: add(gate, 'minterEpochBudget', [id, epoch + 1]) };
|
|
115
|
+
});
|
|
116
|
+
const values = await multicallRead(provider, requests, options);
|
|
117
|
+
const read = (index, label) => {
|
|
118
|
+
const value = index < 0 ? null : values[index];
|
|
119
|
+
if (!value)
|
|
120
|
+
errors.push(`${label} unavailable.`);
|
|
121
|
+
return value ?? null;
|
|
122
|
+
};
|
|
123
|
+
const amount = (index, label) => {
|
|
124
|
+
const value = read(index, label)?.[0];
|
|
125
|
+
return typeof value === 'bigint' ? value.toString() : null;
|
|
126
|
+
};
|
|
127
|
+
if (amount(ids.epoch, 'Current epoch') !== String(epoch))
|
|
128
|
+
throw new Error('The emission epoch does not match the snapshot block. Refresh the network data.');
|
|
129
|
+
const bucketViews = buckets.map(bucket => ({ name: bucket.name, id: bucket.id, controller: read(bucket.info, `${bucket.name} controller`)?.[0] ?? null, budget: amount(bucket.budget, `${bucket.name} limit`), nextBudget: amount(bucket.nextBudget, `${bucket.name} next-epoch limit`) }));
|
|
130
|
+
const matches = (index, expected) => typeof values[index]?.[0] === 'string' && values[index][0].toLowerCase() === expected?.toLowerCase();
|
|
131
|
+
const stakerVerified = matches(ids.stakerGate, gate) && matches(ids.pools, chain.sellerPoolsAddress)
|
|
132
|
+
&& bucketViews[0]?.controller?.toLowerCase() === poolRewards?.toLowerCase() && values[ids.stakerDenominator]?.[0] === BigInt(metadata.denominator);
|
|
133
|
+
const usageVerified = matches(ids.usageGate, gate) && matches(ids.accounting, chain.usageAccountingAddress)
|
|
134
|
+
&& bucketViews[1]?.controller?.toLowerCase() === usageRewards?.toLowerCase() && values[ids.usageDenominator]?.[0] === BigInt(metadata.denominator);
|
|
135
|
+
if (!stakerVerified)
|
|
136
|
+
errors.push('Staker controller connections could not be verified against the emission gate.');
|
|
137
|
+
if (!usageVerified)
|
|
138
|
+
errors.push('Usage controller connections could not be verified against the emission gate.');
|
|
139
|
+
const stakerConfig = (index) => {
|
|
140
|
+
const result = read(index, 'Staker configuration')?.[0];
|
|
141
|
+
return stakerVerified && result ? { minShareBps: Number(result[0]), maxShareBps: Number(result[1]), stakeShareTarget: result[2].toString() } : null;
|
|
142
|
+
};
|
|
143
|
+
const usageConfig = (index) => {
|
|
144
|
+
const result = read(index, 'Usage configuration')?.[0];
|
|
145
|
+
return usageVerified && result ? { buyerMinShareBps: Number(result[0]), buyerMaxShareBps: Number(result[1]), sellerMinShareBps: Number(result[2]), sellerMaxShareBps: Number(result[3]), volumeShareTarget: result[4].toString() } : null;
|
|
146
|
+
};
|
|
147
|
+
const emission = amount(ids.emission, 'Epoch emission');
|
|
148
|
+
const config = stakerConfig(ids.stakerConfig);
|
|
149
|
+
const initial = amount(ids.initial, 'Staker initial emission');
|
|
150
|
+
const buyerPoints = amount(ids.buyerPoints, 'Buyer usage input');
|
|
151
|
+
const sellerPoints = amount(ids.sellerPoints, 'Seller usage input');
|
|
152
|
+
const usage = read(ids.usageBudgets, 'Usage budgets');
|
|
153
|
+
const effective = amount(ids.effective, 'Reward activation epoch');
|
|
154
|
+
const registryEmissions = read(ids.registryEmissions, 'Registry emissions pointer');
|
|
155
|
+
const registryStaking = read(ids.registryStaking, 'Registry staking pointer');
|
|
156
|
+
const activation = !registryEmissions || !registryStaking ? 'unverified'
|
|
157
|
+
: matches(ids.registryEmissions, chain.usageAccountingAddress) && matches(ids.registryStaking, chain.sellerRegistryAddress) ? 'active' : 'not-active';
|
|
158
|
+
const nextBoundaryAt = metadata.genesis + (epoch + 1) * metadata.duration;
|
|
159
|
+
return {
|
|
160
|
+
chainId: chain.chainId, evmChainId: chain.evmChainId, blockNumber: block.number, blockTimestamp: block.timestamp, fetchedAt: Date.now(),
|
|
161
|
+
activation,
|
|
162
|
+
epoch: { current: epoch, effective: effective === null ? null : Number(effective), genesis: metadata.genesis, epochDuration: metadata.duration, nextBoundaryAt, secondsToBoundary: Math.max(0, nextBoundaryAt - block.timestamp) },
|
|
163
|
+
shareDenominator: metadata.denominator, initialEmission: metadata.initial, halvingInterval: metadata.halving,
|
|
164
|
+
emission, nextEmission: amount(ids.nextEmission, 'Next epoch emission'), cumulativeScheduled: amount(ids.cumulative, 'Scheduled cumulative emission'),
|
|
165
|
+
totalSupply: amount(ids.supply, 'Token supply'), maxSupply: amount(ids.maxSupply, 'Maximum token supply'),
|
|
166
|
+
totalActiveStake: amount(ids.stake, 'Active stake'), totalPowerWeight: amount(ids.weight, 'Power weight'),
|
|
167
|
+
usageVolume: buyerPoints === null || sellerPoints === null ? null : (BigInt(buyerPoints) > BigInt(sellerPoints) ? buyerPoints : sellerPoints),
|
|
168
|
+
buckets: bucketViews,
|
|
169
|
+
budgets: { staker: stakerVerified ? amount(ids.stakerBudget, 'Staker budget') : null, buyer: usageVerified && usage ? String(usage[0]) : null, seller: usageVerified && usage ? String(usage[1]) : null },
|
|
170
|
+
stakerConfig: config, nextStakerConfig: stakerConfig(ids.nextStakerConfig),
|
|
171
|
+
scaledStakeTarget: config && emission !== null && initial !== null && BigInt(initial) > 0n ? (BigInt(config.stakeShareTarget) * BigInt(emission) / BigInt(initial)).toString() : null,
|
|
172
|
+
usageConfig: usageConfig(ids.usageConfig), nextUsageConfig: usageConfig(ids.nextUsageConfig),
|
|
173
|
+
contracts: Object.fromEntries(Object.entries({ registry: chain.registryContractAddress, gate, sellerPools: chain.sellerPoolsAddress, stakerRewards: poolRewards, usageRewards, usageAccounting: chain.usageAccountingAddress, token: chain.antsTokenAddress }).filter((entry) => !!entry[1])),
|
|
174
|
+
errors: [...new Set(errors)],
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
export async function networkLegacy(ctx) {
|
|
178
|
+
const stack = await ctx.stack();
|
|
179
|
+
const contract = ctx.legacyEmissionsAt(stack.legacyEmissions);
|
|
180
|
+
if (!contract || !stack.legacyEmissions)
|
|
181
|
+
return null;
|
|
182
|
+
const [shares, info] = await Promise.all([contract.getShares(), contract.getEpochInfo()]);
|
|
183
|
+
return { contract: stack.legacyEmissions, sellerPct: shares.sellerSharePct, buyerPct: shares.buyerSharePct, reservePct: shares.reserveSharePct, teamPct: shares.teamSharePct, currentEpoch: info.epoch };
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/service/network.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AntsContext, ResolvedStack } from './context.js';
|
|
2
|
+
/** One Multicall for overview contract state; missing configured reads must not become zero balances. */
|
|
3
|
+
export declare function overviewReads(ctx: AntsContext, stack: ResolvedStack): Promise<{
|
|
4
|
+
ants: bigint;
|
|
5
|
+
eth: bigint;
|
|
6
|
+
transfersEnabled: boolean;
|
|
7
|
+
whitelisted: boolean;
|
|
8
|
+
totalActiveStake: bigint;
|
|
9
|
+
positionCount: number;
|
|
10
|
+
registryAgentId: number;
|
|
11
|
+
legacyAgentId: number;
|
|
12
|
+
totalSupply: bigint;
|
|
13
|
+
maxSupply: bigint;
|
|
14
|
+
networkStake: bigint;
|
|
15
|
+
networkWeight: bigint;
|
|
16
|
+
epochEmission: bigint;
|
|
17
|
+
stakerBudget: bigint;
|
|
18
|
+
usageBudgets: {
|
|
19
|
+
buyer: bigint;
|
|
20
|
+
seller: bigint;
|
|
21
|
+
};
|
|
22
|
+
networkAvailable: boolean;
|
|
23
|
+
networkEpoch: import("./index.js").EpochInfo | undefined;
|
|
24
|
+
networkSource: {
|
|
25
|
+
error: string | undefined;
|
|
26
|
+
source: "indexer" | "chain";
|
|
27
|
+
indexedBlock?: number;
|
|
28
|
+
indexedAt?: number;
|
|
29
|
+
};
|
|
30
|
+
}>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Interface, ZeroAddress } from 'ethers';
|
|
2
|
+
import { multicallRead } from '@antseed/node/payments';
|
|
3
|
+
import { displayData } from './display-snapshot.js';
|
|
4
|
+
import { networkSnapshot } from './network.js';
|
|
5
|
+
const ABI = new Interface([
|
|
6
|
+
'function balanceOf(address) view returns (uint256)',
|
|
7
|
+
'function transfersEnabled() view returns (bool)',
|
|
8
|
+
'function transferWhitelist(address) view returns (bool)',
|
|
9
|
+
'function totalSupply() view returns (uint256)',
|
|
10
|
+
'function MAX_SUPPLY() view returns (uint256)',
|
|
11
|
+
'function stakerTotalActiveStake(address) view returns (uint256)',
|
|
12
|
+
'function stakerPositionCount(address) view returns (uint256)',
|
|
13
|
+
'function getAgentId(address) view returns (uint256)',
|
|
14
|
+
'function totalActiveStakeAtEpoch(uint256) view returns (uint256)',
|
|
15
|
+
'function totalPowerWeightAtEpoch(uint256) view returns (uint256)',
|
|
16
|
+
'function getEpochEmission(uint256) view returns (uint256)',
|
|
17
|
+
'function stakerEpochBudget(uint256) view returns (uint256)',
|
|
18
|
+
'function usageEpochBudgets(uint256) view returns (uint256 buyer, uint256 seller)',
|
|
19
|
+
]);
|
|
20
|
+
/** One Multicall for overview contract state; missing configured reads must not become zero balances. */
|
|
21
|
+
export async function overviewReads(ctx, stack) {
|
|
22
|
+
const modern = !!ctx.chain.emissionsGateAddress;
|
|
23
|
+
let networkError;
|
|
24
|
+
const snapshot = modern ? await networkSnapshot(ctx).catch((error) => {
|
|
25
|
+
networkError = error instanceof Error ? error.message : String(error);
|
|
26
|
+
return null;
|
|
27
|
+
}) : null;
|
|
28
|
+
const display = modern ? { snapshot: null, source: { source: 'chain', error: networkError } } : await displayData(ctx, stack);
|
|
29
|
+
const network = display.snapshot?.epochs.find(row => row.epoch === stack.currentEpoch);
|
|
30
|
+
const requests = [];
|
|
31
|
+
const add = (target, method, args = []) => {
|
|
32
|
+
if (!target || target.toLowerCase() === ZeroAddress)
|
|
33
|
+
return -1;
|
|
34
|
+
return requests.push({ target, iface: ABI, method, args }) - 1;
|
|
35
|
+
};
|
|
36
|
+
const c = ctx.chain, address = ctx.address, epoch = stack.currentEpoch;
|
|
37
|
+
const token = ctx.antsToken().contractAddress;
|
|
38
|
+
const ids = {
|
|
39
|
+
ants: add(token, 'balanceOf', [address]), transfers: add(token, 'transfersEnabled'), whitelist: add(token, 'transferWhitelist', [address]),
|
|
40
|
+
supply: modern ? -1 : add(token, 'totalSupply'), maxSupply: modern ? -1 : add(token, 'MAX_SUPPLY'),
|
|
41
|
+
stake: add(c.sellerPoolsAddress, 'stakerTotalActiveStake', [address]), count: add(c.sellerPoolsAddress, 'stakerPositionCount', [address]),
|
|
42
|
+
agent: add(c.sellerRegistryAddress, 'getAgentId', [address]), legacyAgent: add(stack.legacyStaking, 'getAgentId', [address]),
|
|
43
|
+
networkStake: modern || network ? -1 : add(c.sellerPoolsAddress, 'totalActiveStakeAtEpoch', [epoch]), networkWeight: modern || network ? -1 : add(c.sellerPoolsAddress, 'totalPowerWeightAtEpoch', [epoch]),
|
|
44
|
+
emission: modern ? -1 : add(c.emissionsGateAddress, 'getEpochEmission', [epoch]), budget: modern || network ? -1 : add(c.sellerPoolsRewardsAddress, 'stakerEpochBudget', [epoch]),
|
|
45
|
+
usage: modern ? -1 : add(c.usageRewardsAddress, 'usageEpochBudgets', [epoch]),
|
|
46
|
+
};
|
|
47
|
+
const [values, eth] = await Promise.all([multicallRead(ctx.provider(), requests), ctx.provider().getBalance(address)]);
|
|
48
|
+
const read = (index, field = 0) => {
|
|
49
|
+
if (index < 0)
|
|
50
|
+
return 0n;
|
|
51
|
+
const value = values[index]?.[field];
|
|
52
|
+
if (value === undefined)
|
|
53
|
+
throw new Error(`Wallet overview read failed: ${requests[index].method}. Retry when the RPC is available.`);
|
|
54
|
+
return value;
|
|
55
|
+
};
|
|
56
|
+
const big = (index, field = 0) => BigInt(read(index, field));
|
|
57
|
+
const networkAvailable = !modern || !!snapshot && [snapshot.totalSupply, snapshot.maxSupply, snapshot.totalActiveStake, snapshot.totalPowerWeight, snapshot.emission, ...Object.values(snapshot.budgets)].every(value => value !== null);
|
|
58
|
+
return {
|
|
59
|
+
ants: big(ids.ants), eth, transfersEnabled: read(ids.transfers) === true, whitelisted: read(ids.whitelist) === true,
|
|
60
|
+
totalActiveStake: big(ids.stake), positionCount: Number(big(ids.count)), registryAgentId: Number(big(ids.agent)), legacyAgentId: Number(big(ids.legacyAgent)),
|
|
61
|
+
totalSupply: modern ? BigInt(snapshot?.totalSupply ?? '0') : big(ids.supply), maxSupply: modern ? BigInt(snapshot?.maxSupply ?? '0') : big(ids.maxSupply),
|
|
62
|
+
networkStake: modern ? BigInt(snapshot?.totalActiveStake ?? '0') : network ? BigInt(network.totalActiveStake) : big(ids.networkStake), networkWeight: modern ? BigInt(snapshot?.totalPowerWeight ?? '0') : network ? BigInt(network.totalPowerWeight) : big(ids.networkWeight),
|
|
63
|
+
epochEmission: modern ? BigInt(snapshot?.emission ?? '0') : big(ids.emission), stakerBudget: modern ? BigInt(snapshot?.budgets.staker ?? '0') : network ? BigInt(network.stakerBudget) : big(ids.budget),
|
|
64
|
+
usageBudgets: modern ? { buyer: BigInt(snapshot?.budgets.buyer ?? '0'), seller: BigInt(snapshot?.budgets.seller ?? '0') } : { buyer: big(ids.usage), seller: big(ids.usage, 1) },
|
|
65
|
+
networkAvailable, networkEpoch: snapshot?.epoch,
|
|
66
|
+
networkSource: { ...display.source, error: networkError ?? (snapshot?.errors.length ? snapshot.errors.join(' ') : display.source.error) },
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=overview-reads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overview-reads.js","sourceRoot":"","sources":["../../src/service/overview-reads.ts"],"names":[],"mappings":"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"}
|
package/dist/service/overview.js
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
|
+
import { overviewReads } from './overview-reads.js';
|
|
1
2
|
import { toJson } from './json.js';
|
|
2
|
-
async function safe(read, fallback) {
|
|
3
|
-
try {
|
|
4
|
-
return await read();
|
|
5
|
-
}
|
|
6
|
-
catch {
|
|
7
|
-
return fallback;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
3
|
export function epochInfo(stack, now = Math.floor(Date.now() / 1000)) {
|
|
11
4
|
const nextBoundaryAt = stack.genesis + (stack.currentEpoch + 1) * stack.epochDuration;
|
|
12
5
|
return {
|
|
@@ -20,35 +13,11 @@ export function epochInfo(stack, now = Math.floor(Date.now() / 1000)) {
|
|
|
20
13
|
}
|
|
21
14
|
export async function overview(ctx) {
|
|
22
15
|
const stack = await ctx.stack();
|
|
23
|
-
const token = ctx.antsToken();
|
|
24
16
|
const pools = ctx.pools();
|
|
25
17
|
const sellerRegistry = ctx.sellerRegistry();
|
|
26
|
-
const
|
|
27
|
-
const [ants, eth, transfersEnabled, whitelisted, totalActiveStake, positionCount, registryAgentId, legacyAgentId, totalSupply, maxSupply] = await Promise.all([
|
|
28
|
-
token.balanceOf(ctx.address),
|
|
29
|
-
token.provider.getBalance(ctx.address),
|
|
30
|
-
safe(() => token.transfersEnabled(), false),
|
|
31
|
-
safe(() => token.transferWhitelist(ctx.address), false),
|
|
32
|
-
pools ? safe(() => pools.stakerTotalActiveStake(ctx.address), 0n) : Promise.resolve(0n),
|
|
33
|
-
pools ? safe(() => pools.stakerPositionCount(ctx.address), 0) : Promise.resolve(0),
|
|
34
|
-
sellerRegistry ? safe(() => sellerRegistry.getAgentId(ctx.address), 0) : Promise.resolve(0),
|
|
35
|
-
legacyStaking ? safe(() => legacyStaking.getAgentId(ctx.address), 0) : Promise.resolve(0),
|
|
36
|
-
safe(() => token.totalSupply(), 0n),
|
|
37
|
-
safe(() => token.maxSupply(), 0n),
|
|
38
|
-
]);
|
|
18
|
+
const { ants, eth, transfersEnabled, whitelisted, totalActiveStake, positionCount, registryAgentId, legacyAgentId, totalSupply, maxSupply, networkStake, networkWeight, epochEmission, stakerBudget, usageBudgets, networkSource, networkAvailable, networkEpoch } = await overviewReads(ctx, stack);
|
|
39
19
|
let network = null;
|
|
40
|
-
if (pools) {
|
|
41
|
-
const gate = ctx.gate();
|
|
42
|
-
const poolRewards = ctx.poolRewards();
|
|
43
|
-
const usageRewards = ctx.usageRewards();
|
|
44
|
-
const epoch = stack.currentEpoch;
|
|
45
|
-
const [networkStake, networkWeight, epochEmission, stakerBudget, usageBudgets] = await Promise.all([
|
|
46
|
-
safe(() => pools.totalActiveStakeAtEpoch(epoch), 0n),
|
|
47
|
-
safe(() => pools.totalPowerWeightAtEpoch(epoch), 0n),
|
|
48
|
-
gate ? safe(() => gate.getEpochEmission(epoch), 0n) : Promise.resolve(0n),
|
|
49
|
-
poolRewards ? safe(() => poolRewards.stakerEpochBudget(epoch), 0n) : Promise.resolve(0n),
|
|
50
|
-
usageRewards ? safe(() => usageRewards.usageEpochBudgets(epoch), { buyer: 0n, seller: 0n }) : Promise.resolve({ buyer: 0n, seller: 0n }),
|
|
51
|
-
]);
|
|
20
|
+
if (pools && networkAvailable) {
|
|
52
21
|
network = {
|
|
53
22
|
totalActiveStake: networkStake.toString(),
|
|
54
23
|
totalPowerWeight: networkWeight.toString(),
|
|
@@ -61,7 +30,14 @@ export async function overview(ctx) {
|
|
|
61
30
|
};
|
|
62
31
|
}
|
|
63
32
|
const notices = [];
|
|
64
|
-
|
|
33
|
+
if (networkSource.error)
|
|
34
|
+
notices.push(`Network statistics: ${networkSource.error}`);
|
|
35
|
+
const sellerBound = !!sellerRegistry && registryAgentId !== 0 &&
|
|
36
|
+
(await sellerRegistry.agentSeller(registryAgentId)).toLowerCase() === ctx.address.toLowerCase();
|
|
37
|
+
const epoch = networkEpoch ?? epochInfo(stack);
|
|
38
|
+
const signingAddress = await ctx.signer?.getAddress();
|
|
39
|
+
const signingWalletEth = signingAddress && signingAddress.toLowerCase() !== ctx.address.toLowerCase()
|
|
40
|
+
? (await ctx.provider().getBalance(signingAddress)).toString() : undefined;
|
|
65
41
|
if (stack.phase === 'legacy') {
|
|
66
42
|
notices.push('The recognized-usage contracts are not configured for this chain. Only legacy emissions are available.');
|
|
67
43
|
}
|
|
@@ -83,15 +59,17 @@ export async function overview(ctx) {
|
|
|
83
59
|
address: ctx.address,
|
|
84
60
|
ants: ants.toString(),
|
|
85
61
|
eth: eth.toString(),
|
|
62
|
+
signingWalletEth,
|
|
86
63
|
transfersEnabled,
|
|
87
64
|
whitelisted,
|
|
88
65
|
canTransfer: transfersEnabled || whitelisted,
|
|
89
66
|
totalActiveStake: totalActiveStake.toString(),
|
|
90
67
|
positionCount,
|
|
91
68
|
agentId: registryAgentId || legacyAgentId,
|
|
92
|
-
sellerBound
|
|
69
|
+
sellerBound,
|
|
93
70
|
},
|
|
94
71
|
network,
|
|
72
|
+
networkSource,
|
|
95
73
|
notices,
|
|
96
74
|
});
|
|
97
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/service/overview.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/service/overview.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,12 @@ export interface MergeInput {
|
|
|
8
8
|
sellerEpochs: Map<string, IndexedSellerEpoch[]>;
|
|
9
9
|
/** Epochs to show volume for, current first. */
|
|
10
10
|
epochs: number[];
|
|
11
|
-
/** Your open positions per agent
|
|
11
|
+
/** Your open positions per agent: live power this epoch, stake counting now, and stake pending activation. */
|
|
12
12
|
own: Map<number, {
|
|
13
13
|
positionIds: number[];
|
|
14
14
|
power: bigint;
|
|
15
15
|
stake: bigint;
|
|
16
|
+
pending: bigint;
|
|
16
17
|
}>;
|
|
17
18
|
}
|
|
18
19
|
/**
|
|
@@ -6,19 +6,19 @@ function poolVolumeAt(pool, index) {
|
|
|
6
6
|
if (!pool)
|
|
7
7
|
return null;
|
|
8
8
|
if (index === 0)
|
|
9
|
-
return pool.volumeUsdc;
|
|
9
|
+
return pool.volumeAvailable === false ? null : pool.volumeUsdc;
|
|
10
10
|
if (index === 1)
|
|
11
|
-
return pool.lastVolumeUsdc;
|
|
11
|
+
return pool.lastVolumeAvailable === false ? null : pool.lastVolumeUsdc;
|
|
12
12
|
return null;
|
|
13
13
|
}
|
|
14
14
|
function volumesFor(seller, epochs, sellerEpochs, pool) {
|
|
15
15
|
const rows = seller ? sellerEpochs.get(seller.toLowerCase()) ?? [] : [];
|
|
16
|
-
return epochs.
|
|
16
|
+
return epochs.flatMap((epoch, index) => {
|
|
17
17
|
const sellerVolume = rows.find((entry) => entry.epoch === epoch)?.volumeUsdc;
|
|
18
18
|
if (sellerVolume)
|
|
19
19
|
return { epoch, usdc: sellerVolume };
|
|
20
20
|
const poolVolume = poolVolumeAt(pool, index);
|
|
21
|
-
return
|
|
21
|
+
return poolVolume === null ? [] : [{ epoch, usdc: poolVolume }];
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
@@ -41,8 +41,12 @@ export function mergePools(input) {
|
|
|
41
41
|
seller,
|
|
42
42
|
profile: profileFor(seller),
|
|
43
43
|
hasPool: weight !== 0n || pool.openPositions > 0,
|
|
44
|
+
openPositions: pool.participationComplete === false ? undefined : pool.openPositions,
|
|
45
|
+
totalPositions: pool.participationComplete === false ? undefined : pool.totalPositions,
|
|
46
|
+
stakers: pool.stakers ?? null,
|
|
44
47
|
stakeable: pool.registered,
|
|
45
48
|
activeStake: pool.activeStake,
|
|
49
|
+
pendingStake: pool.pendingStake,
|
|
46
50
|
weight: pool.weight,
|
|
47
51
|
powerShareBps: pool.powerShareBps || bps(weight, totalPower),
|
|
48
52
|
securityShareBps: Number(pool.securityShareBps),
|
|
@@ -55,6 +59,7 @@ export function mergePools(input) {
|
|
|
55
59
|
lastEpochRewardPer1kPower: pool.lastRewardPer1kPower,
|
|
56
60
|
projectedRewardPer1kPower: pool.projectedRewardPer1kPower,
|
|
57
61
|
yourStake: (mine?.stake ?? 0n).toString(),
|
|
62
|
+
yourPendingStake: (mine?.pending ?? 0n).toString(),
|
|
58
63
|
yourPower: (mine?.power ?? 0n).toString(),
|
|
59
64
|
yourPoolShareBps: bps(mine?.power ?? 0n, weight),
|
|
60
65
|
yourPositionIds: mine?.positionIds ?? [],
|
|
@@ -73,6 +78,7 @@ export function mergePools(input) {
|
|
|
73
78
|
hasPool: false,
|
|
74
79
|
stakeable: false,
|
|
75
80
|
activeStake: (mine?.stake ?? 0n).toString(),
|
|
81
|
+
pendingStake: (mine?.pending ?? 0n).toString(),
|
|
76
82
|
weight: '0',
|
|
77
83
|
powerShareBps: 0,
|
|
78
84
|
securityShareBps: 0,
|
|
@@ -85,6 +91,7 @@ export function mergePools(input) {
|
|
|
85
91
|
lastEpochRewardPer1kPower: null,
|
|
86
92
|
projectedRewardPer1kPower: null,
|
|
87
93
|
yourStake: (mine?.stake ?? 0n).toString(),
|
|
94
|
+
yourPendingStake: (mine?.pending ?? 0n).toString(),
|
|
88
95
|
yourPower: (mine?.power ?? 0n).toString(),
|
|
89
96
|
yourPoolShareBps: 0,
|
|
90
97
|
yourPositionIds: mine?.positionIds ?? [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool-merge.js","sourceRoot":"","sources":["../../src/service/pool-merge.ts"],"names":[],"mappings":"AAeA,SAAS,GAAG,CAAC,IAAY,EAAE,KAAa;IACtC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,MAAO,GAAG,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,mGAAmG;AACnG,SAAS,YAAY,CAAC,IAA6B,EAAE,KAAa;IAChE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"pool-merge.js","sourceRoot":"","sources":["../../src/service/pool-merge.ts"],"names":[],"mappings":"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"}
|
package/dist/service/pools.d.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
|
+
import { type SellerPoolPosition } from '@antseed/node/payments';
|
|
1
2
|
import type { AntsContext } from './context.js';
|
|
2
|
-
import type { PoolsView, PoolView } from '../api-types.js';
|
|
3
|
+
import type { PoolsView, PoolView, PoolEpochPoint } from '../api-types.js';
|
|
4
|
+
import { type IndexedPoolEpoch } from './indexer.js';
|
|
5
|
+
/** Epochs of per-pool history returned by the single-pool endpoint for charts. */
|
|
6
|
+
export declare const HISTORY_EPOCHS = 16;
|
|
7
|
+
/** Ids, stake counting this epoch, stake still pending activation, and live power of your positions in one pool. */
|
|
8
|
+
export interface OwnPool {
|
|
9
|
+
positionIds: number[];
|
|
10
|
+
power: bigint;
|
|
11
|
+
stake: bigint;
|
|
12
|
+
pending: bigint;
|
|
13
|
+
}
|
|
14
|
+
export declare function ownPools(ctx: AntsContext, rows: SellerPoolPosition[], epoch: number): Promise<Map<number, OwnPool>>;
|
|
3
15
|
/**
|
|
4
16
|
* Pool comparison. Statistics for every pool come from the indexer; the
|
|
5
17
|
* chain is read only for this wallet's own positions. Without an indexer
|
|
@@ -10,3 +22,12 @@ export declare function poolsView(ctx: AntsContext): Promise<PoolsView>;
|
|
|
10
22
|
export declare function singlePool(ctx: AntsContext, agentId: number): Promise<PoolView & {
|
|
11
23
|
currentEpoch: number;
|
|
12
24
|
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Oldest-first epoch rows up to the current epoch; the current epoch is a partial, unsettled point.
|
|
27
|
+
* The indexer only records an emission once a claim settles it, so the previous epoch falls back to
|
|
28
|
+
* the pool's running estimate and the current epoch to its projection until then.
|
|
29
|
+
*/
|
|
30
|
+
export declare function poolHistory(epochs: IndexedPoolEpoch[], currentEpoch: number, estimates?: {
|
|
31
|
+
last: string;
|
|
32
|
+
current: string;
|
|
33
|
+
}): PoolEpochPoint[];
|