import 'package:hash_wallet/evm/evm.dart'; import 'package:hash_wallet/reactions/wallet_connect.dart'; import 'package:cw_core/utils/proxy_wrapper.dart'; import 'package:cw_core/utils/print_verbose.dart'; import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_type.dart'; import 'package:ens_dart/ens_dart.dart'; import 'package:web3dart/web3dart.dart'; class EnsRecord { static Future fetchEnsAddress(String name, {WalletBase? wallet}) async { Web3Client? _client; if (wallet != null && (isEVMCompatibleChain(wallet.type))) { _client = evm!.getWeb3Client(wallet); } if (_client == null) { late final client = ProxyWrapper().getHttpIOClient(); _client = Web3Client("https://ethereum-rpc.publicnode.com", client); } try { final ens = Ens(client: _client); if (wallet != null) { switch (wallet.type) { case WalletType.monero: return await ens.withName(name).getCoinAddress(CoinType.XMR); case WalletType.bitcoin: return await ens.withName(name).getCoinAddress(CoinType.BTC); case WalletType.litecoin: return await ens.withName(name).getCoinAddress(CoinType.LTC); case WalletType.ethereum: case WalletType.polygon: case WalletType.base: case WalletType.arbitrum: case WalletType.bsc: default: return (await ens.withName(name).getAddress()).hex; } } final addr = await ens.withName(name).getAddress(); return addr.hex; } catch (e) { printV(e); return ""; } } }