use orbitflare_sdk::proto::jetstream::v2::subscribe_transactions_response::Payload;
let mut stream = client.subscribe_transactions(vec![filter]);
while let Some(resp) = stream.next().await {
let resp = resp?;
match resp.payload {
Some(Payload::Transaction(ft)) => {
// resp.sequence - monotonic per-stream sequence number
// ft.filter_ids - which of your filters this tx matched
if let Some(tx) = &ft.transaction {
// tx.slot, tx.signature, tx.account_keys, tx.instructions
// enrichment (only when include_enrichment is set): tx.fee_payer,
// tx.program_ids, tx.compute_unit_price, tx.compute_limit,
// tx.loaded_writable_addresses, tx.loaded_readonly_addresses
println!("seq={} slot={} cu_price={}", resp.sequence, tx.slot, tx.compute_unit_price);
}
}
Some(Payload::FilterValidation(r)) => {
// one per filter after each add/remove
println!("filter {} accepted={} {}", r.filter_id, r.accepted, r.rejection_reason);
}
Some(Payload::Heartbeat(hb)) => {
// hb.server_ts_ms - server wall-clock, ms since epoch
let _ = hb;
}
Some(Payload::Pong(p)) => {
// p.ping_id
let _ = p;
}
None => {}
}
}