part of 'decred.dart'; class CWDecred extends Decred { CWDecred() { // initialize the service for creating and loading dcr wallets. DecredWalletService.init(); } @override WalletCredentials createDecredNewWalletCredentials( {required String name, WalletInfo? walletInfo}) => DecredNewWalletCredentials(name: name, walletInfo: walletInfo); @override WalletCredentials createDecredRestoreWalletFromSeedCredentials( {required String name, required String mnemonic, required String password}) => DecredRestoreWalletFromSeedCredentials( name: name, mnemonic: mnemonic, password: password); WalletService createDecredWalletService(Box walletInfoSource, Box unspentCoinSource) { return DecredWalletService(walletInfoSource, unspentCoinSource); } @override List getTransactionPriorities() => DecredTransactionPriority.all; @override TransactionPriority getMediumTransactionPriority() => DecredTransactionPriority.medium; @override TransactionPriority getDecredTransactionPriorityMedium() => DecredTransactionPriority.medium; @override TransactionPriority getDecredTransactionPrioritySlow() => DecredTransactionPriority.slow; @override TransactionPriority deserializeDecredTransactionPriority(int raw) => DecredTransactionPriority.deserialize(raw: raw); @override int getFeeRate(Object wallet, TransactionPriority priority) { final decredWallet = wallet as DecredWallet; return decredWallet.feeRate(priority); } @override Object createDecredTransactionCredentials( List outputs, TransactionPriority priority) => DecredTransactionCredentials( outputs .map((out) => OutputInfo( fiatAmount: out.fiatAmount, cryptoAmount: out.cryptoAmount, address: out.address, note: out.note, sendAll: out.sendAll, extractedAddress: out.extractedAddress, isParsedAddress: out.isParsedAddress, formattedCryptoAmount: out.formattedCryptoAmount)) .toList(), priority: priority as DecredTransactionPriority); @override List getAddresses(Object wallet) { final decredWallet = wallet as DecredWallet; return decredWallet.walletAddresses.addresses(); } @override String getAddress(Object wallet) { final decredWallet = wallet as DecredWallet; return decredWallet.walletAddresses.address; } @override Future generateNewAddress(Object wallet) async { final decredWallet = wallet as DecredWallet; await decredWallet.walletAddresses.generateNewAddress(); } @override String formatterDecredAmountToString({required int amount}) => decredAmountToString(amount: amount); @override double formatterDecredAmountToDouble({required int amount}) => decredAmountToDouble(amount: amount); @override int formatterStringDoubleToDecredAmount(String amount) => stringDoubleToDecredAmount(amount); @override List getUnspents(Object wallet) { final decredWallet = wallet as DecredWallet; return decredWallet.unspents(); } @override void updateUnspents(Object wallet) async {} @override int heightByDate(DateTime date) { final genesisBlocktime = DateTime.fromMillisecondsSinceEpoch(1454954400 * 1000); final minutesDiff = date.difference(genesisBlocktime).inMinutes; // Decred has five minute blocks on mainnet. // NOTE: This is off by about a day. // TODO: Remove this and just rescan from the wallet birthday. return (minutesDiff / 5).toInt(); } @override List getDecredWordList() => wordlist; }