hypixel-sdk 0.2.1

Async client for the Hypixel Public API with typed models and SkyBlock helpers
Documentation
use std::collections::HashMap;

use serde::{Deserialize, Serialize};

use crate::models::common::JsonObject;

/// A snapshot of the SkyBlock bazaar, as returned by `skyblock/bazaar`.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct Bazaar {
    #[serde(rename = "lastUpdated", default)]
    pub last_updated: i64,
    #[serde(default)]
    pub products: HashMap<String, BazaarProduct>,
}

/// A single product's order book within the [`Bazaar`].
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct BazaarProduct {
    #[serde(default)]
    pub product_id: String,
    #[serde(default)]
    pub sell_summary: Vec<BazaarOrder>,
    #[serde(default)]
    pub buy_summary: Vec<BazaarOrder>,
    #[serde(default)]
    pub quick_status: Option<BazaarQuickStatus>,
}

/// One level of a bazaar order book.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct BazaarOrder {
    #[serde(default)]
    pub amount: i64,
    #[serde(rename = "pricePerUnit", default)]
    pub price_per_unit: f64,
    #[serde(default)]
    pub orders: i64,
}

/// Aggregated summary statistics for a bazaar product.
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct BazaarQuickStatus {
    #[serde(rename = "productId", default)]
    pub product_id: String,
    #[serde(rename = "sellPrice", default)]
    pub sell_price: f64,
    #[serde(rename = "sellVolume", default)]
    pub sell_volume: i64,
    #[serde(rename = "sellMovingWeek", default)]
    pub sell_moving_week: i64,
    #[serde(rename = "sellOrders", default)]
    pub sell_orders: i64,
    #[serde(rename = "buyPrice", default)]
    pub buy_price: f64,
    #[serde(rename = "buyVolume", default)]
    pub buy_volume: i64,
    #[serde(rename = "buyMovingWeek", default)]
    pub buy_moving_week: i64,
    #[serde(rename = "buyOrders", default)]
    pub buy_orders: i64,
    #[serde(flatten)]
    pub extra: JsonObject,
}