encodeTo method

  1. @override
void encodeTo(
  1. RuntimeEvent value,
  2. Output output
)
override

Encode a RuntimeEvent to output

Implementation

@override
void encodeTo(RuntimeEvent value, Output output) {
  final outerEnums = registry.outerEnums;
  late final PalletMetadata pallet;
  if (outerEnums != null) {
    pallet = _findPalletV15FromRuntimeEvent(value, output, outerEnums.eventType);
  } else {
    pallet = _findPalletV14FromRuntimeEvent(value, output);
  }

  final eventTypeId = pallet.event?.type;
  if (eventTypeId == null) throw MetadataException('Pallet ${pallet.name} has no events');

  final eventVariant = registry.getVariantByIndex(eventTypeId, value.eventIndex);
  if (eventVariant == null) {
    throw MetadataException(
      'Event with index ${value.eventIndex} not found in pallet ${pallet.name}',
    );
  }

  output.pushByte(value.eventIndex);
  _encodeEventData(output, eventVariant, value.data);
}