use serde::{Deserialize, Serialize};
use super::QuoteGetSwapModeEnum;
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct QuoteResponse {
pub input_mint: String,
pub in_amount: String,
pub output_mint: String,
pub out_amount: String,
pub other_amount_threshold: String,
pub swap_mode: QuoteGetSwapModeEnum,
pub slippage_bps: i32,
pub platform_fee: Option<PlatformFee>,
pub price_impact_pct: String,
pub route_plan: Vec<RoutePlanItem>,
#[serde(default)]
pub score_report: Option<serde_json::Value>,
pub context_slot: u64,
pub time_taken: f64,
#[serde(default)]
pub swap_usd_value: Option<String>,
#[serde(default)]
pub simpler_route_used: Option<bool>,
#[serde(default)]
pub most_reliable_amms_quote_report: Option<MostReliableAmmsQuoteReport>,
#[serde(default)]
pub use_incurred_slippage_for_quoting: Option<serde_json::Value>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PlatformFee {
pub amount: String,
pub fee_bps: i32,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RoutePlanItem {
pub swap_info: SwapInfo,
pub percent: i32,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SwapInfo {
pub amm_key: String,
pub label: String,
pub input_mint: String,
pub output_mint: String,
pub in_amount: String,
pub out_amount: String,
pub fee_amount: String,
pub fee_mint: String,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MostReliableAmmsQuoteReport {
pub info: std::collections::HashMap<String, String>,
}