Skip to content

Commit 000bf85

Browse files
authored
Add cap-money borrows (#15934)
1 parent 95d75dd commit 000bf85

File tree

2 files changed

+38
-4
lines changed

2 files changed

+38
-4
lines changed

projects/cap-money/index.js

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const tvl = async (api) => {
1313

1414
const results = await api.batchCall([
1515
...assetAddresses.map(asset => ({
16-
abi: capABI.Vault.totalSupplies,
16+
abi: capABI.Vault.availableBalance,
1717
target: tokens.cUSD.address,
1818
params: [asset]
1919
})),
@@ -23,21 +23,53 @@ const tvl = async (api) => {
2323
params: [agent.network, agent.agent, agent.vault, infra.oracle.address, api.timestamp]
2424
}))
2525
]);
26-
const assetSuppliesResults = results.slice(0, assetAddresses.length)
26+
const assetAvailableBalancesResults = results.slice(0, assetAddresses.length)
2727
const coverageResults = results.slice(assetAddresses.length)
2828

29-
for (const [asset, supplied] of arrayZip(assetAddresses, assetSuppliesResults)) {
30-
api.add(asset, supplied)
29+
for (const [asset, availableBalance] of arrayZip(assetAddresses, assetAvailableBalancesResults)) {
30+
api.add(asset, availableBalance)
3131
}
3232
for (const [agent, coverage] of arrayZip(agentConfigs, coverageResults)) {
3333
api.add(agent.vaultCollateral, coverage)
3434
}
3535
}
3636

37+
const borrowed = async (api) => {
38+
const infra = capConfig[chain].infra;
39+
40+
const assetAddresses = await fetchAssetAddresses(api, chain)
41+
const agentConfigs = await fetchAgentConfigs(api, chain)
42+
43+
const agentAndAsset = agentConfigs.map(({ agent }) => assetAddresses.map(asset => ({
44+
agent: agent,
45+
asset: asset,
46+
}))).flat()
47+
48+
const results = await api.batchCall(
49+
agentAndAsset.map(({ agent, asset }) => ({
50+
abi: capABI.Lender.debt,
51+
target: infra.lender.address,
52+
params: [agent, asset]
53+
}))
54+
);
55+
56+
for (const [{ asset }, debt] of arrayZip(agentAndAsset, results)) {
57+
api.add(asset, debt)
58+
}
59+
}
60+
61+
const staking = async (api) => {
62+
const tokens = capConfig[chain].tokens;
63+
const stcUSD = tokens.stcUSD;
64+
return api.erc4626Sum({ calls: [stcUSD.address], tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets' })
65+
}
66+
3767
module.exports = {
3868
methodology: 'count the total supplied assets on capToken vaults and the total delegated assets on networks (symbiotic, eigenlayer, etc.)',
3969
start: 1000235,
4070
ethereum: {
4171
tvl,
72+
borrowed,
73+
staking,
4274
}
4375
};

projects/cap-money/lib/configs.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,11 @@ const capABI = {
5151
Vault: {
5252
AddAssetEvent: 'event AddAsset(address asset)',
5353
totalSupplies: 'function totalSupplies(address _token) external view returns (uint256 totalSupply)',
54+
availableBalance: 'function availableBalance(address _asset) external view returns (uint256 amount)',
5455
},
5556
Lender: {
5657
ReserveAssetAddedEvent: 'event ReserveAssetAdded(address indexed asset, address vault, address debtToken, address interestReceiver, uint256 id)',
58+
debt: 'function debt(address _agent, address _asset) external view returns (uint256 totalDebt)',
5759
},
5860
Delegation: {
5961
AddAgentEvent: 'event AddAgent(address agent, address network, uint256 ltv, uint256 liquidationThreshold)',

0 commit comments

Comments
 (0)