import 'package:isar/isar.dart'; import '../db/isar/main_db.dart'; import '../models/isar/models/blockchain_data/v2/transaction_v2.dart'; import '../wallets/crypto_currency/crypto_currency.dart'; import 'amount/amount.dart'; import 'amount/amount_formatter.dart'; import 'amount/amount_unit.dart'; abstract class WalletDevTools { static String checkFiroTransactionTally(String walletId) { final amtFmt = AmountFormatter( unit: AmountUnit.normal, locale: "en_US", coin: Firo(CryptoCurrencyNetwork.main), maxDecimals: 8, ); final all = MainDB.instance.isar.transactionV2s .where() .walletIdEqualTo(walletId) .findAllSync(); final totalCount = all.length; BigInt runningBalance = BigInt.zero; for (final tx in all) { final ownIns = tx.inputs .where((e) => e.walletOwns) .map((e) => e.value) .fold(BigInt.zero, (p, e) => p + e); runningBalance -= ownIns; final ownOuts = tx.outputs .where((e) => e.walletOwns) .map((e) => e.value) .fold(BigInt.zero, (p, e) => p + e); runningBalance += ownOuts; } final balanceAccordingToTxHistory = Amount( rawValue: runningBalance, fractionDigits: 8, ); print("======== $walletId ============="); print("totalTxCount: $totalCount"); print( "balanceAccordingToTxns: ${amtFmt.format(balanceAccordingToTxHistory)}", ); print("=================================================="); return amtFmt.format(balanceAccordingToTxHistory); } }