decode method
Implementation
@override
RuntimeVersion decode(Input input) {
final specName = StrCodec.codec.decode(input);
final implName = StrCodec.codec.decode(input);
final authoringVersion = U32Codec.codec.decode(input);
final specVersion = U32Codec.codec.decode(input);
final implVersion = U32Codec.codec.decode(input);
final apis = const SequenceCodec<ApiVersion>(ApiVersion.codec).decode(input);
// - `Core` version < 3 is a runtime version without a transaction version and state version.
// - `Core` version 3 is a runtime version without a state version.
// - `Core` version 4 is the latest runtime version.
final int? coreVersion = coreVersionFromApis(apis);
final int transactionVersion =
coreVersion == null || coreVersion >= 3 ? U32Codec.codec.decode(input) : 1;
final int stateVersion =
coreVersion == null || coreVersion >= 4 ? U8Codec.codec.decode(input) : 0;
return RuntimeVersion(
specName: specName,
implName: implName,
authoringVersion: authoringVersion,
specVersion: specVersion,
implVersion: implVersion,
apis: apis,
transactionVersion: transactionVersion,
stateVersion: stateVersion,
);
}