import { createPublicClient, createWalletClient, http } from 'viem';
import { baseSepolia } from 'viem/chains';
import { privateKeyToAccount } from 'viem/accounts';
import { X402rArbiter } from '@x402r/arbiter';
import { getNetworkConfig, RequestStatus } from '@x402r/core';
async function main() {
const publicClient = createPublicClient({
chain: baseSepolia,
transport: http(),
});
const account = privateKeyToAccount(process.env.ARBITER_KEY as `0x${string}`);
const walletClient = createWalletClient({
account,
chain: baseSepolia,
transport: http(),
});
const config = getNetworkConfig('eip155:84532')!;
const arbiter = new X402rArbiter({
publicClient,
walletClient,
operatorAddress: '0x...',
refundRequestAddress: config.refundRequest,
arbiterRegistryAddress: config.arbiterRegistry,
});
// Register as an arbiter
await arbiter.registerArbiter('https://arbiter.example.com/api');
// Get pending cases
const { keys, total } = await arbiter.getPendingRefundRequests(0n, 10n, '0xReceiver...');
console.log(`${total} pending cases`);
// Watch for new cases
arbiter.watchNewCases(async (event) => {
console.log('New case to review:', event);
});
console.log('Arbiter is watching for new cases...');
}
main().catch(console.error);