use crate::traits::{EvaluationResult, QualityScore};
use async_trait::async_trait;
use voirs_sdk::{AudioBuffer, LanguageCode};
use super::types::{
AgeGroup, AiNaturalnessMetrics, CulturalBackground, ExperienceLevel, Gender, HearingAbility,
HumanAiNaturalnessCorrelationConfig, HumanAiNaturalnessCorrelationEvaluator,
HumanAiNaturalnessCorrelationResult, HumanNaturalnessRating, RaterDemographics,
};
#[async_trait]
pub trait HumanAiNaturalnessCorrelationEvaluationTrait {
async fn evaluate_human_ai_naturalness_correlation(
&mut self,
audio_id: &str,
audio: &AudioBuffer,
human_ratings: &[HumanNaturalnessRating],
language: LanguageCode,
) -> EvaluationResult<HumanAiNaturalnessCorrelationResult>;
fn get_cached_human_ratings(&self, audio_id: &str) -> Option<&Vec<HumanNaturalnessRating>>;
fn get_cached_ai_metrics(&self, audio_id: &str) -> Option<&AiNaturalnessMetrics>;
fn clear_cache(&mut self);
}