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;
}