use crate::llm::types::{ChatCompletionParams, ProviderResponse};
use anyhow::Result;
#[async_trait::async_trait]
pub trait AiProvider: Send + Sync {
fn name(&self) -> &str;
fn supports_model(&self, model: &str) -> bool;
async fn chat_completion(&self, params: ChatCompletionParams) -> Result<ProviderResponse>;
fn get_api_key(&self) -> Result<String>;
fn supports_caching(&self, _model: &str) -> bool {
false
}
fn get_max_input_tokens(&self, model: &str) -> usize;
fn supports_vision(&self, _model: &str) -> bool {
false
}
fn supports_structured_output(&self, _model: &str) -> bool {
false
}
}