diff --git a/packages/checkout/widgets-lib/src/widgets/add-funds/functions/convertTokenBalanceToUsd.ts b/packages/checkout/widgets-lib/src/widgets/add-funds/functions/convertTokenBalanceToUsd.ts new file mode 100644 index 0000000000..50a529f667 --- /dev/null +++ b/packages/checkout/widgets-lib/src/widgets/add-funds/functions/convertTokenBalanceToUsd.ts @@ -0,0 +1,20 @@ +import { TokenBalance } from '@0xsquid/sdk/dist/types'; +import { RouteResponse } from '@0xsquid/squid-types'; +import { ethers } from 'ethers'; + +export function convertTokenBalanceToUsd( + balance: TokenBalance, + routeResponse: RouteResponse, +): number { + const { usdPrice } = routeResponse.route.estimate.fromToken; + + if (!usdPrice) { + throw new Error('USD conversion rate not available'); + } + + const tokenBalance = ethers.utils.formatUnits(balance.balance, balance.decimals); + + const usdBalance = parseFloat(tokenBalance) * usdPrice; + + return usdBalance; +}