UNPKG

@swapper-finance/sdk

Version:
46 lines (42 loc) 1.5 kB
import { Balances } from "@src/interfaces"; import { abbreviateNumber, weiToHumanReadable } from "./numbers"; import { TokenWithChain } from "@src/models"; import { CASH_TOKEN_ADDRESS_BY_CHAIN } from "@src/config"; export const convertTokensBalances = ( tokensBalances: Record<string, Record<string, string>>, allTokens: TokenWithChain[], ): Record<string, Record<string, Balances>> => { const result: Record<string, Record<string, Balances>> = {}; const decimalsMap = {}; allTokens.forEach((token) => { if (!decimalsMap[token.chainId]) { decimalsMap[token.chainId] = {}; } decimalsMap[token.chainId][token.address] = token.decimals; }); for (const chainId in tokensBalances) { result[chainId] = {}; if (!decimalsMap[chainId]) { continue; } for (const tokenAddress in tokensBalances[chainId]) { const wei = tokensBalances[chainId][tokenAddress]; const humanReadable = weiToHumanReadable({ amount: wei || "0", decimals: decimalsMap[chainId][tokenAddress] || 18, precisionFractionalPlaces: decimalsMap[chainId][tokenAddress] || 18, }); const abbreviated = abbreviateNumber( humanReadable, tokenAddress === CASH_TOKEN_ADDRESS_BY_CHAIN[chainId] ? 2 : undefined, tokenAddress === CASH_TOKEN_ADDRESS_BY_CHAIN[chainId], ); result[chainId][tokenAddress] = { wei: wei || "0", humanReadable, abbreviated, }; } } return result; };