Wagmi is not available on React Native. Use Ethers.js or Viem for EVM operations.
Query ETH Balance
- Ethers.js
- Viem
import { ethers } from "ethers";
import { ParaEthersSigner } from "@getpara/ethers-v6-integration";
async function getETHBalance(signer: ParaEthersSigner, provider: ethers.Provider) {
const address = await signer.getAddress();
const balance = await provider.getBalance(address);
const formattedBalance = ethers.formatEther(balance);
console.log(`ETH Balance: ${formattedBalance} ETH`);
return {
wei: balance.toString(),
ether: formattedBalance
};
}
import { formatEther } from "viem";
import { createParaAccount } from "@getpara/viem-v2-integration";
async function getETHBalance(publicClient: any, para: any) {
const account = await createParaAccount(para);
const balance = await publicClient.getBalance({
address: account.address
});
const formattedBalance = formatEther(balance);
console.log(`ETH Balance: ${formattedBalance} ETH`);
return {
wei: balance.toString(),
ether: formattedBalance
};
}
Query ERC-20 Token Balance
- Ethers.js
- Viem
import { ethers } from "ethers";
const ERC20_ABI = [
"function balanceOf(address owner) view returns (uint256)",
"function decimals() view returns (uint8)",
"function symbol() view returns (string)"
];
async function getTokenBalance(
signer: any,
tokenAddress: string,
provider: ethers.Provider
) {
const contract = new ethers.Contract(tokenAddress, ERC20_ABI, provider);
const address = await signer.getAddress();
const [balance, decimals, symbol] = await Promise.all([
contract.balanceOf(address),
contract.decimals(),
contract.symbol()
]);
const formattedBalance = ethers.formatUnits(balance, decimals);
console.log(`${symbol} Balance: ${formattedBalance}`);
return {
raw: balance.toString(),
formatted: formattedBalance,
symbol,
decimals
};
}
import { formatUnits } from "viem";
const ERC20_ABI = [
{
name: "balanceOf",
type: "function",
stateMutability: "view",
inputs: [{ name: "owner", type: "address" }],
outputs: [{ type: "uint256" }]
},
{
name: "decimals",
type: "function",
stateMutability: "view",
inputs: [],
outputs: [{ type: "uint8" }]
},
{
name: "symbol",
type: "function",
stateMutability: "view",
inputs: [],
outputs: [{ type: "string" }]
}
] as const;
async function getTokenBalance(
publicClient: any,
account: any,
tokenAddress: `0x${string}`
) {
const [balance, decimals, symbol] = await Promise.all([
publicClient.readContract({
address: tokenAddress,
abi: ERC20_ABI,
functionName: "balanceOf",
args: [account.address]
}),
publicClient.readContract({
address: tokenAddress,
abi: ERC20_ABI,
functionName: "decimals"
}),
publicClient.readContract({
address: tokenAddress,
abi: ERC20_ABI,
functionName: "symbol"
})
]);
const formattedBalance = formatUnits(balance, decimals);
console.log(`${symbol} Balance: ${formattedBalance}`);
return {
raw: balance.toString(),
formatted: formattedBalance,
symbol,
decimals
};
}