SignedExtensionsCodec constructor

SignedExtensionsCodec(
  1. MetadataTypeRegistry registry
)

Implementation

SignedExtensionsCodec(this.registry) {
  // Handle both V14/V15 SignedExtensions and V16 TransactionExtensions
  final extrinsic = registry.extrinsic;

  if (extrinsic is ExtrinsicMetadataV16) {
    // V16: Use transaction extensions for the primary extrinsic version
    final txExtensions = extrinsic.extensionsForVersion(extrinsic.version);
    extensions = txExtensions
        .map((final te) => ExtensionInfo(identifier: te.identifier, type: te.type))
        .toList(growable: false);
  } else {
    // V14/V15: Use legacy signed extensions
    extensions = extrinsic.signedExtensions
        .map((final se) => ExtensionInfo(identifier: se.identifier, type: se.type))
        .toList(growable: false);
  }

  codecs = extensions.map((final extension) => registry.codecFor(extension.type)).toList();
}