use std::collections::HashSet; use addonscript_versioning::Version; use serde::{Deserialize, Serialize}; use url::Url; use crate::{AddonDescriptor, enums::APIFeature, Patch}; use super::{AddonScript, File, Hashes, Meta}; #[derive(Debug, Serialize, Deserialize)] pub struct APIAddon { pub id: String, pub namespace: String, pub versions: Vec, #[serde(skip_serializing_if = "Option::is_none")] pub meta: Option, } #[derive(Debug, Serialize, Deserialize)] pub struct APIFile { pub link: Vec, #[serde(skip_serializing_if = "Option::is_none")] pub hashes: Option, #[serde(skip_serializing_if = "Option::is_none")] pub meta: Option, } #[derive(Debug, Serialize, Deserialize)] pub struct EnvObject { #[serde(default)] pub requested: Vec, #[serde(default)] pub provided: Vec, } #[derive(Debug, Serialize, Deserialize)] pub struct EnvBuilderRequest { pub addonscript: AddonScript, pub addon: AddonDescriptor, #[serde(skip_serializing_if = "Option::is_none")] pub client: Option, #[serde(skip_serializing_if = "Option::is_none")] pub server: Option, } #[derive(Debug, Serialize, Deserialize)] pub struct EnvBuilderResponse { pub addonscript: AddonScript, pub files: Vec, #[serde(skip_serializing_if = "Option::is_none")] pub launch_client: Option, #[serde(skip_serializing_if = "Option::is_none")] pub launch_server: Option, } #[derive(Debug, Serialize, Deserialize)] pub struct APIIndex { pub versions: HashSet, } #[derive(Debug, Serialize, Deserialize)] pub struct V2Index { pub features: HashSet, pub manifest_version: i32, }