1
+ import 'dart:io' show Platform;
1
2
import 'dart:typed_data' ;
2
3
import 'package:bitcoin_base/bitcoin_base.dart' ;
3
4
import 'package:cake_wallet/view_model/hardware_wallet/ledger_view_model.dart' ;
4
5
import 'package:cake_wallet/view_model/send/output.dart' ;
5
- import 'package:cw_bitcoin/bitcoin_payjoin.dart' ;
6
6
import 'package:cw_core/hardware/hardware_account_data.dart' ;
7
7
import 'package:cw_core/node.dart' ;
8
8
import 'package:cw_core/output_info.dart' ;
9
9
import 'package:cw_core/pending_transaction.dart' ;
10
10
import 'package:cw_core/receive_page_option.dart' ;
11
+ import 'package:cw_core/transaction_info.dart' ;
11
12
import 'package:cw_core/transaction_priority.dart' ;
13
+ import 'package:cw_core/unspent_coin_type.dart' ;
12
14
import 'package:cw_core/unspent_coins_info.dart' ;
13
15
import 'package:cw_core/unspent_transaction_output.dart' ;
14
16
import 'package:cw_core/wallet_base.dart' ;
15
17
import 'package:cw_core/wallet_credentials.dart' ;
16
18
import 'package:cw_core/wallet_info.dart' ;
17
19
import 'package:cw_core/wallet_service.dart' ;
18
20
import 'package:cw_core/wallet_type.dart' ;
21
+ import 'package:cw_core/utils/print_verbose.dart' ;
22
+ import 'package:cw_core/get_height_by_date.dart' ;
19
23
import 'package:hive/hive.dart' ;
20
- import 'package:ledger_flutter/ledger_flutter .dart' ;
24
+ import 'package:ledger_flutter_plus/ledger_flutter_plus .dart' as ledger ;
21
25
import 'package:blockchain_utils/blockchain_utils.dart' ;
22
26
import 'package:bip39/bip39.dart' as bip39;
23
27
@@ -26,7 +30,9 @@ import 'package:cw_bitcoin/electrum_derivations.dart';
26
30
import 'package:cw_bitcoin/electrum.dart' ;
27
31
import 'package:cw_bitcoin/pending_bitcoin_transaction.dart' ;
28
32
import 'package:cw_bitcoin/bitcoin_receive_page_option.dart' ;
33
+ import 'package:cw_bitcoin/bitcoin_payjoin.dart' ;
29
34
import 'package:cw_bitcoin/bitcoin_wallet.dart' ;
35
+ import 'package:cw_bitcoin/electrum_transaction_info.dart' ;
30
36
import 'package:cw_bitcoin/electrum_wallet.dart' ;
31
37
import 'package:cw_bitcoin/bitcoin_unspent.dart' ;
32
38
import 'package:cw_bitcoin/bitcoin_mnemonic.dart' ;
@@ -36,9 +42,11 @@ import 'package:cw_bitcoin/bitcoin_wallet_creation_credentials.dart';
36
42
import 'package:cw_bitcoin/bitcoin_amount_format.dart' ;
37
43
import 'package:cw_bitcoin/bitcoin_address_record.dart' ;
38
44
import 'package:cw_bitcoin/bitcoin_transaction_credentials.dart' ;
45
+ import 'package:cw_bitcoin/litecoin_wallet.dart' ;
39
46
import 'package:cw_bitcoin/litecoin_wallet_service.dart' ;
40
47
import 'package:cw_core/get_height_by_date.dart' ;
41
48
import 'package:cw_bitcoin/bitcoin_hardware_wallet_service.dart' ;
49
+ import 'package:cw_bitcoin/litecoin_hardware_wallet_service.dart' ;
42
50
import 'package:mobx/mobx.dart' ;
43
51
44
52
part 'cw_bitcoin.dart' ;
@@ -78,7 +86,12 @@ abstract class Bitcoin {
78
86
required String wif,
79
87
WalletInfo ? walletInfo});
80
88
WalletCredentials createBitcoinNewWalletCredentials (
81
- {required String name, WalletInfo ? walletInfo, String ? password});
89
+ {required String name,
90
+ WalletInfo ? walletInfo,
91
+ String ? password,
92
+ String ? passphrase,
93
+ String ? mnemonic,
94
+ String ? parentAddress});
82
95
WalletCredentials createBitcoinHardwareWalletCredentials (
83
96
{required String name,
84
97
required HardwareAccountData accountData,
@@ -93,9 +106,9 @@ abstract class Bitcoin {
93
106
Future <void > generateNewAddress (Object wallet, String label);
94
107
Future <void > updateAddress (Object wallet, String address, String label);
95
108
Object createBitcoinTransactionCredentials (List <Output > outputs,
96
- {required TransactionPriority priority, int ? feeRate});
97
- Object createBitcoinTransactionCredentialsRaw ( List < OutputInfo > outputs ,
98
- { TransactionPriority ? priority, required int feeRate });
109
+ {required TransactionPriority priority,
110
+ int ? feeRate ,
111
+ UnspentCoinType coinTypeToSpendFrom = UnspentCoinType .any });
99
112
100
113
String getAddress (Object wallet);
101
114
List <ElectrumSubAddress > getSilentPaymentAddresses (Object wallet);
@@ -112,12 +125,13 @@ abstract class Bitcoin {
112
125
TransactionPriority priority, int rate,
113
126
{int ? customRate});
114
127
115
- List <Unspent > getUnspents (Object wallet);
128
+ List <Unspent > getUnspents (Object wallet,
129
+ {UnspentCoinType coinTypeToSpendFrom = UnspentCoinType .any});
116
130
Future <void > updateUnspents (Object wallet);
117
131
WalletService createBitcoinWalletService (Box <WalletInfo > walletInfoSource,
118
132
Box <UnspentCoinsInfo > unspentCoinSource, bool alwaysScan, bool isDirect);
119
133
WalletService createLitecoinWalletService (Box <WalletInfo > walletInfoSource,
120
- Box <UnspentCoinsInfo > unspentCoinSource, bool isDirect);
134
+ Box <UnspentCoinsInfo > unspentCoinSource, bool alwaysScan, bool isDirect);
121
135
TransactionPriority getBitcoinTransactionPriorityMedium ();
122
136
TransactionPriority getBitcoinTransactionPriorityCustom ();
123
137
TransactionPriority getLitecoinTransactionPriorityMedium ();
@@ -131,6 +145,7 @@ abstract class Bitcoin {
131
145
Future <void > setAddressType (Object wallet, dynamic option);
132
146
ReceivePageOption getSelectedAddressType (Object wallet);
133
147
List <ReceivePageOption > getBitcoinReceivePageOptions ();
148
+ List <ReceivePageOption > getLitecoinReceivePageOptions ();
134
149
BitcoinAddressType getBitcoinAddressType (ReceivePageOption option);
135
150
bool hasSelectedSilentPayments (Object wallet);
136
151
bool isBitcoinReceivePageOption (ReceivePageOption option);
@@ -142,7 +157,8 @@ abstract class Bitcoin {
142
157
143
158
Future <PendingTransaction > replaceByFee (
144
159
Object wallet, String transactionHash, String fee);
145
- Future <bool > canReplaceByFee (Object wallet, String transactionHash);
160
+ Future <String ?> canReplaceByFee (Object wallet, Object tx);
161
+ int getTransactionVSize (Object wallet, String txHex);
146
162
Future <bool > isChangeSufficientForFee (
147
163
Object wallet, String txId, String newFee);
148
164
int getFeeAmountForPriority (Object wallet, TransactionPriority priority,
@@ -153,18 +169,33 @@ abstract class Bitcoin {
153
169
int feeAmountWithFeeRate (
154
170
Object wallet, int feeRate, int inputsCount, int outputsCount,
155
171
{int ? size});
156
- int getHeightByDate ({required DateTime date});
172
+ Future <bool > checkIfMempoolAPIIsEnabled (Object wallet);
173
+ Future <int > getHeightByDate (
174
+ {required DateTime date, bool ? bitcoinMempoolAPIEnabled});
175
+ int getLitecoinHeightByDate ({required DateTime date});
157
176
Future <void > rescan (Object wallet, {required int height, bool ? doSingleScan});
158
177
Future <bool > getNodeIsElectrsSPEnabled (Object wallet);
159
178
void deleteSilentPaymentAddress (Object wallet, String address);
160
179
Future <void > updateFeeRates (Object wallet);
161
180
int getMaxCustomFeeRate (Object wallet);
162
-
163
- void setLedger (WalletBase wallet, Ledger ledger, LedgerDevice device);
164
- Future <List <HardwareAccountData >> getHardwareWalletAccounts (
181
+ void setLedgerConnection (
182
+ WalletBase wallet, ledger.LedgerConnection connection);
183
+ Future <List <HardwareAccountData >> getHardwareWalletBitcoinAccounts (
184
+ LedgerViewModel ledgerVM,
185
+ {int index = 0 ,
186
+ int limit = 5 });
187
+ Future <List <HardwareAccountData >> getHardwareWalletLitecoinAccounts (
165
188
LedgerViewModel ledgerVM,
166
189
{int index = 0 ,
167
190
int limit = 5 });
191
+ List <Output > updateOutputs (
192
+ PendingTransaction pendingTransaction, List <Output > outputs);
193
+ bool txIsReceivedSilentPayment (TransactionInfo txInfo);
194
+ bool txIsMweb (TransactionInfo txInfo);
195
+ Future <void > setMwebEnabled (Object wallet, bool enabled);
196
+ bool getMwebEnabled (Object wallet);
197
+ String ? getUnusedMwebAddress (Object wallet);
198
+ String ? getUnusedSegwitAddress (Object wallet);
168
199
169
200
Future <Map <String , dynamic >> buildV2PjStr ({
170
201
int ? amount,
0 commit comments