use avail_rust_client::prelude::*;
#[tokio::main]
pub async fn main() -> Result<(), Error> {
let client = Client::new(TURING_ENDPOINT).await?;
let submittable = client
.tx()
.balances()
.transfer_keep_alive("5Ev2jfLbYH6ENZ8ThTmqBX58zoinvHyqvRMvtoiUnLLcv1NJ", ONE_AVAIL);
let signer = Keypair::from_str("//Bob")?;
let submitted = submittable.sign_and_submit(&signer, Default::default()).await?;
println!("Ext Hash: {:?}", submitted.ext_hash,);
let receipt = submitted.receipt(false).await?.expect("Should be included");
println!("Block State: {}", receipt.block_state().await?);
println!(
"Block Height: {}, Block Hash: {:?}, Ext Hash: {:?}, Ext Index: {}",
receipt.block_height, receipt.block_hash, receipt.ext_hash, receipt.ext_index
);
let events = receipt.events().await?;
let event = events
.first::<avail::balances::events::Transfer>()
.expect("Should be there");
println!(
"Is Successful: {}, Amount: {}, From: {}, To: {}",
events.is_extrinsic_success_present(),
event.amount,
event.from,
event.to,
);
let ext = receipt.extrinsic::<avail::balances::tx::TransferKeepAlive>().await?;
let dest = match &ext.call.dest {
MultiAddress::Id(id) => std::format!("{}", id),
_ => std::format!("{:?}", ext.call.dest),
};
println!("Dest: {}, Value: {}", dest, ext.call.value);
Ok(())
}