use async_trait::async_trait;
use super::super::entities::Message;
use super::super::entities::ChatCompletionResponse;
use super::super::metrics::Metrics;
use super::super::error::LlmClientError;
#[async_trait]
pub trait ChatCompletionClient: Send + Sync {
async fn send_chat_completion(
&self,
messages: Vec<Message>,
reasoning_effort: &str,
) -> Result<ChatCompletionResponse, LlmClientError>;
async fn get_metrics(&self) -> Metrics;
async fn stream_chat_completion(
&self,
messages: Vec<Message>,
reasoning_effort: &str,
) -> Result<(), LlmClientError>;
}