getSysvarStakeHistoryDecoder function
Returns a variable-size decoder for the SysvarStakeHistory sysvar.
Implementation
VariableSizeDecoder<SysvarStakeHistory> getSysvarStakeHistoryDecoder() {
final u64Decoder = getU64Decoder();
final entryDecoder = getStructDecoder([
('epoch', getU64Decoder()),
(
'stakeHistory',
getStructDecoder([
('effective', getDefaultLamportsDecoder()),
('activating', getDefaultLamportsDecoder()),
('deactivating', getDefaultLamportsDecoder()),
]),
),
]);
return VariableSizeDecoder<SysvarStakeHistory>(
read: (bytes, offset) {
var o = offset;
// Read the u64 length prefix.
final (length, offsetAfterLen) = u64Decoder.read(bytes, o);
o = offsetAfterLen;
final count = length.toInt();
final entries = <StakeHistoryEntry>[];
for (var i = 0; i < count; i++) {
final (map, newOffset) = entryDecoder.read(bytes, o);
o = newOffset;
entries.add(_mapToEntry(map));
}
return (entries, o);
},
);
}