use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::models::common::JsonObject;
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct SkyBlockAuction {
#[serde(rename = "_id", default)]
pub id: String,
#[serde(default)]
pub uuid: String,
#[serde(default)]
pub auctioneer: String,
#[serde(default)]
pub profile_id: String,
#[serde(default)]
pub coop: Vec<String>,
#[serde(default)]
pub start: i64,
#[serde(default)]
pub end: i64,
#[serde(default)]
pub item_name: String,
#[serde(default)]
pub item_lore: String,
#[serde(default)]
pub category: String,
#[serde(default)]
pub tier: String,
#[serde(default)]
pub starting_bid: i64,
#[serde(default)]
pub item_bytes: Value,
#[serde(default)]
pub claimed: bool,
#[serde(default)]
pub highest_bid_amount: i64,
#[serde(default)]
pub bin: bool,
#[serde(default)]
pub bids: Vec<Value>,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct AuctionsPage {
#[serde(default)]
pub page: i64,
#[serde(rename = "totalPages", default)]
pub total_pages: i64,
#[serde(rename = "totalAuctions", default)]
pub total_auctions: i64,
#[serde(rename = "lastUpdated", default)]
pub last_updated: i64,
#[serde(default)]
pub auctions: Vec<SkyBlockAuction>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct EndedAuction {
#[serde(default)]
pub auction_id: String,
#[serde(default)]
pub seller: String,
#[serde(default)]
pub seller_profile: String,
#[serde(default)]
pub buyer: String,
#[serde(default)]
pub buyer_profile: Option<String>,
#[serde(default)]
pub timestamp: i64,
#[serde(default)]
pub price: i64,
#[serde(default)]
pub bin: bool,
#[serde(default)]
pub item_bytes: String,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Deserialize)]
pub(crate) struct AuctionResponse {
#[serde(default)]
pub auctions: Vec<SkyBlockAuction>,
}
#[derive(Debug, Clone, Deserialize)]
pub(crate) struct EndedAuctionsResponse {
#[serde(default)]
pub auctions: Vec<EndedAuction>,
}