use super::stream::CompletionStream;
use super::types::{CompletionOptions, CompletionResponse};
use crate::core::types::chat::ChatMessage;
use crate::utils::error::gateway_error::Result;
use async_trait::async_trait;
pub type Message = ChatMessage;
#[async_trait]
pub trait Router: Send + Sync + 'static {
async fn complete(
&self,
model: &str,
messages: Vec<Message>,
options: CompletionOptions,
) -> Result<CompletionResponse>;
async fn complete_stream(
&self,
model: &str,
messages: Vec<Message>,
options: CompletionOptions,
) -> Result<CompletionStream>;
}