diff --git a/projects/brahmafi/abi.json b/projects/brahmafi/abi.json new file mode 100644 index 000000000..1a9d4363c --- /dev/null +++ b/projects/brahmafi/abi.json @@ -0,0 +1,28 @@ +{ + "wantToken": { + "inputs": [], + "name": "wantToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + "totalVaultFunds": { + "inputs": [], + "name": "totalVaultFunds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } +} \ No newline at end of file diff --git a/projects/brahmafi/index.js b/projects/brahmafi/index.js index 2b98a1c79..3d7e1102f 100644 --- a/projects/brahmafi/index.js +++ b/projects/brahmafi/index.js @@ -1,16 +1,28 @@ -const axios = require("axios"); +const sdk = require('@defillama/sdk') +const abi = require('./abi.json') -const BASE_API = "https://vault-api.brahma.fi"; -const ENDPOINTS = { - tvl: "/tvl", -}; +const vaults = [ + '0xAa0508FcD0352B206F558b2B817dcC1F0cc3F401', // ETH Maxi + '0x1c4ceb52ab54a35f9d03fcc156a7c57f965e081e', // PM USDC +] const tvl = async (timestamp, block) => { - const result = await axios.default.get(`${BASE_API}${ENDPOINTS.tvl}`); + const calls = vaults.map(v => ({ target: v })) + const balances = {} - if (result.status !== 200) return {}; + const [ + tokens, balance + ] = await Promise.all([ + sdk.api.abi.multiCall({ block, calls, abi: abi.wantToken }), + // sdk.api.abi.multiCall({ block, calls, abi: abi.totalVaultFunds }), + sdk.api.abi.multiCall({ block, calls, abi: 'erc20:totalSupply' }), + ]).then(o => o.map(i => i.output)) - return result.data?.data || {}; + tokens.forEach((i, j) => { + balances[i.output] = balance[j].output + }); + + return balances }; module.exports = {