serialize method

Uint8List serialize()

Implementation

Uint8List serialize() {
  final parts = <int>[];
  parts.add(0xef); // PREFIX_TOKEN
  parts.addAll(categoryId);

  // Bitfield encoding: has_nft (bit 5), has_amount (bit 4), capability (bits 0-3)
  var bitfield = 0;
  if (hasNft) {
    bitfield |= 0x20;
    bitfield |= capability.flag & 0x0f;
  }
  if (hasFungible) {
    bitfield |= 0x10;
  }
  parts.add(bitfield);

  if (hasNft && commitment != null) {
    _writeCompactSize(parts, commitment!.length);
    parts.addAll(commitment!);
  } else if (hasNft) {
    parts.add(0); // zero-length commitment
  }

  if (hasFungible) {
    _writeCompactSize(parts, amount.toInt());
  }

  return Uint8List.fromList(parts);
}