getLiteralUnionEncoder function
Returns an encoder for literal unions.
This encoder serializes a value from a predefined set of variants
as a numerical index representing its position in the list.
Implementation
Encoder<Object?> getLiteralUnionEncoder(
List<Object?> variants, {
Encoder<num>? size,
}) {
final discriminator = size ?? getU8Encoder();
return transformEncoder<num, Object?>(discriminator, (variant) {
final index = variants.indexOf(variant);
if (index < 0) {
throw SolanaError(SolanaErrorCode.codecsInvalidLiteralUnionVariant, {
'value': variant,
'variants': variants,
});
}
return index;
});
}