deserialize method

Implementation

@override
EmbeddedNamespaceRegistrationTransactionV1 deserialize(Uint8List payload) {
  var buffer = payload;
  var size = bytesToInt(buffer.sublist(0, 4), 4);
  buffer = buffer.sublist(0, size);
  buffer = buffer.sublist(4);
  var embeddedTransactionHeaderReserved_1 =
      bytesToInt(buffer.sublist(0, 4), 4);
  buffer = buffer.sublist(4);
  if (0 != embeddedTransactionHeaderReserved_1) {
    throw RangeError(
        'Invalid value of reserved field ($embeddedTransactionHeaderReserved_1)');
  }
  var signerPublicKey = PublicKey().deserialize(buffer);
  buffer = buffer.sublist(signerPublicKey.size);
  var entityBodyReserved_1 = bytesToInt(buffer.sublist(0, 4), 4);
  buffer = buffer.sublist(4);
  if (0 != entityBodyReserved_1) {
    throw RangeError(
        'Invalid value of reserved field ($entityBodyReserved_1)');
  }
  var version = bytesToInt(buffer.sublist(0, 1), 1);
  buffer = buffer.sublist(1);
  var network = NetworkType().deserialize(buffer);
  buffer = buffer.sublist(network.size);
  var type = TransactionType().deserialize(buffer);
  buffer = buffer.sublist(type.size);
  // deserialize to temporary buffer for further processing
  var durationTemporary = BlockDuration().deserialize(buffer);
  var registrationTypeCondition = buffer.sublist(0, durationTemporary.size);
  buffer = buffer.sublist(durationTemporary.size);

  var id = NamespaceId().deserialize(buffer);
  buffer = buffer.sublist(id.size);
  var registrationType = NamespaceRegistrationType().deserialize(buffer);
  buffer = buffer.sublist(registrationType.size);
  var duration = null;
  if (NamespaceRegistrationType.ROOT.value == registrationType.value) {
    duration = BlockDuration().deserialize(registrationTypeCondition);
    registrationTypeCondition =
        registrationTypeCondition.sublist(duration.size);
  }
  var parentId = null;
  if (NamespaceRegistrationType.CHILD.value == registrationType.value) {
    parentId = NamespaceId().deserialize(registrationTypeCondition);
    registrationTypeCondition =
        registrationTypeCondition.sublist(parentId.size);
  }
  var nameSize = bytesToInt(buffer.sublist(0, 1), 1);
  buffer = buffer.sublist(1);
  var name = Uint8List.fromList(buffer.sublist(0, nameSize));
  buffer = buffer.sublist(nameSize);

  var instance = EmbeddedNamespaceRegistrationTransactionV1(
    signerPublicKey: signerPublicKey,
    version: version,
    network: network,
    type: type,
    duration: duration,
    parentId: parentId,
    id: id,
    registrationType: registrationType,
    name: name,
  );
  return instance;
}