encodeSliverForUpload function
BCS-encode a SliverData as a Sliver enum for storage node PUT.
Wraps the sliver in the BCS Sliver enum with the specified variant.
This is different from WalrusBlobEncoder.bcsSliverData() which
encodes only the inner SliverData struct.
Implementation
Uint8List encodeSliverForUpload(SliverData sliver, SliverType type) {
final builder = BytesBuilder(copy: false);
// Sliver enum variant
builder.addByte(type == SliverType.primary ? 0 : 1);
// Symbols.data: byteVector
_writeUleb128(builder, sliver.data.length);
builder.add(sliver.data);
// Symbols.symbol_size: u16 LE
builder.addByte(sliver.symbolSize & 0xFF);
builder.addByte((sliver.symbolSize >> 8) & 0xFF);
// index: u16 LE
builder.addByte(sliver.index & 0xFF);
builder.addByte((sliver.index >> 8) & 0xFF);
return builder.toBytes();
}