decodeEventLog method
Decodes an event log.
Implementation
Map<String, dynamic>? decodeEventLog(Log log) {
if (log.address.toLowerCase() != address.toLowerCase()) {
return null; // Not from this contract
}
if (log.topics.isEmpty) {
return null; // No event signature
}
final eventTopic = log.topics[0];
// Find matching event
for (final event in events) {
final expectedTopic =
HexUtils.encode(AbiEncoder.getEventTopic(event.signature));
if (eventTopic.toLowerCase() == expectedTopic.toLowerCase()) {
return AbiDecoder.decodeEvent(
types: event.inputs,
indexed: event.indexed,
names: event.inputNames,
topics: log.topics,
data: log.data,
);
}
}
return null; // Unknown event
}