use serde::{Deserialize, Serialize};
use super::Value;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum Acceleration {
#[serde(rename = "local_auto")] LocalAuto,
#[serde(rename = "local_cpu")] LocalCpu,
#[serde(rename = "local_gpu")] LocalGpu,
#[serde(rename = "local_npu")] LocalNpu,
#[serde(rename = "remote_auto")] RemoteAuto,
#[serde(rename = "remote_cpu")] RemoteCpu,
#[serde(rename = "remote_a10")] RemoteA10,
#[serde(rename = "remote_a40")] RemoteA40,
#[serde(rename = "remote_a100")] RemoteA100,
#[serde(rename = "remote_h200")] RemoteH200,
#[serde(rename = "remote_b200")] RemoteB200,
#[serde(untagged)] Adaptive(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Prediction {
pub id: String,
pub tag: String,
pub created: String,
#[serde(default)]
pub configuration: Option<String>,
#[serde(default)]
pub resources: Option<Vec<PredictionResource>>,
#[serde(skip)]
pub results: Option<Vec<Value>>,
#[serde(default)]
pub latency: Option<f64>,
#[serde(default)]
pub error: Option<String>,
#[serde(default)]
pub logs: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PredictionResource {
#[serde(rename = "type")]
pub kind: String,
pub url: String,
#[serde(default)]
pub name: Option<String>,
}