solana_stream_sdk/
lib.rs

1//! # Solana Stream SDK
2//!
3//! A Rust SDK for streaming Solana data using Shreds and gRPC.
4//! This crate provides convenient wrappers around the Shreds protobuf definitions
5//! for easier integration with Solana streaming services.
6
7pub mod error;
8pub mod shreds_udp;
9pub mod shredstream;
10pub mod txn;
11pub use yellowstone_grpc_client;
12pub use yellowstone_grpc_proto;
13
14// Internal protobuf modules
15pub mod shared {
16    tonic::include_proto!("shared");
17}
18
19pub mod shredstream_proto {
20    tonic::include_proto!("shredstream");
21}
22
23// Re-export commonly used types for convenience
24// Re-export error types
25pub use error::SolanaStreamError;
26// Re-export shredstream client
27pub use shredstream::ShredstreamClient;
28// Re-export UDP receiver
29pub use shreds_udp::{deshred_shreds_to_entries, UdpDatagram, UdpShredReceiver};
30
31// Shredstream protobuf exports
32pub use shredstream_proto::{
33    CommitmentLevel, SubscribeEntriesRequest, SubscribeRequestFilterAccounts,
34    SubscribeRequestFilterAccountsFilter, SubscribeRequestFilterAccountsFilterLamports,
35    SubscribeRequestFilterAccountsFilterMemcmp, SubscribeRequestFilterSlots,
36    SubscribeRequestFilterTransactions,
37};
38
39pub use yellowstone_grpc_client::{GeyserGrpcClient, GeyserGrpcClientError, Interceptor};
40
41// Geyser protobuf exports with clear prefixes
42pub use yellowstone_grpc_proto::{
43    geyser::{
44        subscribe_update::UpdateOneof as GeyserUpdateOneof, SlotStatus as GeyserSlotStatus,
45        SubscribeUpdateBlock as GeyserUpdateBlock,
46        SubscribeUpdateBlockMeta as GeyserUpdateBlockMeta, SubscribeUpdateSlot as GeyserUpdateSlot,
47    },
48    plugin::{
49        filter::message::FilteredUpdate as GeyserFilteredUpdate,
50        message::{
51            MessageAccount as GeyserMessageAccount, MessageBlock as GeyserMessageBlock,
52            MessageBlockMeta as GeyserMessageBlockMeta, MessageEntry as GeyserMessageEntry,
53            MessageSlot as GeyserMessageSlot, MessageTransaction as GeyserMessageTransaction,
54        },
55    },
56    prelude::{
57        geyser_client::GeyserClient as GeyserGrpcInnerClient,
58        subscribe_request_filter_accounts_filter::Filter as GeyserAccountsFilterEnum,
59        subscribe_request_filter_accounts_filter_lamports::Cmp as GeyserLamportsCmp,
60        subscribe_request_filter_accounts_filter_memcmp::Data as GeyserMemcmpData,
61        CommitmentLevel as GeyserCommitmentLevel, SubscribeRequest as GeyserSubscribeRequest,
62        SubscribeRequestAccountsDataSlice as GeyserAccountsDataSlice,
63        SubscribeRequestFilterAccounts as GeyserSubscribeRequestFilterAccounts,
64        SubscribeRequestFilterAccountsFilter as GeyserSubscribeRequestFilterAccountsFilter,
65        SubscribeRequestFilterAccountsFilterLamports as GeyserSubscribeRequestFilterAccountsFilterLamports,
66        SubscribeRequestFilterAccountsFilterMemcmp as GeyserSubscribeRequestFilterAccountsFilterMemcmp,
67        SubscribeRequestFilterBlocks as GeyserSubscribeRequestFilterBlocks,
68        SubscribeRequestFilterBlocksMeta as GeyserSubscribeRequestFilterBlocksMeta,
69        SubscribeRequestFilterEntry as GeyserSubscribeRequestFilterEntry,
70        SubscribeRequestFilterSlots as GeyserSubscribeRequestFilterSlots,
71        SubscribeRequestFilterTransactions as GeyserSubscribeRequestFilterTransactions,
72        SubscribeUpdate as GeyserSubscribeUpdate,
73        SubscribeUpdateAccountInfo as GeyserSubscribeUpdateAccountInfo,
74        SubscribeUpdateEntry as GeyserSubscribeUpdateEntry,
75        SubscribeUpdateTransactionInfo as GeyserSubscribeUpdateTransactionInfo,
76    },
77    prost::Message as GeyserMessage,
78};
79
80pub type Result<T> = std::result::Result<T, SolanaStreamError>;