use super::{Commentary, CommentaryInput, CommentaryOutput, CommentaryStyle};
use crate::Result;
#[async_trait::async_trait]
pub trait CommentaryGenerator {
async fn generate_commentary(&self, input: CommentaryInput) -> Result<CommentaryOutput>;
async fn evaluate_commentary(&self, commentary: &Commentary) -> Result<f64>;
async fn improve_commentary(
&self,
commentary: &Commentary,
feedback: &str,
) -> Result<Commentary>;
async fn generate_multiple(
&self,
input: CommentaryInput,
styles: Vec<CommentaryStyle>,
) -> Result<Vec<CommentaryOutput>>;
}