Skip to main content

Overview

MetaVault AI uses Wagmi v2 and Viem v2 for all Web3 interactions. This provides type-safe, React-friendly hooks for wallet connections, contract reads/writes, and event listening.

Wagmi Configuration

Setup (src/config/wagmi.ts:1)

Key Features:
  • SSR Support: Cookie storage instead of localStorage
  • Multiple Connectors: Injected and WalletConnect
  • Multicall Batching: Reduces RPC calls
  • Client-Side WalletConnect: Prevents SSR issues

Contract Abstractions

Contract Addresses (src/lib/contracts.ts:1)

Contract ABIs

Vault ABI (src/lib/contracts.ts:19)

Router ABI (src/lib/contracts.ts:85)

ERC20 ABI (src/lib/contracts.ts:131)


Wagmi Hooks Patterns

1. Wallet Connection

useAccount

useConnect

useDisconnect


2. Reading Contract Data

useReadContract

With Dynamic Arguments

Dependent Reads


3. Writing to Contracts

useWriteContract

Transaction Confirmation

Sequential Transactions (Approve + Deposit)


4. Event Listening

useWatchContractEvent

Multiple Event Listeners


5. Chain Management

useChainId

useSwitchChain

Auto Network Switch


Viem Utilities

Direct Client Usage

For operations not covered by Wagmi hooks:

usePublicClient

useWalletClient


Utility Functions

Token Amount Conversion (src/lib/utils.ts:1)

Usage:

Address Formatting

Usage:

Number Formatting


Advanced Patterns

Polling vs Events

Polling (useReadContract with refetchInterval):
Event-driven (useWatchContractEvent):
Recommendation: Use events for critical updates (deposits, withdrawals) and polling for general data.

Optimistic Updates

Error Handling


Best Practices

1. Enable Queries Conditionally

2. Refetch After Mutations

3. Use as const for ABIs

4. Batch RPC Calls

Enable multicall in config:

5. SSR-Safe Rendering


Common Issues

Issue: “window is not defined” in SSR

Solution: Use client-side only code:

Issue: Hydration mismatch

Solution: Wait for mount:

Issue: Transaction reverts with no error

Solution: Check gas and approvals:

Next Steps

Frontend Overview

Return to architecture overview

React Components

Explore component patterns