use async_trait::async_trait;
use mini_chat_sdk::KillSwitches;
use uuid::Uuid;
use crate::domain::error::DomainError;
use crate::domain::models::ResolvedModel;
#[async_trait]
pub trait ModelResolver: Send + Sync {
async fn resolve_model(
&self,
user_id: Uuid,
model: Option<String>,
) -> Result<ResolvedModel, DomainError>;
async fn list_visible_models(&self, user_id: Uuid) -> Result<Vec<ResolvedModel>, DomainError>;
async fn get_visible_model(
&self,
user_id: Uuid,
model_id: &str,
) -> Result<ResolvedModel, DomainError>;
async fn get_kill_switches(&self, user_id: Uuid) -> Result<KillSwitches, DomainError>;
}