use avail_rust_client::{prelude::*, subscription::BlockEventsSub};
use avail_rust_core::rpc::{EventFilter, EventOpts};
#[tokio::main]
pub async fn main() -> Result<(), Error> {
let client = Client::new(TURING_ENDPOINT).await?;
let opts = EventOpts::new().filter(EventFilter::OnlyExtrinsics);
let mut sub = BlockEventsSub::new(client.clone(), opts.clone());
let events = sub.next().await?;
println!("Finalized: Extrinsic Event Count: {}, Block Height: {}", events.list.len(), events.block_height);
let mut sub = BlockEventsSub::new(client.clone(), opts.clone());
sub.use_best_block(true);
let events = sub.next().await?;
println!("Best: Extrinsic Event Count: {}, Block Height: {}", events.list.len(), events.block_height);
let mut sub = BlockEventsSub::new(client.clone(), opts.clone());
sub.set_block_height(2100000);
let events = sub.next().await?;
println!("Historical: Extrinsic Event Count: {}, Block Height: {}", events.list.len(), events.block_height);
Ok(())
}