import { CallData } from '@tevm/voltaire';
class TransactionMonitor {
private handlers = new Map<string, (data: CallDataType) => void>();
register(selector: string, handler: (data: CallDataType) => void) {
this.handlers.set(selector, handler);
}
async process(tx: Transaction) {
const calldata = CallData(tx.data);
for (const [selector, handler] of this.handlers) {
if (CallData.hasSelector(calldata, selector)) {
await handler(calldata);
return;
}
}
console.log("No handler for selector");
}
}
// Usage
const monitor = new TransactionMonitor();
monitor.register("0xa9059cbb", handleTransfer);
monitor.register("0x095ea7b3", handleApprove);