use futures::StreamExt;
use helius_laserstream::{
grpc::{SubscribePreprocessedRequest, SubscribePreprocessedRequestFilterTransactions},
subscribe_preprocessed, LaserstreamConfig,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt::init();
dotenv::dotenv().ok();
let endpoint = "https://laserstream-mainnet-sgp.helius-rpc.com".to_string();
let api_key = "".to_string();
println!("Subscribing to preprocessed transactions...");
let config = LaserstreamConfig {
endpoint,
api_key,
..Default::default()
};
let mut request = SubscribePreprocessedRequest::default();
request.transactions.insert(
"preprocessed-filter".to_string(),
SubscribePreprocessedRequestFilterTransactions {
vote: Some(false),
..Default::default()
},
);
let (stream, _handle) = subscribe_preprocessed(config, request);
tokio::pin!(stream);
println!("Successfully subscribed. Listening for preprocessed transactions...");
println!("Press Ctrl+C to exit\n");
while let Some(result) = stream.next().await {
match result {
Ok(update) => {
println!("{:#?}", update);
}
Err(e) => {
eprintln!("Stream error: {:?}", e);
break;
}
}
}
Ok(())
}