import 'dart:async'; import 'package:cw_core/hardware/hardware_account_data.dart'; import 'package:ledger_ethereum/ledger_ethereum.dart'; import 'package:ledger_flutter_plus/ledger_flutter_plus.dart'; class EVMChainHardwareWalletService { EVMChainHardwareWalletService(this.ledgerConnection); final LedgerConnection ledgerConnection; Future> getAvailableAccounts( {int index = 0, int limit = 5}) async { final ethereumLedgerApp = EthereumLedgerApp(ledgerConnection); await ethereumLedgerApp.getVersion(); final accounts = []; final indexRange = List.generate(limit, (i) => i + index); for (final i in indexRange) { final derivationPath = "m/44'/60'/$i'/0/0"; final address = await ethereumLedgerApp.getAccounts( accountsDerivationPath: derivationPath); accounts.add(HardwareAccountData( address: address.first, accountIndex: i, derivationPath: derivationPath, )); } return accounts; } }