Files
2024-10-31 06:54:05 +01:00

48 lines
1.5 KiB
JavaScript

const ADDRESSES = require('../helper/coreAssets.json')
const ITP_VAULT_ADDRRESS= '0x23371aEEaF8718955C93aEC726b3CAFC772B9E37'
const ITP_ON_OPTIMISM = "0x0a7B751FcDBBAA8BB988B9217ad5Fb5cfe7bf7A0";
const VELO_PRICE_ORACLE = "0x395942C2049604a314d39F370Dfb8D87AAC89e16";
const WETH_TOKEN_ADDRESS = ADDRESSES.optimism.WETH_1;
const VELO_TOKEN_ADDRESS = "0x3c8b650257cfb5f272f799f5e2b4e65093a11a05";
const OP_TOKEN_ADDRESS = ADDRESSES.optimism.OP;
const USDC_OP_TOKEN_ADDRESS = ADDRESSES.optimism.USDC_CIRCLE;
const ITP_STAKED_ABI = "function getVaultInfo() view returns (uint256, uint256, uint256, uint256, uint256, uint256[], uint256)";
const getStakedTVL = async (api) => {
const { chain } = api
let stakedTVL = 0;
if(chain === 'optimism'){
const fetchVeloPrice = await api.call( {
abi: "function getManyRatesWithConnectors(uint8, address[]) view returns (uint256[] memory rates)",
target: VELO_PRICE_ORACLE,
params: [
1,
[
ITP_ON_OPTIMISM,
VELO_TOKEN_ADDRESS,
WETH_TOKEN_ADDRESS,
OP_TOKEN_ADDRESS,
USDC_OP_TOKEN_ADDRESS,
],
],
})
const price = parseInt(fetchVeloPrice[0]) / Math.pow(10, 18)
const stakedBalance = await api.call({
abi: ITP_STAKED_ABI,
target: ITP_VAULT_ADDRRESS,
});
const staked = parseInt(stakedBalance[0]) / Math.pow(10, 18)
stakedTVL = staked * price
}
api.addUSDValue(stakedTVL)
}
module.exports = {
optimism: {
tvl: () => ({}),
staking: getStakedTVL
},
}