From bbd69bea54e97ecaa67809813de784a8f45129a5 Mon Sep 17 00:00:00 2001 From: azf20 Date: Fri, 14 Feb 2025 15:16:22 +0000 Subject: [PATCH 1/2] feat: viem signing hex or uint8array --- .../src/wallet-providers/viemWalletProvider.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/typescript/agentkit/src/wallet-providers/viemWalletProvider.ts b/typescript/agentkit/src/wallet-providers/viemWalletProvider.ts index a09a48b2d..9a145655a 100644 --- a/typescript/agentkit/src/wallet-providers/viemWalletProvider.ts +++ b/typescript/agentkit/src/wallet-providers/viemWalletProvider.ts @@ -10,6 +10,8 @@ import { ReadContractParameters, ReadContractReturnType, parseEther, + isHex, + toHex, } from "viem"; import { EvmWalletProvider } from "./evmWalletProvider"; import { Network } from "../network"; @@ -64,13 +66,19 @@ export class ViemWalletProvider extends EvmWalletProvider { * @param message - The message to sign. * @returns The signed message. */ - async signMessage(message: string): Promise<`0x${string}`> { + async signMessage(message: string | Uint8Array): Promise<`0x${string}`> { const account = this.#walletClient.account; if (!account) { throw new Error("Account not found"); } - return this.#walletClient.signMessage({ account, message }); + const hexMessage = + typeof message === "string" ? (isHex(message) ? message : toHex(message)) : message; + + return this.#walletClient.signMessage({ + account, + message: { raw: hexMessage }, + }); } /** From bc04565520206d55c3d82ec480f5a4527884311a Mon Sep 17 00:00:00 2001 From: azf20 Date: Fri, 14 Feb 2025 15:22:59 +0000 Subject: [PATCH 2/2] fix: uint8array isn't hex --- .../agentkit/src/wallet-providers/viemWalletProvider.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typescript/agentkit/src/wallet-providers/viemWalletProvider.ts b/typescript/agentkit/src/wallet-providers/viemWalletProvider.ts index 9a145655a..4e73ba254 100644 --- a/typescript/agentkit/src/wallet-providers/viemWalletProvider.ts +++ b/typescript/agentkit/src/wallet-providers/viemWalletProvider.ts @@ -72,12 +72,12 @@ export class ViemWalletProvider extends EvmWalletProvider { throw new Error("Account not found"); } - const hexMessage = + const _message = typeof message === "string" ? (isHex(message) ? message : toHex(message)) : message; return this.#walletClient.signMessage({ account, - message: { raw: hexMessage }, + message: { raw: _message }, }); }