decodeEventLog method

Map<String, dynamic>? decodeEventLog(
  1. Log log
)
inherited

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
}