import 'package:hash_wallet/bitcoin/bitcoin.dart'; import 'package:hash_wallet/core/validator.dart'; import 'package:hash_wallet/entities/mnemonic_item.dart'; import 'package:hash_wallet/evm/evm.dart'; import 'package:hash_wallet/monero/monero.dart'; import 'package:hash_wallet/nano/nano.dart'; import 'package:hash_wallet/wownero/wownero.dart'; import 'package:hash_wallet/utils/language_list.dart'; import 'package:cw_core/wallet_type.dart'; class SeedValidator extends Validator { SeedValidator({required this.type, required this.language}) : _words = getWordList(type: type, language: language), super(errorMessage: 'Wrong seed mnemonic'); final WalletType type; final String language; final List _words; static List getWordList( {required WalletType type, required String language}) { switch (type) { case WalletType.bitcoin: return getBitcoinWordList(language); case WalletType.litecoin: return getBitcoinWordList(language); case WalletType.dogecoin: return getBitcoinWordList(language); case WalletType.monero: return monero!.getMoneroWordList(language); case WalletType.ethereum: case WalletType.polygon: case WalletType.base: case WalletType.arbitrum: case WalletType.bsc: return evm!.getEVMWordList(language); case WalletType.bitcoinCash: return getBitcoinWordList(language); case WalletType.nano: case WalletType.banano: return nano!.getNanoWordList(language); case WalletType.wownero: return wownero!.getWowneroWordList(language); case WalletType.none: return []; } } static bool needsNormalization(String language) => ["POLYSEED_French", "POLYSEED_Spanish"].contains(language); static List getBitcoinWordList(String language) { assert(language.toLowerCase() == LanguageList.english.toLowerCase()); return bitcoin!.getWordList(); } @override bool isValid(MnemonicItem? value) => _words.contains(value?.text); }