diff --git a/packages/agent-sdk/src/evm/safe.ts b/packages/agent-sdk/src/evm/safe.ts index 821ad78..94044ee 100644 --- a/packages/agent-sdk/src/evm/safe.ts +++ b/packages/agent-sdk/src/evm/safe.ts @@ -128,7 +128,7 @@ export async function flatSafeBalances( } // TODO(bh2smith): Move this into Zerion SDK -function zerionToTokenBalance(userToken: UserToken): TokenBalance { +export function zerionToTokenBalance(userToken: UserToken): TokenBalance { const { meta, balances } = userToken; return { tokenAddress: meta.contractAddress || null, @@ -138,7 +138,7 @@ function zerionToTokenBalance(userToken: UserToken): TokenBalance { decimals: meta.decimals, logoUri: meta.tokenIcon || "", }, - balance: parseUnits(balances.balance.toString(), meta.decimals).toString(), // Convert number to string + balance: parseUnits(balances.balance.toFixed(), meta.decimals).toString(), // Convert number to string fiatBalance: balances.usdBalance.toFixed(2), fiatConversion: (balances.price || 0).toFixed(2), }; diff --git a/packages/agent-sdk/tests/evm/safe.spec.ts b/packages/agent-sdk/tests/evm/safe.spec.ts index 8488c45..2bc6525 100644 --- a/packages/agent-sdk/tests/evm/safe.spec.ts +++ b/packages/agent-sdk/tests/evm/safe.spec.ts @@ -1,5 +1,9 @@ import { zeroAddress } from "viem"; -import { getSafeBalances, flatSafeBalances } from "../../src"; +import { + getSafeBalances, + flatSafeBalances, + zerionToTokenBalance, +} from "../../src"; describe("getSafeBalances", () => { const originalWarn = console.warn; @@ -17,6 +21,37 @@ describe("getSafeBalances", () => { await expect(getSafeBalances(999, zeroAddress)).resolves.toEqual([]); }); + it("should throw error for unsupported chain ID", () => { + expect( + zerionToTokenBalance({ + chain: { + chainName: "", + }, + balances: { + balance: 2.22047152096e-16, + usdBalance: 0, + }, + meta: { + name: "", + symbol: "", + decimals: 0, + isSpam: false, + }, + }), + ).toEqual({ + balance: "0", + fiatBalance: "0.00", + fiatConversion: "0.00", + token: { + decimals: 0, + logoUri: "", + name: "", + symbol: "", + }, + tokenAddress: null, + }); + }); + it.skip("should fetch balances for Arbitrum", async () => { const result = await getSafeBalances( 42161,