Wagmi is not available on React Native. Use Ethers.js or Viem for EVM operations.
Execute Raw Transactions
- Ethers.js
- Viem
import { ethers } from "ethers";
import { ParaEthersSigner } from "@getpara/ethers-v6-integration";
async function executeTransaction(
signer: ParaEthersSigner,
to: string,
data: string,
value?: string
) {
const txResponse = await signer.sendTransaction({
to,
data,
value: value ? ethers.parseEther(value) : 0
});
const receipt = await txResponse.wait();
return {
hash: txResponse.hash,
blockNumber: receipt.blockNumber,
status: receipt.status,
gasUsed: receipt.gasUsed.toString()
};
}
import { parseEther, encodeFunctionData } from "viem";
async function executeTransaction(
walletClient: any,
publicClient: any,
to: `0x${string}`,
data: `0x${string}`,
value?: string
) {
const hash = await walletClient.sendTransaction({
to,
data,
value: value ? parseEther(value) : 0n
});
const receipt = await publicClient.waitForTransactionReceipt({ hash });
return {
hash,
blockNumber: receipt.blockNumber,
status: receipt.status === "success" ? 1 : 0,
gasUsed: receipt.gasUsed.toString()
};
}
Execute Contract Functions
- Ethers.js
- Viem
const CONTRACT_ABI = [
"function setGreeting(string memory _greeting)",
"function greet() view returns (string)"
];
async function executeContractFunction(
signer: any,
contractAddress: string,
greeting: string
) {
const contract = new ethers.Contract(contractAddress, CONTRACT_ABI, signer);
const tx = await contract.setGreeting(greeting);
const receipt = await tx.wait();
const newGreeting = await contract.greet();
return {
hash: tx.hash,
blockNumber: receipt.blockNumber,
newValue: newGreeting
};
}
const CONTRACT_ABI = [
{
name: "setGreeting",
type: "function",
stateMutability: "nonpayable",
inputs: [{ name: "_greeting", type: "string" }],
outputs: []
},
{
name: "greet",
type: "function",
stateMutability: "view",
inputs: [],
outputs: [{ type: "string" }]
}
] as const;
async function executeContractFunction(
walletClient: any,
publicClient: any,
contractAddress: `0x${string}`,
greeting: string
) {
const hash = await walletClient.writeContract({
address: contractAddress,
abi: CONTRACT_ABI,
functionName: "setGreeting",
args: [greeting]
});
const receipt = await publicClient.waitForTransactionReceipt({ hash });
const newGreeting = await publicClient.readContract({
address: contractAddress,
abi: CONTRACT_ABI,
functionName: "greet"
});
return {
hash,
blockNumber: receipt.blockNumber,
newValue: newGreeting
};
}