use std::collections::BTreeMap as Map;
use serde::Deserialize;
#[derive(Debug, Deserialize, PartialEq, Eq)]
pub struct VersionManifest {
pub latest: LatestVersion,
pub versions: Vec<VersionInfo>,
}
#[derive(Debug, Deserialize, PartialEq, Eq)]
pub struct LatestVersion {
pub release: String,
pub snapshot: String,
}
#[derive(Debug, Deserialize, PartialEq, Eq, Clone, Default)]
pub struct VersionInfo {
pub id: String,
#[serde(rename = "type")]
pub version_type: String,
pub url: String,
pub time: String,
#[serde(rename = "releaseTime")]
pub release_time: String,
}
#[derive(Debug, Deserialize, PartialEq, Eq, Default)]
pub struct AssetIndexes {
#[serde(default)]
pub map_to_resources: bool,
pub objects: Map<String, AssetItem>,
}
#[derive(Debug, Deserialize, PartialEq, Eq)]
pub struct AssetItem {
pub hash: String,
pub size: usize,
}
#[derive(Clone, Debug)]
pub struct ForgeVersionsData {
pub recommended: Option<ForgeItemInfo>,
pub latest: Option<ForgeItemInfo>,
pub all_versions: Vec<ForgeItemInfo>,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
pub struct ForgeItemInfo {
pub version: String,
pub mcversion: String,
pub files: Vec<ForgeFile>,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
pub struct ForgePromoItem {
pub name: String,
pub build: Option<ForgeItemInfo>,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
pub struct ForgeFile {
pub category: String,
pub format: String,
}
#[derive(Clone, Debug, Deserialize, PartialEq, Eq)]
pub struct OptifineVersionMeta {
pub mcversion: String,
#[serde(rename = "type")]
pub version_type: String,
pub patch: String,
pub filename: String,
}