use serde::{Deserialize, Serialize};
use super::RemoteValue;
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_l40s")]
RemoteL40S,
#[serde(rename = "remote_a100")]
RemoteA100,
#[serde(rename = "remote_h200")]
RemoteH200,
#[serde(rename = "remote_b200")]
RemoteB200,
#[serde(rename = "remote_mi350x")]
RemoteMI350X,
#[serde(rename = "remote_mi355x")]
RemoteMI355X,
#[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>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RemotePrediction {
pub id: String,
pub tag: String,
pub created: String,
#[serde(default)]
pub results: Option<Vec<RemoteValue>>,
#[serde(default)]
pub latency: Option<f64>,
#[serde(default)]
pub error: Option<String>,
#[serde(default)]
pub logs: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RemotePredictionEvent {
pub event: String,
pub data: RemotePrediction,
}