diff --git a/coins/src/adapters/markets/crosscurve/index.ts b/coins/src/adapters/markets/crosscurve/index.ts index 2c04bf72eb..3b5e1b1d5c 100644 --- a/coins/src/adapters/markets/crosscurve/index.ts +++ b/coins/src/adapters/markets/crosscurve/index.ts @@ -84,6 +84,11 @@ export async function crosscurve(timestamp: number = 0) { > = {}; const allTokens = Object.values(config).flatMap((chain) => chain.tokens); + const chainTokens: Record> = {}; + allTokens.forEach((token) => { + chainTokens[token.chainId] ??= {}; + chainTokens[token.chainId][token.address.toLowerCase()] = token; + }); await Promise.all( Object.values(config).map(async (chainConfig) => { @@ -269,26 +274,34 @@ export async function crosscurve(timestamp: number = 0) { let tvl = 0; for (let j = 0; j < coins.length; j++) { - const coin = coins[j]; + const coin = coins[j].toLowerCase(); const balance = balances[i][j]; + const token = chainTokens[chainId][coin]; + + if (!token) { + console.warn( + `Token not found for coin: ${coin} on chain ${chainId}` + ); + return; + } let price = prices.find( - (data) => data.address.toLowerCase() === coin.toLowerCase() + (data) => data.address.toLowerCase() === coin )?.price; if (!price) { - price = synthPrices[chainId]?.[coin.toLowerCase()]; + price = synthPrices[chainId]?.[coin]; } if (!price) { - price = lpPrices[chainId]?.[coin.toLowerCase()]; + price = lpPrices[chainId]?.[coin]; } if (!price) { return; } - tvl += (balance / 10 ** lp.decimals) * price; + tvl += (balance / 10 ** token.decimals) * price; } const price = tvl / (supplies[i] / 10 ** lp.decimals);