Skip to content

Commit e61a112

Browse files
authored
vaquita protocol - add multi-strategy vaults queries (#16937)
1 parent bd1f5e7 commit e61a112

File tree

1 file changed

+43
-7
lines changed

1 file changed

+43
-7
lines changed

projects/vaquita-protocol/index.js

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,53 @@
11
const { sumTokens2 } = require('../helper/unwrapLPs');
22

3-
const VAQUITA_CONTRACT = '0xfA95214EA8195e9D256Bb18adF0F56b3dEc66FaE';
4-
const A_TOKEN_ADDRESS = '0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB';
3+
const abi = {
4+
assets: 'function assets(address) view returns (address assetAddress, address msvAddress, uint8 status, uint256 protocolFees)',
5+
}
6+
7+
const VAQUITA_CONTRACT = '0x2400B4E44878d25597da16659705F48927cadef1';
8+
9+
const assets = {
10+
USDC: {
11+
address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
12+
aToken: '0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB',
13+
},
14+
WETH: {
15+
address: '0x0000000000000000000000000000000000000000',
16+
aToken: '0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7',
17+
},
18+
cbBTC: {
19+
address: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf',
20+
aToken: '0xBdb9300b7CDE636d9cD4AFF00f6F009fFBBc8EE6',
21+
},
22+
};
523

624
async function tvl(api) {
7-
return sumTokens2({
8-
api,
9-
owners: [VAQUITA_CONTRACT],
10-
tokens: [A_TOKEN_ADDRESS],
25+
const assetEntries = Object.entries(assets);
26+
27+
const assetData = await api.multiCall({
28+
abi: abi.assets,
29+
calls: assetEntries.map(([_, asset]) => ({
30+
target: VAQUITA_CONTRACT,
31+
params: [asset.address]
32+
})),
33+
permitFailure: true
34+
});
35+
36+
const owners = [];
37+
const tokens = [];
38+
39+
assetData.forEach((data, index) => {
40+
if (data && data.msvAddress) {
41+
const [_, asset] = assetEntries[index];
42+
owners.push(data.msvAddress);
43+
tokens.push(asset.aToken);
44+
}
1145
});
46+
47+
return sumTokens2({ api, owners, tokens });
1248
}
1349

1450
module.exports = {
1551
base: { tvl },
16-
methodology: 'TVL is calculated by checking the aBasUSDC balance (Aave USDC on Base) held by VaquitaPool contract',
52+
methodology: 'TVL is calculated by checking the aToken balance held by each MSV (MultiStrategyVault) contract for each supported asset in Vaquita Protocol',
1753
};

0 commit comments

Comments
 (0)