byteVector static method

BcsType<Uint8List, dynamic> byteVector([
  1. BcsTypeOptions<Uint8List, dynamic>? options
])

Fast vector<u8>: same wire bytes as vector(u8()), no per-element overhead.

Implementation

static BcsType<Uint8List, dynamic> byteVector(
    [BcsTypeOptions<Uint8List, dynamic>? options]) {
  return BcsType<Uint8List, dynamic>(
    name: options?.name ?? 'vector<u8>',
    read: (reader) {
      final length = reader.readULEB();
      return reader.readBytes(length);
    },
    write: (value, writer) {
      final array =
          value is Uint8List ? value : Uint8List.fromList(List<int>.from(value));
      writer.writeULEB(array.length);
      writer.writeBytes(array);
    },
    serializedSize: (value, {BcsWriterOptions? options}) {
      final length = (value as dynamic).length as int;
      return ulebEncode(length).length + length;
    },
    validate: (value) {
      options?.validate?.call(value);
    },
  );
}