decode method
Decode a RuntimeEvent from input
Implementation
@override
RuntimeEvent decode(Input input) {
// For V15, we might have a direct outer enum type
final outerEnums = registry.outerEnums;
final PalletMetadata pallet;
if (outerEnums != null) {
pallet = _findPalletV15FromInput(input, outerEnums.eventType);
} else {
pallet = _findPalletV14FromInput(input);
}
final eventTypeId = pallet.event?.type;
if (eventTypeId == null) throw MetadataException('Pallet ${pallet.name} has no events');
final eventIndex = input.read();
final eventVariant = registry.getVariantByIndex(eventTypeId, eventIndex);
if (eventVariant == null) {
throw MetadataException('Event with index $eventIndex not found in pallet ${pallet.name}');
}
final eventData = _decodeEventData(input, eventVariant);
return RuntimeEvent(
palletName: pallet.name,
palletIndex: pallet.index,
eventName: eventVariant.name,
eventIndex: eventIndex,
data: eventData,
);
}