dev
dart 35 lines 1.09 KB
Raw
1 import 'dart:async';
2
3 import 'package:cw_core/hardware/hardware_account_data.dart';
4 import 'package:cw_core/hardware/hardware_wallet_service.dart';
5 import 'package:ledger_ethereum/ledger_ethereum.dart';
6 import 'package:ledger_flutter_plus/ledger_flutter_plus.dart';
7
8 class EVMChainLedgerService extends HardwareWalletService {
9 EVMChainLedgerService(this.ledgerConnection);
10
11 final LedgerConnection ledgerConnection;
12
13 @override
14 Future<List<HardwareAccountData>> getAvailableAccounts({int index = 0, int limit = 5}) async {
15 final ethereumLedgerApp = EthereumLedgerApp(ledgerConnection);
16
17 await ethereumLedgerApp.getVersion();
18
19 final accounts = <HardwareAccountData>[];
20 final indexRange = List.generate(limit, (i) => i + index);
21
22 for (final i in indexRange) {
23 final derivationPath = "m/44'/60'/$i'/0/0";
24 final address = await ethereumLedgerApp.getAccounts(accountsDerivationPath: derivationPath);
25
26 accounts.add(HardwareAccountData(
27 address: address.first,
28 accountIndex: i,
29 derivationPath: derivationPath,
30 ));
31 }
32
33 return accounts;
34 }
35 }