use serde::{Deserialize, Serialize};
use super::candidate::PricingSku;
use super::ids::{ModelId, ProviderId, WireModelId};
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RouteLimits {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub context_tokens: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub input_tokens: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub output_tokens: Option<u64>,
}
impl RouteLimits {
#[must_use]
pub const fn has_known_limit(self) -> bool {
self.context_tokens.is_some() || self.input_tokens.is_some() || self.output_tokens.is_some()
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct ProviderModelOffering {
pub provider: ProviderId,
pub canonical_model: Option<ModelId>,
pub wire_model_id: WireModelId,
pub endpoint_key: String,
pub default_for_provider: bool,
pub limits: RouteLimits,
pub pricing: PricingSku,
}
#[must_use]
pub fn bundled_offerings() -> Vec<ProviderModelOffering> {
Vec::new()
}