UNPKG

kleros-escrow-data-service

Version:

Data service for interacting with Kleros Escrow

85 lines (84 loc) 4.37 kB
import { ethers } from "ethers"; import { createKlerosEscrowClient } from "../index"; import MultipleArbitrableTransactionABI from "../reference/MultipleArbitrableTransaction_ABI.json"; // Replace with your own RPC URL or use a public one const RPC_URL = "https://eth-mainnet.public.blastapi.io"; // You can also use other public RPC endpoints like: // const RPC_URL = "https://ethereum.publicnode.com"; // const RPC_URL = "https://rpc.ankr.com/eth"; // Configuration for mainnet with the specified contract address const config = { provider: { url: RPC_URL, networkId: 1, // Ethereum mainnet }, multipleArbitrableTransaction: { address: "0x0d67440946949FE293B45c52eFD8A9b3d51e2522", abi: MultipleArbitrableTransactionABI, }, ipfsGateway: "https://cdn.kleros.link", }; /** * Simple test function to test all read operations */ async function testReadFunctions() { console.log("Initializing Kleros Escrow client with read-only access..."); const client = createKlerosEscrowClient(config); try { // Test 1: Get transaction count console.log("\n--- Testing getTransactionCount ---"); const count = await client.services.transaction.getTransactionCount(); console.log(`Total transactions: ${count}`); if (count === 0) { console.log("No transactions found. Some tests will be skipped."); return; } // Test 2: Get a transaction (using the first one) console.log("\n--- Testing getTransaction ---"); const transactionId = "58"; // Start with the first transaction const transaction = await client.services.transaction.getTransaction(transactionId); console.log("Transaction details:", JSON.stringify(transaction, null, 2)); // Test 3: Check if transaction can be executed console.log("\n--- Testing canExecuteTransaction ---"); const canExecute = await client.services.transaction.canExecuteTransaction(transactionId); console.log(`Can execute transaction ${transactionId}: ${canExecute}`); // Test 4: Check timeout status console.log("\n--- Testing canTimeOut ---"); const timeoutStatus = await client.services.transaction.canTimeOut(transactionId); console.log("Timeout status:", timeoutStatus); // Test 5: Get dispute (if exists) console.log("\n--- Testing getDispute ---"); const dispute = await client.services.dispute.getDispute(transactionId); if (dispute) { console.log("Dispute details:", JSON.stringify(dispute, null, 2)); // Test 6: Get arbitration cost (if dispute exists) console.log("\n--- Testing getArbitrationCost ---"); const arbitrationCost = await client.services.dispute.getArbitrationCost(); console.log(`Arbitration cost: ${ethers.utils.formatEther(arbitrationCost)} ETH`); // Test 7: Get appeal cost (if dispute exists) console.log("\n--- Testing getAppealCost ---"); const appealCost = await client.services.dispute.getAppealCost(dispute.id); console.log(`Appeal cost: ${ethers.utils.formatEther(appealCost)} ETH`); // Test 8: Get fee timeout console.log("\n--- Testing getFeeTimeout ---"); const feeTimeout = await client.services.dispute.getFeeTimeout(); console.log(`Fee timeout: ${feeTimeout} seconds`); } else { console.log("No dispute found for this transaction."); } // Test 9: Get arbitrator info console.log("\n--- Testing getArbitrator ---"); const arbitrator = await client.services.arbitrator.getArbitrator(); console.log("Arbitrator details:", JSON.stringify(arbitrator, null, 2)); // Test 10: Get events for transaction - SKIPPED due to RPC limitations console.log("\n--- SKIPPING getEventsForTransaction due to RPC limitations ---"); console.log("To test events, use a premium RPC provider with an API key"); console.log("\n--- All read tests completed successfully ---"); } catch (error) { console.error("Error during testing:", error.message || String(error)); } } // Run the tests testReadFunctions().catch((error) => console.error("Unhandled error:", error.message || String(error)));