Skip to content

Commit 1eb50f7

Browse files
authored
Mellow core vaults support (#16954)
1 parent 83d3064 commit 1eb50f7

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

projects/mellow-protocol-v2/index.js

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const sdk = require('@defillama/sdk');
12
const { getConfig } = require('../helper/cache');
23

34
const config = {
@@ -13,8 +14,31 @@ async function tvl(api) {
1314
if (!_vaultsApiResponse) _vaultsApiResponse = getConfig('mellow-v2', 'https://points.mellow.finance/v1/vaults')
1415
const vaultsApiResponse = await _vaultsApiResponse;
1516

16-
const vaults = vaultsApiResponse.filter(vault => vault.chain_id === api.chainId).map(vault => vault.address)
17-
await api.erc4626Sum({ calls: vaults, tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets', permitFailure: true });
17+
const erc4626Vaults = []
18+
const coreVaults = []
19+
for (const vault of vaultsApiResponse) {
20+
if (vault.chain_id !== api.chainId) continue
21+
22+
if (vault.type === 'core-vault') {
23+
coreVaults.push(vault)
24+
} else {
25+
erc4626Vaults.push(vault)
26+
}
27+
}
28+
29+
await api.erc4626Sum({ calls: erc4626Vaults.map(vault => vault.address), tokenAbi: 'address:asset', balanceAbi: 'uint256:totalAssets', permitFailure: true });
30+
31+
const coreVaultCollectResults = (
32+
await sdk.api.abi.multiCall({
33+
calls: coreVaults.map((vault) => ({ target: vault.collector, params: ['0x0000000000000000000000000000000000000000', vault.address, [vault.base_token.address, 0, 0]] })),
34+
abi: 'function collect(address,address,(address,uint256,uint256)) view returns ((address,address,address[],uint8[],uint256[],(address,address,bool,bool,bool,uint256,uint256[])[],uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,(address,address,uint256,uint256,uint256)[],(address,address,uint256,uint256,uint256)[],uint256,uint256))',
35+
permitFailure: true,
36+
})
37+
).output.map(x => x.output);
38+
39+
const coreVaultBaseAssets = coreVaultCollectResults.map(result => result[1])
40+
const coreVaultTvlBaseAssets = coreVaultCollectResults.map(result => result[9])
41+
api.add(coreVaultBaseAssets, coreVaultTvlBaseAssets)
1842
}
1943

2044
module.exports = {

0 commit comments

Comments
 (0)