registerAddressType method

LegacyBCS registerAddressType(
  1. String name,
  2. int length, [
  3. Encoding encoding = Encoding.hex
])

Register an address type which is a sequence of U8s of specified length.

bcs.registerAddressType('address', SUI_ADDRESS_LENGTH);
final addr = bcs.de('address', 'c3aca510c785c7094ac99aeaa1e69d493122444df50bb8a99dfa790c654a79af', Encoding.hex);

Implementation

LegacyBCS registerAddressType(String name, int length, [Encoding encoding = Encoding.hex]) {
  switch (encoding) {
    case Encoding.base64:
      return registerType(name, (writer, data, _, __) {
        fromB64(data).forEach((el) => writer.write8(el));
        return writer;
      }, (reader, _, __) => toB64(reader.readBytes(length)));
    case Encoding.hex:
      return registerType(name, (writer, data, _, __) {
        fromHEX(data).forEach((el) => writer.write8(el));
        return writer;
      }, (reader, _, __) => toHEX(reader.readBytes(length)));
    default:
      throw ArgumentError("Unsupported encoding! Use either hex or base64");
  }
}