vaquita protocol - add multi-strategy vaults queries (#16937)

This commit is contained in:
Fabio Laura
2025-11-05 11:13:05 -04:00
committed by GitHub
parent bd1f5e7bae
commit e61a112a8d

View File

@@ -1,17 +1,53 @@
const { sumTokens2 } = require('../helper/unwrapLPs');
const VAQUITA_CONTRACT = '0xfA95214EA8195e9D256Bb18adF0F56b3dEc66FaE';
const A_TOKEN_ADDRESS = '0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB';
const abi = {
assets: 'function assets(address) view returns (address assetAddress, address msvAddress, uint8 status, uint256 protocolFees)',
}
const VAQUITA_CONTRACT = '0x2400B4E44878d25597da16659705F48927cadef1';
const assets = {
USDC: {
address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
aToken: '0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB',
},
WETH: {
address: '0x0000000000000000000000000000000000000000',
aToken: '0xD4a0e0b9149BCee3C920d2E00b5dE09138fd8bb7',
},
cbBTC: {
address: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf',
aToken: '0xBdb9300b7CDE636d9cD4AFF00f6F009fFBBc8EE6',
},
};
async function tvl(api) {
return sumTokens2({
api,
owners: [VAQUITA_CONTRACT],
tokens: [A_TOKEN_ADDRESS],
const assetEntries = Object.entries(assets);
const assetData = await api.multiCall({
abi: abi.assets,
calls: assetEntries.map(([_, asset]) => ({
target: VAQUITA_CONTRACT,
params: [asset.address]
})),
permitFailure: true
});
const owners = [];
const tokens = [];
assetData.forEach((data, index) => {
if (data && data.msvAddress) {
const [_, asset] = assetEntries[index];
owners.push(data.msvAddress);
tokens.push(asset.aToken);
}
});
return sumTokens2({ api, owners, tokens });
}
module.exports = {
base: { tvl },
methodology: 'TVL is calculated by checking the aBasUSDC balance (Aave USDC on Base) held by VaquitaPool contract',
methodology: 'TVL is calculated by checking the aToken balance held by each MSV (MultiStrategyVault) contract for each supported asset in Vaquita Protocol',
};