import { ethers } from 'ethers';
// Connect to DelphAI contract
const provider = new ethers.providers.JsonRpcProvider('https://bsc-dataseed.binance.org/');
const delphAI = new ethers.Contract(
'0xA95E99848a318e37F128aB841b0CF693c1f0b4D1',
DELPHAI_ABI,
provider
);
// Listen to all market events
delphAI.on('MarketCreated', handleMarketCreated);
delphAI.on('MarketResolved', handleMarketResolved);
delphAI.on('MarketCancelled', handleMarketCancelled);
// Listen to admin events
delphAI.on('FeeUpdated', handleFeeUpdated);
delphAI.on('ResolverUpdated', handleResolverUpdated);
function handleMarketCreated(marketId, creator, question, description, outcomes, createdAt, resolutionTime) {
// Add new market to your database
db.markets.insert({
id: marketId.toNumber(),
creator,
question,
description,
outcomes,
createdAt: createdAt.toNumber(),
resolutionTime: resolutionTime.toNumber(),
status: 'Open'
});
}
function handleMarketResolved(marketId, outcomeIndex, outcome, resolver, resolutionData, proofData, resolvedAt) {
// Update market in database
db.markets.update(marketId.toNumber(), {
status: 'Resolved',
winningOutcome: outcomeIndex.toNumber(),
aiExplanation: resolutionData,
resolvedAt: resolvedAt.toNumber()
});
// Trigger payout distribution
distributeWinnings(marketId.toNumber());
}
function handleMarketCancelled(marketId, cancelledBy, cancelledAt) {
// Update market status
db.markets.update(marketId.toNumber(), {
status: 'Cancelled',
cancelledAt: cancelledAt.toNumber()
});
// Refund all users
refundMarket(marketId.toNumber());
}