Function: viemWallet()
viemWallet(
client: { }):AbstractSigner
Defined in: evm/viem/wallet-adapter.ts:214
Convert viem WalletClient to ethers-compatible Signer.
Supports both:
- Local accounts (privateKeyToAccount, mnemonicToAccount)
- JSON-RPC accounts (browser wallets like MetaMask)
Works with ALL viem transport types including:
- http() - Standard HTTP transport
- webSocket() - WebSocket transport
- custom() - Injected providers (MetaMask, WalletConnect, etc.)
Parameters
| Parameter | Type | Description |
|---|---|---|
client | { } | viem WalletClient instance with account and chain defined |
Returns
AbstractSigner
ethers AbstractSigner for use with sendMessage, manuallyExecute, etc.
Examples
TypeScript
import { createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet } from 'viem/chains'
import { fromViemClient, viemWallet } from '@chainlink/ccip-sdk/viem'
const account = privateKeyToAccount('0x...')
const walletClient = createWalletClient({
chain: mainnet,
transport: http('https://eth.llamarpc.com'),
account,
})
const chain = await fromViemClient(publicClient)
const request = await chain.sendMessage(
router,
destChainSelector,
message,
{ wallet: viemWallet(walletClient) }
)
Browser wallet (MetaMask)
TypeScript
import { createWalletClient, custom } from 'viem'
import { mainnet } from 'viem/chains'
import { viemWallet } from '@chainlink/ccip-sdk/viem'
const walletClient = createWalletClient({
chain: mainnet,
transport: custom(window.ethereum),
account: connectedAccount,
})
// Works with injected providers!
const signer = viemWallet(walletClient)