encodeEvent method

Uint8List encodeEvent({
  1. required String palletName,
  2. required String eventName,
  3. required Map<String, dynamic> data,
})

Encode a RuntimeEvent with specific pallet and event names This is a convenience method for encoding events when you know the names

Implementation

Uint8List encodeEvent({
  required String palletName,
  required String eventName,
  required Map<String, dynamic> data,
}) {
  // Get pallet
  final pallet = registry.palletByName(palletName);
  if (pallet == null) {
    throw MetadataException('Pallet $palletName not found');
  }

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

  final eventVariant = registry.getVariant(eventTypeId, eventName);
  if (eventVariant == null) {
    throw MetadataException('Event $eventName not found in pallet $palletName');
  }

  // Create RuntimeEvent
  final event = RuntimeEvent(
    palletName: palletName,
    palletIndex: pallet.index,
    eventName: eventName,
    eventIndex: eventVariant.index,
    data: data,
  );

  // Encode and return
  return encode(event);
}