From afdcf40b4b5838a20f76e68e369a1d1b0339dd38 Mon Sep 17 00:00:00 2001 From: Benjamin Smith Date: Mon, 2 Dec 2024 14:00:15 +0100 Subject: [PATCH 1/3] Add WETH Utils --- packages/agent-sdk/src/evm/erc20.ts | 14 ++++ packages/agent-sdk/src/evm/weth.ts | 109 ++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 packages/agent-sdk/src/evm/weth.ts diff --git a/packages/agent-sdk/src/evm/erc20.ts b/packages/agent-sdk/src/evm/erc20.ts index 6527d17..b03a403 100644 --- a/packages/agent-sdk/src/evm/erc20.ts +++ b/packages/agent-sdk/src/evm/erc20.ts @@ -55,6 +55,20 @@ export async function erc20Approve(params: { }); } +export async function checkAllowance( + owner: Address, + token: Address, + spender: Address, + chainId: number, +): Promise { + return getClient(chainId).readContract({ + address: token, + abi: erc20Abi, + functionName: "allowance", + args: [owner, spender], + }); +} + export async function getTokenInfo( chainId: number, address: Address, diff --git a/packages/agent-sdk/src/evm/weth.ts b/packages/agent-sdk/src/evm/weth.ts new file mode 100644 index 0000000..9ccecc3 --- /dev/null +++ b/packages/agent-sdk/src/evm/weth.ts @@ -0,0 +1,109 @@ +import { Network, type MetaTransaction, type SignRequestData } from "near-safe"; +import { type Address, encodeFunctionData, getAddress, parseAbi, parseEther, toHex } from "viem"; +import { signRequestFor } from "."; + +type NativeAsset = { + address: Address; + symbol: string; + scanUrl: string; + decimals: number; +}; + +export function validateWethInput(params: URLSearchParams): { + chainId: number; + amount: bigint; + nativeAsset: NativeAsset; +} { + const chainIdStr = params.get("chainId"); + const amountStr = params.get("amount"); + + // Ensure required fields + if (!chainIdStr) { + throw new Error("Missing required parameter: chainId"); + } + if (!amountStr) { + throw new Error("Missing required parameter: amount"); + } + + // Validate chainId + const chainId = parseInt(chainIdStr); + if (isNaN(chainId)) { + throw new Error("Invalid chainId, must be a number"); + } + + // Validate amount + const amount = parseFloat(amountStr); + if (isNaN(amount) || amount <= 0) { + throw new Error("Invalid amount, must be a positive float"); + } + + return { + chainId, + amount: parseEther(amount.toString()), + nativeAsset: getNativeAsset(chainId), + }; +} + +export function unwrapSignRequest( + chainId: number, + amount: bigint, +): SignRequestData { + return signRequestFor({ + chainId, + metaTransactions: [unwrapMetaTransaction(chainId, amount)], + }); +} + +export const unwrapMetaTransaction = ( + chainId: number, + amount: bigint, +): MetaTransaction => { + return { + to: getNativeAsset(chainId).address, + value: "0x0", + data: encodeFunctionData({ + abi: parseAbi(["function withdraw(uint wad)"]), + functionName: "withdraw", + args: [parseEther(amount.toString())], + }), + }; +}; + + +export function wrapSignRequest( + chainId: number, + amount: bigint, +): SignRequestData { + return signRequestFor({ + chainId, + metaTransactions: [wrapMetaTransaction(chainId, amount)], + }); +} + +export const wrapMetaTransaction = ( + chainId: number, + amount: bigint, +): MetaTransaction => { + return { + to: getNativeAsset(chainId).address, + value: toHex(amount), + // methodId for weth.deposit + data: "0xd0e30db0", + }; +}; + +export function getNativeAsset(chainId: number): NativeAsset { + const network = Network.fromChainId(chainId); + const wethAddress = network.nativeCurrency.wrappedAddress; + if (!wethAddress) { + throw new Error( + `Couldn't find wrapped address for Network ${network.name} (chainId=${chainId})`, + ); + } + return { + address: getAddress(wethAddress), + symbol: network.nativeCurrency.symbol, + scanUrl: `${network.scanUrl}/address/${wethAddress}`, + decimals: network.nativeCurrency.decimals, + }; +} From 5e5f9c5edec67e0d088c9ca8e457f3a8454ecc23 Mon Sep 17 00:00:00 2001 From: Benjamin Smith Date: Mon, 2 Dec 2024 14:34:02 +0100 Subject: [PATCH 2/3] Testing EVM Utils --- bun.lockb | Bin 143464 -> 241760 bytes jest.config.cjs | 9 + package.json | 7 +- packages/agent-sdk/src/evm/index.ts | 4 +- packages/agent-sdk/src/evm/weth.ts | 12 +- packages/agent-sdk/src/index.ts | 55 ------ packages/agent-sdk/tests/evm/erc20.spec.ts | 185 +++++++++++++++++++++ packages/agent-sdk/tests/evm/weth.spec.ts | 167 +++++++++++++++++++ packages/agent-sdk/tests/validate.spec.ts | 59 +++++++ tsconfig.json | 3 +- 10 files changed, 438 insertions(+), 63 deletions(-) create mode 100644 jest.config.cjs create mode 100644 packages/agent-sdk/tests/evm/erc20.spec.ts create mode 100644 packages/agent-sdk/tests/evm/weth.spec.ts create mode 100644 packages/agent-sdk/tests/validate.spec.ts diff --git a/bun.lockb b/bun.lockb index 873c009e606c0ecfae8e13f028f5845aa8cb12ea..0218d2e6efb6271597110c040524db522c06576a 100755 GIT binary patch literal 241760 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 delta 29375 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 Z$ytz6oj0`ZHaKRN@oki9&MWQ{{}2CL5Rd=> diff --git a/jest.config.cjs b/jest.config.cjs new file mode 100644 index 0000000..61cf8cd --- /dev/null +++ b/jest.config.cjs @@ -0,0 +1,9 @@ +/** @type {import('jest').Config} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + extensionsToTreatAsEsm: ['.ts'], +} \ No newline at end of file diff --git a/package.json b/package.json index 67e60ae..b780417 100644 --- a/package.json +++ b/package.json @@ -6,17 +6,22 @@ "workspaces": [ "packages/*" ], + "type": "module", "scripts": { "build": "bun run --cwd packages/agent-sdk build", "lint": "prettier --check packages/**/* && eslint packages/", - "fmt": "prettier --write packages/**/* && eslint packages/ --fix" + "fmt": "prettier --write packages/**/* && eslint packages/ --fix", + "test": "jest" }, "devDependencies": { "@types/bun": "latest", + "@types/jest": "^29.5.14", "@typescript-eslint/eslint-plugin": "^8.16.0", "@typescript-eslint/parser": "^8.16.0", "eslint": "^9.15.0", + "jest": "^29.7.0", "prettier": "^3.4.1", + "ts-jest": "^29.2.5", "typescript": "^5.7.2" } } diff --git a/packages/agent-sdk/src/evm/index.ts b/packages/agent-sdk/src/evm/index.ts index 7a9fc35..47a3fe3 100644 --- a/packages/agent-sdk/src/evm/index.ts +++ b/packages/agent-sdk/src/evm/index.ts @@ -4,6 +4,7 @@ import { getAddress, type Hex, zeroAddress, type Address } from "viem"; export * from "./types"; export * from "./erc20"; +export * from "./weth"; export function signRequestFor({ from, @@ -14,7 +15,6 @@ export function signRequestFor({ chainId: number; metaTransactions: MetaTransaction[]; }): SignRequestData { - console.log("metaTransactions", metaTransactions); return { method: "eth_sendTransaction", chainId, @@ -59,7 +59,6 @@ export async function validateRequest< safeSaltNonce: string, ): Promise { const metadataHeader = req.headers.get("mb-metadata"); - console.log("Request Metadata:", JSON.stringify(metadataHeader, null, 2)); const metadata = JSON.parse(metadataHeader ?? "{}"); const { accountId, evmAddress } = metadata; if (!accountId || !evmAddress) { @@ -78,7 +77,6 @@ export async function validateRequest< { status: 401 }, ) as TResponse; } - console.log(`Valid request for ${accountId} <-> ${evmAddress}`); return null; } diff --git a/packages/agent-sdk/src/evm/weth.ts b/packages/agent-sdk/src/evm/weth.ts index 9ccecc3..df91376 100644 --- a/packages/agent-sdk/src/evm/weth.ts +++ b/packages/agent-sdk/src/evm/weth.ts @@ -1,5 +1,12 @@ import { Network, type MetaTransaction, type SignRequestData } from "near-safe"; -import { type Address, encodeFunctionData, getAddress, parseAbi, parseEther, toHex } from "viem"; +import { + type Address, + encodeFunctionData, + getAddress, + parseAbi, + parseEther, + toHex, +} from "viem"; import { signRequestFor } from "."; type NativeAsset = { @@ -64,12 +71,11 @@ export const unwrapMetaTransaction = ( data: encodeFunctionData({ abi: parseAbi(["function withdraw(uint wad)"]), functionName: "withdraw", - args: [parseEther(amount.toString())], + args: [amount], }), }; }; - export function wrapSignRequest( chainId: number, amount: bigint, diff --git a/packages/agent-sdk/src/index.ts b/packages/agent-sdk/src/index.ts index 24f18cc..73a1f49 100644 --- a/packages/agent-sdk/src/index.ts +++ b/packages/agent-sdk/src/index.ts @@ -1,57 +1,2 @@ -import { parseUnits, type Address } from "viem"; -import { erc20Transfer, getTokenDecimals } from "./evm"; -import { - addressField, - floatField, - numberField, - validateInput, - type FieldParser, -} from "./validate"; - export * from "./validate"; export * from "./evm"; - -interface Input { - chainId: number; - amount: number; - token: Address; - recipient: Address; -} - -const parsers: FieldParser = { - chainId: numberField, - // Note that this is a float (i.e. token units) - amount: floatField, - token: addressField, - recipient: addressField, -}; - -export async function GET(req: Request): Promise { - const url = new URL(req.url); - const search = url.searchParams; - console.log("erc20/", search); - try { - const { chainId, amount, token, recipient } = validateInput( - search, - parsers, - ); - const decimals = await getTokenDecimals(chainId, token); - return Response.json( - { - transaction: erc20Transfer({ - chainId, - token, - to: recipient, - amount: parseUnits(amount.toString(), decimals), - }), - }, - { status: 200 }, - ); - } catch (error: unknown) { - const message = - error instanceof Error - ? error.message - : `Unknown error occurred ${String(error)}`; - return Response.json({ ok: false, message }, { status: 400 }); - } -} diff --git a/packages/agent-sdk/tests/evm/erc20.spec.ts b/packages/agent-sdk/tests/evm/erc20.spec.ts new file mode 100644 index 0000000..59f1d0e --- /dev/null +++ b/packages/agent-sdk/tests/evm/erc20.spec.ts @@ -0,0 +1,185 @@ +import { type Address, erc20Abi } from "viem"; +import { getClient } from "near-safe"; +import { + erc20Transfer, + erc20Approve, + checkAllowance, + getTokenInfo, + getTokenDecimals, + getTokenSymbol, +} from "../../src"; + +// Mock the external dependencies +jest.mock("near-safe"); + +describe("ERC20 Utilities", () => { + const mockAddress = "0x1234567890123456789012345678901234567890" as Address; + const mockChainId = 1; + const mockAmount = 1000n; + + describe("erc20Transfer", () => { + it("creates correct transfer transaction", async () => { + const params = { + chainId: mockChainId, + token: mockAddress, + to: mockAddress, + amount: mockAmount, + }; + + const signRequest = await erc20Transfer(params); + + expect(signRequest).toEqual({ + chainId: 1, + method: "eth_sendTransaction", + params: [ + { + data: "0xa9059cbb000000000000000000000000123456789012345678901234567890123456789000000000000000000000000000000000000000000000000000000000000003e8", + from: "0x0000000000000000000000000000000000000000", + to: "0x1234567890123456789012345678901234567890", + value: "0x", + }, + ], + }); + }); + }); + + describe("erc20Approve", () => { + it("creates approval transaction with specific amount", async () => { + const params = { + chainId: mockChainId, + token: mockAddress, + spender: mockAddress, + amount: mockAmount, + }; + + const signRequest = await erc20Approve(params); + + expect(signRequest).toEqual({ + chainId: 1, + method: "eth_sendTransaction", + params: [ + { + data: "0x095ea7b3000000000000000000000000123456789012345678901234567890123456789000000000000000000000000000000000000000000000000000000000000003e8", + from: "0x0000000000000000000000000000000000000000", + to: "0x1234567890123456789012345678901234567890", + value: "0x", + }, + ], + }); + }); + + it("creates approval transaction with max amount when amount not specified", async () => { + const params = { + chainId: mockChainId, + token: mockAddress, + spender: mockAddress, + }; + + const signRequest = await erc20Approve(params); + + expect(signRequest).toEqual({ + chainId: 1, + method: "eth_sendTransaction", + params: [ + { + data: "0x095ea7b30000000000000000000000001234567890123456789012345678901234567890ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + from: "0x0000000000000000000000000000000000000000", + to: "0x1234567890123456789012345678901234567890", + value: "0x", + }, + ], + }); + }); + }); + + describe("checkAllowance", () => { + it("reads allowance correctly", async () => { + const mockClient = { + readContract: jest.fn().mockResolvedValue(BigInt(1000)), + }; + (getClient as jest.Mock).mockReturnValue(mockClient); + + const result = await checkAllowance( + mockAddress, + mockAddress, + mockAddress, + mockChainId, + ); + + expect(result).toBe(BigInt(1000)); + expect(mockClient.readContract).toHaveBeenCalledWith({ + address: mockAddress, + abi: erc20Abi, + functionName: "allowance", + args: [mockAddress, mockAddress], + }); + }); + }); + + describe("getTokenInfo", () => { + it("fetches token info correctly", async () => { + const mockClient = { + readContract: jest + .fn() + .mockResolvedValueOnce(18) // decimals + .mockResolvedValueOnce("TEST"), // symbol + }; + (getClient as jest.Mock).mockReturnValue(mockClient); + + const result = await getTokenInfo(mockChainId, mockAddress); + + expect(result).toEqual({ + decimals: 18, + symbol: "TEST", + }); + }); + }); + + describe("getTokenDecimals", () => { + it("fetches decimals correctly", async () => { + const mockClient = { + readContract: jest.fn().mockResolvedValue(18), + }; + (getClient as jest.Mock).mockReturnValue(mockClient); + + const result = await getTokenDecimals(mockChainId, mockAddress); + + expect(result).toBe(18); + }); + + it("handles errors appropriately", async () => { + const mockClient = { + readContract: jest.fn().mockRejectedValue(new Error("Test error")), + }; + (getClient as jest.Mock).mockReturnValue(mockClient); + + await expect(getTokenDecimals(mockChainId, mockAddress)).rejects.toThrow( + "Error fetching token decimals: Error: Test error", + ); + }); + }); + + describe("getTokenSymbol", () => { + it("fetches symbol correctly", async () => { + const mockClient = { + readContract: jest.fn().mockResolvedValue("TEST"), + }; + (getClient as jest.Mock).mockReturnValue(mockClient); + + const result = await getTokenSymbol(mockChainId, mockAddress); + + expect(result).toBe("TEST"); + }); + + it("handles errors appropriately", async () => { + const mockClient = { + readContract: jest.fn().mockRejectedValue(new Error("Test error")), + }; + (getClient as jest.Mock).mockReturnValue(mockClient); + + await expect(getTokenSymbol(mockChainId, mockAddress)).rejects.toThrow( + "Error fetching token decimals: Error: Test error", + ); + }); + }); +}); diff --git a/packages/agent-sdk/tests/evm/weth.spec.ts b/packages/agent-sdk/tests/evm/weth.spec.ts new file mode 100644 index 0000000..248d0fb --- /dev/null +++ b/packages/agent-sdk/tests/evm/weth.spec.ts @@ -0,0 +1,167 @@ +import { Network } from "near-safe"; +import { parseEther } from "viem"; +import { + validateWethInput, + unwrapSignRequest, + wrapSignRequest, + getNativeAsset, + unwrapMetaTransaction, + wrapMetaTransaction, +} from "../../src/evm/weth"; +import { signRequestFor } from "../../src"; + +// Mock the external dependencies +jest.mock("../../src", () => ({ + signRequestFor: jest.fn().mockImplementation((args) => args), +})); + +describe("evm/weth", () => { + // Existing tests + it("unwrapMetaTransaction", async () => { + expect(unwrapMetaTransaction(100, 25n)).toStrictEqual({ + to: "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", + value: "0x0", + data: "0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000019", + }); + }); + + it("wrapMetaTransaction", async () => { + expect(wrapMetaTransaction(100, 25n)).toStrictEqual({ + to: "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", + value: "0x19", + data: "0xd0e30db0", + }); + }); + + // New tests + describe("validateWethInput", () => { + it("validates correct input parameters", () => { + const params = new URLSearchParams({ + chainId: "100", + amount: "1.5", + }); + + const result = validateWethInput(params); + expect(result).toEqual({ + chainId: 100, + amount: parseEther("1.5"), + nativeAsset: expect.objectContaining({ + address: "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", + symbol: "XDAI", + decimals: 18, + }), + }); + }); + + it("throws error for missing chainId", () => { + const params = new URLSearchParams({ + amount: "1.5", + }); + + expect(() => validateWethInput(params)).toThrow( + "Missing required parameter: chainId", + ); + }); + + it("throws error for missing amount", () => { + const params = new URLSearchParams({ + chainId: "100", + }); + + expect(() => validateWethInput(params)).toThrow( + "Missing required parameter: amount", + ); + }); + + it("throws error for invalid chainId", () => { + const params = new URLSearchParams({ + chainId: "invalid", + amount: "1.5", + }); + + expect(() => validateWethInput(params)).toThrow( + "Invalid chainId, must be a number", + ); + }); + + it("throws error for invalid amount", () => { + const params = new URLSearchParams({ + chainId: "100", + amount: "-1.5", + }); + + expect(() => validateWethInput(params)).toThrow( + "Invalid amount, must be a positive float", + ); + }); + }); + + describe("unwrapSignRequest", () => { + it("creates correct unwrap sign request", () => { + const signRequest = unwrapSignRequest(100, 25n); + expect(signRequest).toEqual({ + method: "eth_sendTransaction", + chainId: 100, + params: [ + { + from: "0x0000000000000000000000000000000000000000", + to: "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", + value: "0x0", + data: "0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000019", + }, + ], + }); + }); + }); + + describe("wrapSignRequest", () => { + it("creates correct wrap sign request", () => { + const signRequest = wrapSignRequest(100, 25n); + expect(signRequest).toEqual({ + method: "eth_sendTransaction", + chainId: 100, + params: [ + { + from: "0x0000000000000000000000000000000000000000", + to: "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", + value: "0x19", + data: "0xd0e30db0", + }, + ], + }); + }); + }); + + describe("getNativeAsset", () => { + it("returns correct native asset info for known chain", () => { + const result = getNativeAsset(100); + + expect(result).toEqual({ + address: "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", + symbol: "XDAI", + scanUrl: + "https://gnosisscan.io/address/0xe91d153e0b41518a2ce8dd3d7944fa863463a97d", + decimals: 18, + }); + }); + + it("throws error for chain without wrapped address", () => { + // Mock a network without wrapped address + jest.spyOn(Network, "fromChainId").mockImplementationOnce( + () => + ({ + name: "TestNet", + nativeCurrency: { + wrappedAddress: null, + symbol: "TEST", + decimals: 18, + }, + }) as unknown as Network, + ); + + expect(() => getNativeAsset(999)).toThrow( + "Couldn't find wrapped address for Network TestNet (chainId=999)", + ); + }); + }); +}); diff --git a/packages/agent-sdk/tests/validate.spec.ts b/packages/agent-sdk/tests/validate.spec.ts new file mode 100644 index 0000000..beded1f --- /dev/null +++ b/packages/agent-sdk/tests/validate.spec.ts @@ -0,0 +1,59 @@ +import { + addressField, + type FieldParser, + floatField, + numberField, + validateInput, +} from "../src"; +import { type Address, zeroAddress } from "viem"; + +interface Input { + int: number; + float: number; + address: Address; +} + +const parsers: FieldParser = { + int: numberField, + float: floatField, + address: addressField, +}; + +describe("field validation", () => { + it("ERC20 Input success", async () => { + const search = new URLSearchParams( + `int=123&float=0.45&address=${zeroAddress}`, + ); + const input = validateInput(search, parsers); + expect(input).toStrictEqual({ + int: 123, + float: 0.45, + address: zeroAddress, + }); + }); + it("ERC20 Input fail", async () => { + const search = new URLSearchParams(`float=0.45&address=${zeroAddress}`); + expect(() => validateInput(search, parsers)).toThrow( + "Missing required field: 'int'", + ); + search.set("int", "poop"); + expect(() => validateInput(search, parsers)).toThrow( + "Invalid Integer field 'int': Not a number", + ); + search.set("int", "1"); + search.set("address", "0x12"); + expect(() => validateInput(search, parsers)).toThrow( + "Invalid Address field 'address': 0x12", + ); + + const search2 = new URLSearchParams( + "int=11155111&float=0.069&address=0xDcf56F5a8Cc380f63b6396Dbddd0aE9fa605BeeE", + ); + const input = validateInput(search2, parsers); + expect(input).toStrictEqual({ + int: 11155111, + float: 0.069, + address: "0xDcf56F5a8Cc380f63b6396Dbddd0aE9fa605BeeE", + }); + }); +}); diff --git a/tsconfig.json b/tsconfig.json index 238655f..5e04b15 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,11 +7,12 @@ "moduleDetection": "force", "jsx": "react-jsx", "allowJs": true, + "esModuleInterop": true, // Bundler mode "moduleResolution": "bundler", "allowImportingTsExtensions": true, - "verbatimModuleSyntax": true, + "verbatimModuleSyntax": false, "noEmit": true, // Best practices From 706f125a38f8fafa33bf3936d0a68812c7cc5911 Mon Sep 17 00:00:00 2001 From: Benjamin Smith Date: Mon, 2 Dec 2024 14:34:23 +0100 Subject: [PATCH 3/3] Update CI file to run tests --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 7a2912b..06e6ba1 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -37,5 +37,5 @@ jobs: - name: Lint & Build run: | bun lint - # bun run test + bun run test bun run build \ No newline at end of file