Skip to content

techpro-studio/bcs_serde

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BCS serializer deserializer Easy to use

class _AnyPublicKeySerializer implements BCSSerializer<AnyPublicKey> {
  const _AnyPublicKeySerializer._();

  @override
  AnyPublicKey deserializeIn(Deserializer deserializer) {
    final variant = deserializer.deserializeUleb128AsU32();
    if (variant == AnyPublicKeyVariant.keyless._underline) {
      final keyless = KeylessPublicKey.bcsSerializer.deserializeIn(
        deserializer,
      );
      return AnyPublicKey(variant: AnyPublicKeyVariant.keyless, key: keyless);
    } else if (variant == AnyPublicKeyVariant.ed25519._underline) {
      final ed25519 = Ed25519PublicKey.bcsSerializer.deserializeIn(
        deserializer,
      );
      return AnyPublicKey(variant: AnyPublicKeyVariant.ed25519, key: ed25519);
    }
    throw UnimplementedError();
  }

  @override
  void serializeIn(Serializer serializer, AnyPublicKey value) {
    serializer.serializeU32AsUleb128(value.variant._underline);
    if (value.variant == AnyPublicKeyVariant.keyless) {
      KeylessPublicKey.bcsSerializer.serializeIn(
        serializer,
        value.key as KeylessPublicKey,
      );
    } else if (value.variant == AnyPublicKeyVariant.ed25519) {
      Ed25519PublicKey.bcsSerializer.serializeIn(
        serializer,
        value.key as Ed25519PublicKey,
      );
    } else {
      throw UnimplementedError();
    }
  }
}

About

BCS serialization deserialization package

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages