solana-streamer-sdk 0.4.0

A lightweight Rust library for real-time event streaming from Solana DEX trading programs. Supports PumpFun, PumpSwap, Bonk, and Raydium protocols with Yellowstone gRPC and ShredStream.
Documentation
use std::borrow::Cow;

use crate::impl_unified_event;
use crate::streaming::event_parser::common::{types::EventType, EventMetadata};
use borsh::BorshDeserialize;
use serde::{Deserialize, Serialize};

/// Block元数据事件
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize, BorshDeserialize)]
pub struct BlockMetaEvent {
    #[borsh(skip)]
    pub metadata: EventMetadata,
    pub slot: u64,
    pub block_hash: String,
}

impl BlockMetaEvent {
    pub fn new(
        slot: u64,
        block_hash: String,
        block_time_ms: i64,
        program_received_time_us: i64,
    ) -> Self {
        let metadata = EventMetadata::new(
            Cow::Borrowed(""),
            slot,
            block_time_ms / 1000,
            block_time_ms,
            crate::streaming::event_parser::common::types::ProtocolType::Common,
            EventType::BlockMeta,
            solana_sdk::pubkey::Pubkey::default(),
            0,
            None,
            program_received_time_us,
            None,
        );
        Self { metadata, slot, block_hash }
    }
}

// 使用macro生成UnifiedEvent实现
impl_unified_event!(BlockMetaEvent,);