encodeTo method
Convert self to a slice and append it to the destination.
Implementation
@override
void encodeTo(final UncheckedExtrinsic value, final Output output) {
// Build and write version byte
final versionByte = _buildVersionByte(value.version, value.type);
output.pushByte(versionByte);
switch (value.type) {
case ExtrinsicType.signed:
// Encode signature
if (value.signature == null) {
throw MetadataException('Signed extrinsic must have a signature');
}
_signatureCodec.encodeTo(value.signature!, output);
break;
case ExtrinsicType.general:
// Encode extension version byte + extensions
if (value.extensions == null) {
throw MetadataException('General extrinsic must have extensions');
}
final extensionVersion = value.extensions!['extensionVersion'] as int? ?? 0;
output.pushByte(extensionVersion);
// Encode the extensions data
final extData = Map<String, dynamic>.from(value.extensions!);
extData.remove('extensionVersion');
_extensionsCodec.encodeTo(extData, output);
break;
case ExtrinsicType.bare:
// No additional data for bare extrinsics
break;
}
// Encode call
_callCodec.encodeTo(value.call, output);
}