use avail_rust_client::prelude::*;
#[tokio::main]
pub async fn main() -> Result<(), Error> {
let client = Client::new(TURING_ENDPOINT).await?;
let submittable = client.tx().data_availability().submit_data("My data");
let call_hash = submittable.call_hash();
let estimated_fee = submittable.estimate_call_fees(None).await?;
let weight = submittable.call_info(None).await?.weight;
println!(
"Call Hash: {:?}, Estimated Fee: {}, Weight: {}",
call_hash,
estimated_fee.final_fee(),
weight.ref_time
);
let signer = Keypair::from_str("//Bob")?;
let submitted = submittable.sign_and_submit(&signer, Options::new(2)).await?;
println!(
"Ext Hash: {:?}, Account Id: {}, Nonce: {}, App Id: {}",
submitted.ext_hash, submitted.account_id, submitted.options.nonce, submitted.options.app_id
);
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::data_availability::events::DataSubmitted>()
.expect("Should be there");
println!(
"Is Successful: {}, Who: {}, Data Hash: {:?}",
events.is_extrinsic_success_present(),
event.who,
event.data_hash
);
let ext = receipt.extrinsic::<avail::data_availability::tx::SubmitData>().await?;
println!("Data: {:?}", String::from_utf8(ext.call.data).unwrap());
Ok(())
}