UNPKG

@daimo/pay

Version:

Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.

46 lines (43 loc) 1.53 kB
import { formatUnits } from 'viem'; const USD_DECIMALS = 2; function roundDecimals(value, decimals, round) { const factor = 10 ** decimals; const multiplied = value * factor; let rounded; if (round === "up") { rounded = Math.ceil(multiplied); } else if (round === "down") { rounded = Math.floor(multiplied); } else { rounded = Math.round(multiplied); } return (rounded / factor).toFixed(decimals); } function formatUsd(usd, round = "down") { return new Intl.NumberFormat("en-US", { style: "currency", currency: "USD" }).format(Number(roundUsd(usd, round))); } function roundUsd(usd, round = "down") { return roundDecimals(usd, USD_DECIMALS, round); } function roundTokenAmount(amount, token, round = "down") { return roundDecimals( Number(formatUnits(BigInt(amount), token.decimals)), token.displayDecimals, round ); } function roundTokenAmountUnits(amountUnits, token, round = "down") { return roundDecimals(amountUnits, token.displayDecimals, round); } function usdToRoundedTokenAmount(usd, token, round = "down") { return roundTokenAmountUnits(usd / token.usd, token, round); } function tokenAmountToRoundedUsd(amount, token, round = "nearest") { const amountUnits = formatUnits(BigInt(amount), token.decimals); return roundUsd(Number(amountUnits) * token.usd, round); } export { USD_DECIMALS, formatUsd, roundDecimals, roundTokenAmount, roundTokenAmountUnits, roundUsd, tokenAmountToRoundedUsd, usdToRoundedTokenAmount }; //# sourceMappingURL=format.js.map