import { createWalletClient, http, parseAbi } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { mainnet } from "viem/chains"; // or baseSepolia for testnet
const account = privateKeyToAccount("0x<YOUR_PRIVATE_KEY>");
const client = createWalletClient({ account, chain: mainnet, transport: http("YOUR_RPC_URL") });
const tx = await client.writeContract({
address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // token address (e.g. WETH on mainnet)
abi: parseAbi(["function approve(address spender, uint256 amount) returns (bool)"]),
functionName: "approve",
args: [
"0x00fC00edbe7C003b006f870068c548940000223e", // escrow settler
BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), // max approval
],
});