diff options
Diffstat (limited to 'impls/monero.rs/example/src')
| -rw-r--r-- | impls/monero.rs/example/src/main.rs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/impls/monero.rs/example/src/main.rs b/impls/monero.rs/example/src/main.rs new file mode 100644 index 0000000..245013a --- /dev/null +++ b/impls/monero.rs/example/src/main.rs @@ -0,0 +1,67 @@ +use monero_c_rust::{NetworkType, WalletError, WalletManager, WalletConfig}; +use tempfile::TempDir; + +fn main() -> Result<(), WalletError> { + let manager = WalletManager::new()?; + + let temp_dir = TempDir::new().expect("Failed to create temporary directory"); + let wallet_path = temp_dir.path().join("test_wallet"); + let wallet_str = wallet_path.to_str().unwrap(); + + let wallet = manager.restore_polyseed( + wallet_str.to_string(), + "password".to_string(), + "capital chief route liar question fix clutch water outside pave hamster occur always learn license knife".to_string(), + NetworkType::Mainnet, + 0, // Restore from the beginning of the blockchain. + 1, // Default KDF rounds. + "".to_string(), // No seed offset. + true, // Create a new wallet. + )?; + + println!("Wallet created successfully."); + + // Print the primary address. + println!("Primary address: {}", wallet.get_address(0, 0)?); + + // Initialize the wallet. + let config = WalletConfig { + daemon_address: "https://monero.stackwallet.com:18081".to_string(), + upper_transaction_size_limit: 10000, // TODO: use sane value. + daemon_username: "".to_string(), + daemon_password: "".to_string(), + use_ssl: true, + light_wallet: false, + proxy_address: "".to_string(), + }; + + // Perform the initialization. + wallet.init(config)?; + wallet.throw_if_error()?; + + // Refresh the wallet. + wallet.refresh()?; + wallet.throw_if_error()?; + + // Wait for the refresh to complete. + loop { + let height = manager.get_height().expect("Failed to get blockchain height"); + println!("Current blockchain height: {}", height); + if height > 3263501 { // After this height we can get_balance. + break (); + } + // Wait one second. + std::thread::sleep(std::time::Duration::from_secs(1)); + } + + // Get the balance. + let balance_result = wallet.get_balance(0); // Account index 0. + let balance = balance_result.unwrap(); + println!("Balance: {:?}", balance); + + // Clean up the wallet. + std::fs::remove_file(wallet_str).expect("Failed to delete test wallet"); + std::fs::remove_file(format!("{}.keys", wallet_str)).expect("Failed to delete test wallet keys"); + + Ok(()) +} |
