decode method

  1. @override
RuntimeEvent decode(
  1. Input input
)
override

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,
  );
}