sol_parser_sdk/core/events/
raw_instruction.rs1use serde::{Deserialize, Serialize};
3use solana_sdk::pubkey::Pubkey;
4
5#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
8pub struct RawInstructionPayload {
9 pub program_id: Pubkey,
10 pub instruction_index: usize,
11 pub accounts: Vec<Option<Pubkey>>,
12 pub account_indices: Vec<u8>,
13 pub instruction_data: Vec<u8>,
14}
15
16#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
18pub enum TradeParseStatus {
19 Unresolved,
21 #[default]
23 InstructionDecoded,
24 ExecutionConfirmed,
27}
28
29pub type PumpFunParseStatus = TradeParseStatus;
31
32#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
35pub enum RawInstructionDexType {
36 #[serde(rename = "pumpfun")]
37 PumpFun,
38 #[serde(rename = "pumpswap")]
39 PumpSwap,
40 #[serde(rename = "raydium_launchlab")]
41 RaydiumLaunchlab,
42 #[serde(rename = "raydium_cpmm")]
43 RaydiumCpmm,
44 #[serde(rename = "raydium_clmm")]
45 RaydiumClmm,
46 #[serde(rename = "raydium_amm_v4")]
47 RaydiumAmmV4,
48 #[serde(rename = "orca_whirlpool")]
49 OrcaWhirlpool,
50 #[serde(rename = "meteora_pools")]
51 MeteoraPools,
52 #[serde(rename = "meteora_damm_v2")]
53 MeteoraDammV2,
54 #[serde(rename = "meteora_dlmm")]
55 MeteoraDlmm,
56 #[serde(rename = "meteora_dbc")]
57 MeteoraDbc,
58}
59
60impl RawInstructionDexType {
61 pub const fn as_str(self) -> &'static str {
62 match self {
63 Self::PumpFun => "pumpfun",
64 Self::PumpSwap => "pumpswap",
65 Self::RaydiumLaunchlab => "raydium_launchlab",
66 Self::RaydiumCpmm => "raydium_cpmm",
67 Self::RaydiumClmm => "raydium_clmm",
68 Self::RaydiumAmmV4 => "raydium_amm_v4",
69 Self::OrcaWhirlpool => "orca_whirlpool",
70 Self::MeteoraPools => "meteora_pools",
71 Self::MeteoraDammV2 => "meteora_damm_v2",
72 Self::MeteoraDlmm => "meteora_dlmm",
73 Self::MeteoraDbc => "meteora_dbc",
74 }
75 }
76}