deserialize method

  1. @override
dynamic deserialize(
  1. dynamic payload
)
override

Implementation

@override
dynamic deserialize(dynamic payload) {
	if(payload is String){
		tryHexString(payload);
		payload = hexToBytes(payload);
	}
	Uint8List buffer = payload;
	var parent = Transaction().deserialize(buffer);
	var mapping = <(int, int), ISerializable>{
		(AccountKeyLinkTransactionV1.TRANSACTION_TYPE.value, AccountKeyLinkTransactionV1.TRANSACTION_VERSION): AccountKeyLinkTransactionV1(),
		(MosaicDefinitionTransactionV1.TRANSACTION_TYPE.value, MosaicDefinitionTransactionV1.TRANSACTION_VERSION): MosaicDefinitionTransactionV1(),
		(MosaicSupplyChangeTransactionV1.TRANSACTION_TYPE.value, MosaicSupplyChangeTransactionV1.TRANSACTION_VERSION): MosaicSupplyChangeTransactionV1(),
		(MultisigAccountModificationTransactionV1.TRANSACTION_TYPE.value, MultisigAccountModificationTransactionV1.TRANSACTION_VERSION): MultisigAccountModificationTransactionV1(),
		(MultisigAccountModificationTransactionV2.TRANSACTION_TYPE.value, MultisigAccountModificationTransactionV2.TRANSACTION_VERSION): MultisigAccountModificationTransactionV2(),
		(CosignatureV1.TRANSACTION_TYPE.value, CosignatureV1.TRANSACTION_VERSION): CosignatureV1(),
		(MultisigTransactionV1.TRANSACTION_TYPE.value, MultisigTransactionV1.TRANSACTION_VERSION): MultisigTransactionV1(),
		(NamespaceRegistrationTransactionV1.TRANSACTION_TYPE.value, NamespaceRegistrationTransactionV1.TRANSACTION_VERSION): NamespaceRegistrationTransactionV1(),
		(TransferTransactionV1.TRANSACTION_TYPE.value, TransferTransactionV1.TRANSACTION_VERSION): TransferTransactionV1(),
		(TransferTransactionV2.TRANSACTION_TYPE.value, TransferTransactionV2.TRANSACTION_VERSION): TransferTransactionV2()
	};
	var discriminator = (parent.type.value, parent.version);
	if (mapping[discriminator] != null) {
		var factory_class = mapping[discriminator]!;
		return factory_class.deserialize(buffer);
	} else {
		throw Exception('Null value found for mapping[discriminator]');
	}
}