use super::EventMetadata;
use serde::{Deserialize, Serialize};
use solana_sdk::pubkey::Pubkey;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum PumpRouteKind {
MultiHopSwap,
MultiHopCurveSwap,
RapidBuy,
BuyPumpDelta,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct PumpRouteHop {
pub base_mint: Pubkey,
pub quote_mint: Pubkey,
pub venue: Pubkey,
pub base_vault: Pubkey,
pub quote_vault: Pubkey,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PumpRouteIntentEvent {
pub metadata: EventMetadata,
pub kind: PumpRouteKind,
#[serde(default)]
pub is_buy: Option<bool>,
#[serde(default)]
pub ix_name: Option<String>,
pub program: Pubkey,
pub instruction_index: usize,
pub user: Pubkey,
pub input_account: Pubkey,
pub output_account: Pubkey,
pub amount_in: Option<u64>,
pub min_amount_out: Option<u64>,
pub hops: Vec<PumpRouteHop>,
pub instruction_data: Vec<u8>,
}