getSysvarStakeHistoryDecoder function

VariableSizeDecoder<SysvarStakeHistory> getSysvarStakeHistoryDecoder()

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);
    },
  );
}