Skip to main content

hypixel/models/skyblock/
bazaar.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::models::common::JsonObject;
6
7/// A snapshot of the SkyBlock bazaar, as returned by `skyblock/bazaar`.
8#[derive(Debug, Clone, Deserialize, Serialize)]
9pub struct Bazaar {
10    #[serde(rename = "lastUpdated", default)]
11    pub last_updated: i64,
12    #[serde(default)]
13    pub products: HashMap<String, BazaarProduct>,
14}
15
16/// A single product's order book within the [`Bazaar`].
17#[derive(Debug, Clone, Deserialize, Serialize)]
18pub struct BazaarProduct {
19    #[serde(default)]
20    pub product_id: String,
21    #[serde(default)]
22    pub sell_summary: Vec<BazaarOrder>,
23    #[serde(default)]
24    pub buy_summary: Vec<BazaarOrder>,
25    #[serde(default)]
26    pub quick_status: Option<BazaarQuickStatus>,
27}
28
29/// One level of a bazaar order book.
30#[derive(Debug, Clone, Deserialize, Serialize)]
31pub struct BazaarOrder {
32    #[serde(default)]
33    pub amount: i64,
34    #[serde(rename = "pricePerUnit", default)]
35    pub price_per_unit: f64,
36    #[serde(default)]
37    pub orders: i64,
38}
39
40/// Aggregated summary statistics for a bazaar product.
41#[derive(Debug, Clone, Deserialize, Serialize)]
42pub struct BazaarQuickStatus {
43    #[serde(rename = "productId", default)]
44    pub product_id: String,
45    #[serde(rename = "sellPrice", default)]
46    pub sell_price: f64,
47    #[serde(rename = "sellVolume", default)]
48    pub sell_volume: i64,
49    #[serde(rename = "sellMovingWeek", default)]
50    pub sell_moving_week: i64,
51    #[serde(rename = "sellOrders", default)]
52    pub sell_orders: i64,
53    #[serde(rename = "buyPrice", default)]
54    pub buy_price: f64,
55    #[serde(rename = "buyVolume", default)]
56    pub buy_volume: i64,
57    #[serde(rename = "buyMovingWeek", default)]
58    pub buy_moving_week: i64,
59    #[serde(rename = "buyOrders", default)]
60    pub buy_orders: i64,
61    #[serde(flatten)]
62    pub extra: JsonObject,
63}