use pwr_rs::{
Wallet,
RPC
};
#[tokio::main]
async fn main() {
let seed_phrase = "demand april length soap cash concert shuffle result force mention fringe slim";
let wallet = Wallet::new(seed_phrase);
wallet.store_wallet("example_wallet.dat", "your_password_here").unwrap();
let wallet = Wallet::load_wallet("example_wallet.dat", "your_password_here").expect("Failed to load wallet");
let address = wallet.get_address();
println!("Address: {address}");
let nonce = wallet.get_nonce().await;
println!("Nonce: {nonce}");
let balance = wallet.get_balance().await;
println!("Balance: {balance}");
#[cfg(feature = "rpc")]
{
let rpc = RPC::new("https://pwrrpc.pwrlabs.io/").await.unwrap();
let fee_per_byte = rpc.get_fee_per_byte().await.unwrap();
println!("FeePerByte: {fee_per_byte}");
let latest_block = rpc.get_latest_block().await.unwrap();
println!("LatestBlock: {latest_block}");
let start_block = 85411;
let end_block = 85420;
let vida_id = 123;
let transactions = rpc.get_vida_data_transactions(start_block, end_block, vida_id).await.unwrap();
println!("VidaData: {:?}", hex::encode(&transactions[0].data));
let guardian = rpc.get_guardian_of_address("0xD97C25C0842704588DD70A061C09A522699E2B9C").await.unwrap();
println!("Guardian: {guardian}");
let block = rpc.get_block_by_number(418).await.unwrap();
println!("Block: {:?}", block);
let active_voting_power = rpc.get_active_voting_power().await.unwrap();
println!("ActiveVotingPower: {active_voting_power}");
let conduits_vida = rpc.get_conduits_of_vida(69).await.unwrap();
println!("ConduitsVida: {:?}", conduits_vida);
let total_validators_count = rpc.get_validators_count().await.unwrap();
println!("TotalValidatorsCount: {total_validators_count}");
let standby_validators_count = rpc.get_standby_validator_count().await.unwrap();
println!("StandbyValidatorsCount: {standby_validators_count}");
let active_validators_count = rpc.get_active_validator_count().await.unwrap();
println!("ActiveValidatorsCount: {active_validators_count}");
let tx = wallet.transfer_pwr(
"0x3B3B69093879E7B6F28366FA3C32762590FF547E".to_string(),
10,
fee_per_byte,
).await;
println!("Transfer tx hash: {}", tx.data.unwrap());
let data: Vec<u8> = vec!["Hello World!"].into_iter()
.flat_map(|s| s.as_bytes().to_vec())
.collect();
let tx = wallet.send_vida_data(1234, data.clone(), fee_per_byte).await;
println!("Send Vida Data tx hash: {}", tx.data.unwrap());
let tx = wallet.send_payable_vida_data(1234, data, 1000, fee_per_byte).await;
println!("Send Payable Vida Data tx hash: {}", tx.data.unwrap());
}
}