public async Task <AddressItem> GetRemainder(string[] addresses, CancellationToken cancellationToken) { var allAddressItems = addressesModel.GetAddressItems(); foreach (var addressItem in allAddressItems) { if (addresses.Contains(addressItem.Address)) { continue; } if (addressItem.TransactionCount == 0) { return(addressItem); } var transactions = transactionCollection.Where(t => t.IsOwn && t.Address == addressItem.Address).ToArray(); if (transactions.All(t => t.Balance >= 0)) { return(addressItem); } } var lastIndex = allAddressItems.Max(a => a.Index); var api = CreateIotaClient(); var seed = walletConfiguration.PrivateKey; var reminder = await api.FindReminderAddress(seed, lastIndex + 1, cancellationToken); return(reminder); }