use async_trait::async_trait;
use crate::imagegen::error::Result;
use crate::imagegen::types::{ImageGenRequest, ImageGenResponse};
#[async_trait]
pub trait ImageGenProvider: Send + Sync {
fn name(&self) -> &str;
fn default_model(&self) -> &str;
async fn generate(&self, request: &ImageGenRequest) -> Result<ImageGenResponse>;
fn available_models(&self) -> Vec<&str> {
vec![self.default_model()]
}
}