sol-shred-sdk 3.0.1

Multi-source Solana shred decoding and multi-DEX event parsing SDK.
Documentation
use crate::core::events::{DexEvent, EventMetadata};

pub mod discriminators {
    pub const SWAP_BASE_IN: [u8; 16] = [
        143, 190, 90, 218, 196, 30, 51, 222, 155, 167, 108, 32, 122, 76, 173, 64,
    ];
    pub const SWAP_BASE_OUT: [u8; 16] = [
        55, 217, 98, 86, 163, 74, 180, 173, 155, 167, 108, 32, 122, 76, 173, 64,
    ];
    pub const CREATE_POOL: [u8; 16] = [
        233, 146, 209, 142, 207, 104, 64, 188, 155, 167, 108, 32, 122, 76, 173, 64,
    ];
    pub const DEPOSIT: [u8; 16] = [
        242, 35, 198, 137, 82, 225, 242, 182, 155, 167, 108, 32, 122, 76, 173, 64,
    ];
    pub const WITHDRAW: [u8; 16] = [
        183, 18, 70, 156, 148, 109, 161, 34, 155, 167, 108, 32, 122, 76, 173, 64,
    ];
}

#[inline]
pub fn parse(disc: &[u8; 16], data: &[u8], metadata: EventMetadata) -> Option<DexEvent> {
    match *disc {
        discriminators::SWAP_BASE_IN => {
            crate::logs::raydium_cpmm::parse_swap_base_in_from_data(data, metadata)
        }
        discriminators::SWAP_BASE_OUT => {
            crate::logs::raydium_cpmm::parse_swap_base_out_from_data(data, metadata)
        }
        discriminators::CREATE_POOL => {
            crate::logs::raydium_cpmm::parse_create_pool_from_data(data, metadata)
        }
        discriminators::DEPOSIT => {
            crate::logs::raydium_cpmm::parse_deposit_from_data(data, metadata)
        }
        discriminators::WITHDRAW => {
            crate::logs::raydium_cpmm::parse_withdraw_from_data(data, metadata)
        }
        _ => None,
    }
}