Skip to content

Commit

Permalink
feat: update Arrakis Finance to add Arrakis Modular TVL (#11973)
Browse files Browse the repository at this point in the history
Co-authored-by: g1nt0ki <[email protected]>
  • Loading branch information
danieljcss and g1nt0ki authored Oct 23, 2024
1 parent a9b0e31 commit a179ec0
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions projects/arrakis-modular/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
const config = {
ethereum: {
factory: '0x820FB8127a689327C863de8433278d6181123982',
fromBlock: 20540819,
},
arbitrum: {
factory: '0x820FB8127a689327C863de8433278d6181123982',
fromBlock: 243467827,
},
base: {
factory: '0x820FB8127a689327C863de8433278d6181123982',
fromBlock: 18512550,
},
}

module.exports = {
doublecounted: true,
};

Object.keys(config).forEach(chain => {
const { factory } = config[chain]
module.exports[chain] = {
tvl: async (api) => {
const numPublicVaults = await api.call({ abi: 'uint256:numOfPublicVaults', target: factory })
const numPrivateVaults = await api.call({ abi: 'uint256:numOfPrivateVaults', target: factory })
const publicVaults = numPublicVaults > 0 ? await api.call({ abi: 'function publicVaults(uint256 startIndex_, uint256 endIndex_) returns (address[] memory)', target: factory, params: [0, numPublicVaults] }) : []
const privateVaults = numPrivateVaults > 0 ? await api.call({ abi: 'function privateVaults(uint256 startIndex_, uint256 endIndex_) returns (address[] memory)', target: factory, params: [0, numPrivateVaults] }) : []
const vaults = [...publicVaults, ...privateVaults]
const [token0s, token1s, bals] = await Promise.all([
api.multiCall({ abi: 'address:token0', calls: vaults }),
api.multiCall({ abi: 'address:token1', calls: vaults }),
api.multiCall({ abi: 'function totalUnderlying() view returns (uint256, uint256)', calls: vaults }),
])

bals.forEach(([v0, v1], i) => {
api.add(token0s[i], v0)
api.add(token1s[i], v1)
})
}
}
})

0 comments on commit a179ec0

Please sign in to comment.