use std::pin::Pin;
use async_trait::async_trait;
use futures::Stream;
use crate::error::{Error, Result};
use crate::provider::{Provider, ProviderConfig};
use crate::types::{CompletionRequest, CompletionResponse, StreamChunk};
#[allow(dead_code)]
const DIFFUSION_ROUTER_API_URL: &str = "https://api.diffusionrouter.ai/v1";
#[allow(dead_code)]
pub struct DiffusionRouterProvider {
config: ProviderConfig,
}
impl DiffusionRouterProvider {
pub fn new(_config: ProviderConfig) -> Result<Self> {
Err(Error::config(
"DiffusionRouter API is coming in February 2026. Not available yet.",
))
}
pub fn from_env() -> Result<Self> {
Err(Error::config(
"DiffusionRouter API is coming in February 2026. Not available yet.",
))
}
pub fn with_api_key(_api_key: impl Into<String>) -> Result<Self> {
Err(Error::config(
"DiffusionRouter API is coming in February 2026. Not available yet.",
))
}
fn _api_url(&self) -> &str {
DIFFUSION_ROUTER_API_URL
}
}
#[async_trait]
impl Provider for DiffusionRouterProvider {
fn name(&self) -> &str {
"diffusion-router"
}
async fn complete(&self, _request: CompletionRequest) -> Result<CompletionResponse> {
Err(Error::config(
"DiffusionRouter API is coming in February 2026. Not available yet.",
))
}
async fn complete_stream(
&self,
_request: CompletionRequest,
) -> Result<Pin<Box<dyn Stream<Item = Result<StreamChunk>> + Send>>> {
Err(Error::config(
"DiffusionRouter API is coming in February 2026. Not available yet.",
))
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_coming_soon() {
let config = ProviderConfig::new("test-key");
let result = DiffusionRouterProvider::new(config);
assert!(result.is_err());
}
}