Connect
Cometh ConnectCometh MarketplaceCometh Checkout
  • Demo
  • πŸš€QUICKSTART
    • What is Connect
    • Getting started
    • Supported Networks
    • Connect 4337
  • βš’οΈFEATURES
    • Create a wallet
    • Send transactions
    • Sign/Verify a message
    • Retrieve a wallet Address
    • Import a Safe wallet
    • Handle wallet owners
  • πŸ”ŒIntegrations
    • Ethers
    • Wagmi - Viem
      • Viem
      • Wagmi
      • Wagmi + Rainbowkit
      • Wagmi + Web3modal
    • Unity
    • React issues
      • Vite
      • Create React App
  • πŸ“–RESOURCES
    • FAQ
    • Advanced features
      • Add a new device
      • Recover users wallets
    • General concepts
      • Biometric signers
      • Multiple devices
      • Account Recovery
      • Gasless transaction
Powered by GitBook
On this page
  • Install​
  • Init a Connect Viem Client
  • Client methods
  • Init a Connect Viem Account
  • Account Methods
  1. Integrations
  2. Wagmi - Viem

Viem

Viem version of the connect sdk

Last updated 10 months ago

Install

npm i @cometh/connect-sdk-viem wagmi viem

Init a Connect Viem Client

After creating (or reconnecting) to a connect wallet, you can now create a connectViemClient:

import {
  ComethWallet,
  ConnectAdaptor,
  SupportedNetworks
} from '@cometh/connect-sdk'
import { getConnectViemClient } from '@cometh/connect-sdk-viem'

const walletAdaptor = new ConnectAdaptor({
  chainId: SupportedNetworks.POLYGON,
  apiKey: API_KEY
})

const wallet = new ComethWallet({
  authAdapter: walletAdaptor,
  apiKey: API_KEY,
  rpcUrl: RPC_URL
})

await wallet.connect()

const connectViemClient = getConnectViemClient(wallet)

Client methods

  • Send transaction

import { encodeFunctionData } from 'viem'

const txCallData = encodeFunctionData({
  abi: CONTRACT_ABI,
  functionName: CONTRACT_METHOD
})

const tx = { to: DESTINATION, value: VALUE, data: txCallData }
const hash = await connectViemClient.sendTransaction(tx)
  • Send Batch transactions

const txBatch = [
  { to: DESTINATION, value: VALUE, data: txCallData },
  { to: DESTINATION, value: VALUE, data: txCallData }
]
const hash = await connectViemClient.sendTransaction(txBatch)
  • Get Transaction Receipt

const receipt = await connectViemClient.getTransaction(hash)
import { getContract } from 'viem'

const connectViemClient = getConnectViemClient(wallet)

const counterContract = getContract({
    address: COUNTER_CONTRACT_ADDRESS,
    abi: countContractAbi,
    walletClient: connectClient
});

const hash = await counterContract.write.count();

Init a Connect Viem Account

import {
  ComethWallet,
  ConnectAdaptor,
  SupportedNetworks
} from '@cometh/connect-sdk'
import { getConnectViemAccount } from '@cometh/connect-sdk-viem'

const walletAdaptor = new ConnectAdaptor({
  chainId: SupportedNetworks.POLYGON,
  apiKey: API_KEY
})

const wallet = new ComethWallet({
  authAdapter: walletAdaptor,
  apiKey: API_KEY,
  rpcUrl: RPC_URL
})

await wallet.connect()

const connectViemAccount = getConnectViemAccount(wallet)

Account Methods

  • Sign Message

const signature = await connectViemAccount.signMessage({ message: 'hello' })
  • Sign Transaction

const tx = { to: DESTINATION, value: VALUE, data: txCallData }

const signature = await connectViemAccount.signTransaction(tx)

All Public actions available through a Public viem Client are available. (see ). On top of that, we added 2 custom functions that you can call through the connectViemClient:

πŸ”Œ
​
viem docs