use failure::{format_err, Error};
use hedera::{SecretKey, Client, TransactionStatus};
use std::{env, thread::sleep, time::Duration};
fn main() -> Result<(), Error> {
let secret = SecretKey::generate();
let public = secret.public();
println!("secret = {}", secret);
println!("public = {}", public);
let operator = "0:0:2".parse()?;
let operator_secret = env::var("OPERATOR_SECRET")?.parse()?;
let node = "0:0:3".parse()?;
let client = Client::new("testnet.hedera.com:50001")?;
let id = client
.create_account()
.key(public)
.initial_balance(10)
.operator(operator)
.node(node)
.memo("[hedera-sdk-rust][example]")
.sign(&operator_secret)
.execute()?;
println!("created account; transaction = {}", id);
println!("wait for 2s... ");
sleep(Duration::from_secs(2));
let receipt = client.transaction(id).receipt().get()?;
if receipt.status != TransactionStatus::Success {
Err(format_err!(
"transaction has a non-successful status: {:?}",
receipt.status
))?;
}
let account = receipt.account_id.unwrap();
println!("account = {}", account);
Ok(())
}