From 6894eaed4504636c14c5210d0b5860d75bfbc7d5 Mon Sep 17 00:00:00 2001 From: Benjamin Smith Date: Fri, 21 Feb 2025 14:54:15 +0100 Subject: [PATCH 1/2] Fix Native Asset Token Data Fetching --- packages/agent-sdk/src/evm/erc20.ts | 10 ++++++++++ packages/agent-sdk/tests/evm/token.spec.ts | 13 +++++++++++++ 2 files changed, 23 insertions(+) diff --git a/packages/agent-sdk/src/evm/erc20.ts b/packages/agent-sdk/src/evm/erc20.ts index 9131510..9832696 100644 --- a/packages/agent-sdk/src/evm/erc20.ts +++ b/packages/agent-sdk/src/evm/erc20.ts @@ -3,6 +3,7 @@ import { encodeFunctionData, type Address } from "viem"; import { getClient, type MetaTransaction } from "near-safe"; import type { TokenInfo } from "./types"; +const NATIVE_ASSET = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; const MAX_APPROVAL = BigInt( "115792089237316195423570985008687907853269984665640564039457584007913129639935", ); @@ -60,6 +61,15 @@ export async function getTokenInfo( chainId: number, address: Address, ): Promise { + if (address === NATIVE_ASSET) { + return { + address: NATIVE_ASSET, + decimals: 18, + // Not all Native Assets are ETH, but enough are. + symbol: "ETH", + }; + } + const [decimals, symbol] = await Promise.all([ getTokenDecimals(chainId, address), getTokenSymbol(chainId, address), diff --git a/packages/agent-sdk/tests/evm/token.spec.ts b/packages/agent-sdk/tests/evm/token.spec.ts index 0bfd0d7..6a34faf 100644 --- a/packages/agent-sdk/tests/evm/token.spec.ts +++ b/packages/agent-sdk/tests/evm/token.spec.ts @@ -13,6 +13,19 @@ describe("getTokenDetails", () => { expect(tokenDetails).toBeDefined(); }); + it("should return the token details for native asset", async () => { + const tokenDetails = await getTokenDetails( + 8453, + "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + ); + + expect(tokenDetails).toStrictEqual({ + address: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + decimals: 18, + symbol: "ETH", + }); + }); + it("should return the token details for a given symbol", async () => { const tokenDetails = await getTokenDetails(43114, "UNI"); expect(tokenDetails).toBeUndefined(); From a69af5b40be529450b1cfb80e4314b7374067bd4 Mon Sep 17 00:00:00 2001 From: Benjamin Smith Date: Fri, 21 Feb 2025 14:57:34 +0100 Subject: [PATCH 2/2] Compare lower case addresses --- packages/agent-sdk/src/evm/erc20.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/agent-sdk/src/evm/erc20.ts b/packages/agent-sdk/src/evm/erc20.ts index 9832696..342ecf3 100644 --- a/packages/agent-sdk/src/evm/erc20.ts +++ b/packages/agent-sdk/src/evm/erc20.ts @@ -61,7 +61,7 @@ export async function getTokenInfo( chainId: number, address: Address, ): Promise { - if (address === NATIVE_ASSET) { + if (address.toLowerCase() === NATIVE_ASSET.toLowerCase()) { return { address: NATIVE_ASSET, decimals: 18,