Rename OnlineWallet to Wallet
and remove OfflineWallet
This commit is contained in:
		
							parent
							
								
									672131ca0f
								
							
						
					
					
						commit
						a99e022756
					
				| @ -1,6 +1,6 @@ | |||||||
| [package] | [package] | ||||||
| name = "bdk-ffi" | name = "bdk-ffi" | ||||||
| version = "0.1.0" | version = "0.2.0" | ||||||
| authors = ["Steve Myers <steve@notmandatory.org>", "Sudarsan Balaji <sudarsan.balaji@artfuldev.com>"] | authors = ["Steve Myers <steve@notmandatory.org>", "Sudarsan Balaji <sudarsan.balaji@artfuldev.com>"] | ||||||
| edition = "2018" | edition = "2018" | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										23
									
								
								src/bdk.udl
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								src/bdk.udl
									
									
									
									
									
								
							| @ -84,21 +84,6 @@ interface Transaction { | |||||||
|   Confirmed(TransactionDetails details, BlockTime confirmation); |   Confirmed(TransactionDetails details, BlockTime confirmation); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| interface OfflineWallet { |  | ||||||
|   [Throws=BdkError] |  | ||||||
|   constructor(string descriptor, Network network, DatabaseConfig database_config); |  | ||||||
| 
 |  | ||||||
|   // OfflineWalletOperations |  | ||||||
|   string get_new_address(); |  | ||||||
|   string get_last_unused_address(); |  | ||||||
|   [Throws=BdkError] |  | ||||||
|   u64 get_balance(); |  | ||||||
|   [Throws=BdkError] |  | ||||||
|   void sign([ByRef] PartiallySignedBitcoinTransaction psbt); |  | ||||||
|   [Throws=BdkError] |  | ||||||
|   sequence<Transaction> get_transactions(); |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| dictionary ElectrumConfig { | dictionary ElectrumConfig { | ||||||
|   string url; |   string url; | ||||||
|   string? socks5; |   string? socks5; | ||||||
| @ -125,11 +110,9 @@ callback interface BdkProgress { | |||||||
|   void update(f32 progress, string? message); |   void update(f32 progress, string? message); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| interface OnlineWallet { | interface Wallet { | ||||||
|   [Throws=BdkError] |   [Throws=BdkError] | ||||||
|   constructor(string descriptor, string? change_descriptor, Network network, DatabaseConfig database_config, BlockchainConfig blockchain_config); |   constructor(string descriptor, string? change_descriptor, Network network, DatabaseConfig database_config, BlockchainConfig blockchain_config); | ||||||
| 
 |  | ||||||
|   // OfflineWalletOperations |  | ||||||
|   string get_new_address(); |   string get_new_address(); | ||||||
|   string get_last_unused_address(); |   string get_last_unused_address(); | ||||||
|   [Throws=BdkError] |   [Throws=BdkError] | ||||||
| @ -138,8 +121,6 @@ interface OnlineWallet { | |||||||
|   void sign([ByRef] PartiallySignedBitcoinTransaction psbt); |   void sign([ByRef] PartiallySignedBitcoinTransaction psbt); | ||||||
|   [Throws=BdkError] |   [Throws=BdkError] | ||||||
|   sequence<Transaction> get_transactions(); |   sequence<Transaction> get_transactions(); | ||||||
| 
 |  | ||||||
|   // OnlineWalletInterface |  | ||||||
|   Network get_network(); |   Network get_network(); | ||||||
|   [Throws=BdkError] |   [Throws=BdkError] | ||||||
|   void sync(BdkProgress progress_update, u32? max_address_param); |   void sync(BdkProgress progress_update, u32? max_address_param); | ||||||
| @ -149,7 +130,7 @@ interface OnlineWallet { | |||||||
| 
 | 
 | ||||||
| interface PartiallySignedBitcoinTransaction { | interface PartiallySignedBitcoinTransaction { | ||||||
|   [Throws=BdkError] |   [Throws=BdkError] | ||||||
|   constructor([ByRef] OnlineWallet wallet, string recipient, u64 amount, float? fee_rate); |   constructor([ByRef] Wallet wallet, string recipient, u64 amount, float? fee_rate); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| dictionary ExtendedKeyInfo { | dictionary ExtendedKeyInfo { | ||||||
|  | |||||||
							
								
								
									
										73
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										73
									
								
								src/lib.rs
									
									
									
									
									
								
							| @ -12,7 +12,7 @@ use bdk::keys::bip39::{Language, Mnemonic, WordCount}; | |||||||
| use bdk::keys::{DerivableKey, ExtendedKey, GeneratableKey, GeneratedKey}; | use bdk::keys::{DerivableKey, ExtendedKey, GeneratableKey, GeneratedKey}; | ||||||
| use bdk::miniscript::BareCtx; | use bdk::miniscript::BareCtx; | ||||||
| use bdk::wallet::AddressIndex; | use bdk::wallet::AddressIndex; | ||||||
| use bdk::{BlockTime, Error, FeeRate, SignOptions, Wallet}; | use bdk::{BlockTime, Error, FeeRate, SignOptions, Wallet as BdkWallet }; | ||||||
| use std::convert::TryFrom; | use std::convert::TryFrom; | ||||||
| use std::str::FromStr; | use std::str::FromStr; | ||||||
| use std::sync::{Mutex, MutexGuard}; | use std::sync::{Mutex, MutexGuard}; | ||||||
| @ -48,17 +48,7 @@ pub enum BlockchainConfig { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| trait WalletHolder<B> { | trait WalletHolder<B> { | ||||||
|     fn get_wallet(&self) -> MutexGuard<Wallet<B, AnyDatabase>>; |     fn get_wallet(&self) -> MutexGuard<BdkWallet<B, AnyDatabase>>; | ||||||
| } |  | ||||||
| 
 |  | ||||||
| struct OfflineWallet { |  | ||||||
|     wallet: Mutex<Wallet<(), AnyDatabase>>, |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl WalletHolder<()> for OfflineWallet { |  | ||||||
|     fn get_wallet(&self) -> MutexGuard<Wallet<(), AnyDatabase>> { |  | ||||||
|         self.wallet.lock().unwrap() |  | ||||||
|     } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[derive(Debug, Clone, PartialEq, Eq, Default)] | #[derive(Debug, Clone, PartialEq, Eq, Default)] | ||||||
| @ -105,7 +95,7 @@ impl From<&bdk::TransactionDetails> for Transaction { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| trait OfflineWalletOperations<B>: WalletHolder<B> { | trait WalletOperations<B>: WalletHolder<B> { | ||||||
|     fn get_new_address(&self) -> String { |     fn get_new_address(&self) -> String { | ||||||
|         self.get_wallet() |         self.get_wallet() | ||||||
|             .get_address(AddressIndex::New) |             .get_address(AddressIndex::New) | ||||||
| @ -144,26 +134,8 @@ trait OfflineWalletOperations<B>: WalletHolder<B> { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl OfflineWallet { | struct Wallet { | ||||||
|     fn new( |     _wallet: Mutex<BdkWallet<AnyBlockchain, AnyDatabase>>, | ||||||
|         descriptor: String, |  | ||||||
|         network: Network, |  | ||||||
|         database_config: DatabaseConfig, |  | ||||||
|     ) -> Result<Self, BdkError> { |  | ||||||
|         let any_database_config = match database_config { |  | ||||||
|             DatabaseConfig::Memory { .. } => AnyDatabaseConfig::Memory(()), |  | ||||||
|             DatabaseConfig::Sled { config } => AnyDatabaseConfig::Sled(config), |  | ||||||
|         }; |  | ||||||
|         let database = AnyDatabase::from_config(&any_database_config)?; |  | ||||||
|         let wallet = Mutex::new(Wallet::new_offline(&descriptor, None, network, database)?); |  | ||||||
|         Ok(OfflineWallet { wallet }) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl OfflineWalletOperations<()> for OfflineWallet {} |  | ||||||
| 
 |  | ||||||
| struct OnlineWallet { |  | ||||||
|     wallet: Mutex<Wallet<AnyBlockchain, AnyDatabase>>, |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub trait BdkProgress: Send + Sync { | pub trait BdkProgress: Send + Sync { | ||||||
| @ -188,12 +160,12 @@ struct PartiallySignedBitcoinTransaction { | |||||||
| 
 | 
 | ||||||
| impl PartiallySignedBitcoinTransaction { | impl PartiallySignedBitcoinTransaction { | ||||||
|     fn new( |     fn new( | ||||||
|         online_wallet: &OnlineWallet, |         wallet: &Wallet, | ||||||
|         recipient: String, |         recipient: String, | ||||||
|         amount: u64, |         amount: u64, | ||||||
|         fee_rate: Option<f32>, // satoshis per vbyte
 |         fee_rate: Option<f32>, // satoshis per vbyte
 | ||||||
|     ) -> Result<Self, Error> { |     ) -> Result<Self, Error> { | ||||||
|         let wallet = online_wallet.get_wallet(); |         let wallet = wallet.get_wallet(); | ||||||
|         match Address::from_str(&recipient) { |         match Address::from_str(&recipient) { | ||||||
|             Ok(address) => { |             Ok(address) => { | ||||||
|                 let (psbt, details) = { |                 let (psbt, details) = { | ||||||
| @ -216,7 +188,15 @@ impl PartiallySignedBitcoinTransaction { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl OnlineWallet { | impl WalletHolder<AnyBlockchain> for Wallet { | ||||||
|  |     fn get_wallet(&self) -> MutexGuard<BdkWallet<AnyBlockchain, AnyDatabase>> { | ||||||
|  |         self._wallet.lock().unwrap() | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl WalletOperations<AnyBlockchain> for Wallet {} | ||||||
|  | 
 | ||||||
|  | impl Wallet { | ||||||
|     fn new( |     fn new( | ||||||
|         descriptor: String, |         descriptor: String, | ||||||
|         change_descriptor: Option<String>, |         change_descriptor: Option<String>, | ||||||
| @ -250,18 +230,18 @@ impl OnlineWallet { | |||||||
|         }; |         }; | ||||||
|         let database = AnyDatabase::from_config(&any_database_config)?; |         let database = AnyDatabase::from_config(&any_database_config)?; | ||||||
|         let blockchain = AnyBlockchain::from_config(&any_blockchain_config)?; |         let blockchain = AnyBlockchain::from_config(&any_blockchain_config)?; | ||||||
|         let wallet = Mutex::new(Wallet::new( |         let _wallet = Mutex::new(BdkWallet::new( | ||||||
|             &descriptor, |             &descriptor, | ||||||
|             change_descriptor.to_owned().as_ref(), |             change_descriptor.to_owned().as_ref(), | ||||||
|             network, |             network, | ||||||
|             database, |             database, | ||||||
|             blockchain, |             blockchain, | ||||||
|         )?); |         )?); | ||||||
|         Ok(OnlineWallet { wallet }) |         Ok(Wallet { _wallet }) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn get_network(&self) -> Network { |     fn get_network(&self) -> Network { | ||||||
|         self.wallet.lock().unwrap().network() |         self.get_wallet().network() | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn sync( |     fn sync( | ||||||
| @ -270,9 +250,7 @@ impl OnlineWallet { | |||||||
|         max_address_param: Option<u32>, |         max_address_param: Option<u32>, | ||||||
|     ) -> Result<(), BdkError> { |     ) -> Result<(), BdkError> { | ||||||
|         progress_update.update(21.0, Some("message".to_string())); |         progress_update.update(21.0, Some("message".to_string())); | ||||||
|         self.wallet |         self.get_wallet() | ||||||
|             .lock() |  | ||||||
|             .unwrap() |  | ||||||
|             .sync(BdkProgressHolder { progress_update }, max_address_param) |             .sync(BdkProgressHolder { progress_update }, max_address_param) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -286,14 +264,6 @@ impl OnlineWallet { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl WalletHolder<AnyBlockchain> for OnlineWallet { |  | ||||||
|     fn get_wallet(&self) -> MutexGuard<Wallet<AnyBlockchain, AnyDatabase>> { |  | ||||||
|         self.wallet.lock().unwrap() |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| impl OfflineWalletOperations<AnyBlockchain> for OnlineWallet {} |  | ||||||
| 
 |  | ||||||
| pub struct ExtendedKeyInfo { | pub struct ExtendedKeyInfo { | ||||||
|     mnemonic: String, |     mnemonic: String, | ||||||
|     xprv: String, |     xprv: String, | ||||||
| @ -334,5 +304,4 @@ fn restore_extended_key( | |||||||
|     }) |     }) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| uniffi::deps::static_assertions::assert_impl_all!(OfflineWallet: Sync, Send); | uniffi::deps::static_assertions::assert_impl_all!(Wallet: Sync, Send); | ||||||
| uniffi::deps::static_assertions::assert_impl_all!(OnlineWallet: Sync, Send); |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user