use polynode::{PolyNodeClient, PolyNodeEvent, WsMessage};
use polynode::ws::{StreamOptions, Subscription, SubscriptionType};
#[tokio::main]
async fn main() -> polynode::Result<()> {
let client = PolyNodeClient::new(
std::env::var("POLYNODE_API_KEY").expect("Set POLYNODE_API_KEY")
)?;
let mut stream = client.stream(StreamOptions::default()).await?;
let ack = stream.subscribe_with_ack(
Subscription::new(SubscriptionType::Settlements)
.status("all")
.min_size(100.0),
).await?;
println!("{} {:?}", ack.subscription_id, ack.warnings);
while let Some(message) = stream.next().await {
match message? {
WsMessage::Event(PolyNodeEvent::Settlement(event)) => {
println!("pending {} {}", event.tx_hash, event.taker_size);
}
WsMessage::Event(PolyNodeEvent::StatusUpdate(event)) => {
println!("confirmed {} {}", event.tx_hash, event.block_number);
}
WsMessage::Replay(notice) => {
eprintln!("reconnect replay, guaranteed={}", notice.guaranteed);
}
WsMessage::UnknownEvent(event) => {
println!("new event type {}: {}", event.wire_event_type, event.raw);
}
_ => {}
}
}
stream.close().await?;
Ok(())
}