/**
 * Rating management system for element evaluation and feedback processing.
 * Handles both AI evaluation and user feedback to drive continuous improvement.
 */
import { IElement, UserFeedback, FeedbackContext } from './IElement.js';
import { ElementType } from '../../portfolio/types.js';
export interface IRatingManager {
    evaluateElement(element: IElement, metrics: PerformanceMetrics): Promise<number>;
    processFeedback(element: IElement, feedback: string, context?: FeedbackContext): Promise<void>;
    analyzeDelta(element: IElement): DeltaAnalysis;
    suggestImprovements(element: IElement): Improvement[];
    getAggregateRatings(elementType?: ElementType): AggregateRatings;
    getRatingHistory(elementId: string): RatingHistoryEntry[];
    evaluateMany(elements: IElement[], metrics: PerformanceMetrics): Promise<Map<string, number>>;
}
export interface PerformanceMetrics {
    taskCompletion: number;
    responseTime: number;
    errorRate: number;
    resourceUsage?: ResourceMetrics;
    customMetrics?: Record<string, number>;
}
export interface ResourceMetrics {
    tokenCount?: number;
    apiCalls?: number;
    computeTime?: number;
    memoryUsage?: number;
}
export interface DeltaAnalysis {
    delta: number;
    significance: 'high' | 'medium' | 'low' | 'none';
    possibleReasons: string[];
    recommendations: string[];
    confidence: number;
}
export interface Improvement {
    area: string;
    currentScore: number;
    targetScore: number;
    suggestion: string;
    priority: 'high' | 'medium' | 'low';
    estimatedImpact: number;
}
export interface AggregateRatings {
    elementType?: ElementType;
    count: number;
    averageAiRating: number;
    averageUserRating: number;
    averageDelta: number;
    topRated: ElementRatingSummary[];
    bottomRated: ElementRatingSummary[];
    mostImproved: ElementRatingSummary[];
    distribution: RatingDistribution;
}
export interface ElementRatingSummary {
    elementId: string;
    elementName: string;
    aiRating: number;
    userRating?: number;
    ratingCount: number;
    trend: 'improving' | 'declining' | 'stable';
}
export interface RatingDistribution {
    stars1: number;
    stars2: number;
    stars3: number;
    stars4: number;
    stars5: number;
}
export interface RatingHistoryEntry {
    timestamp: Date;
    aiRating: number;
    userRating?: number;
    metrics?: PerformanceMetrics;
    feedback?: UserFeedback;
    version: string;
}
export interface IFeedbackProcessor {
    process(feedback: string): Promise<ProcessedFeedback>;
    analyzeSentiment(text: string): Promise<'positive' | 'negative' | 'neutral'>;
    inferRating(text: string): Promise<number | null>;
    extractSuggestions(text: string): Promise<string[]>;
}
export interface ProcessedFeedback {
    originalFeedback: string;
    sentiment: 'positive' | 'negative' | 'neutral';
    inferredRating?: number;
    confidence: number;
    keywords: string[];
    suggestions: string[];
    entities: FeedbackEntity[];
}
export interface FeedbackEntity {
    type: 'feature' | 'issue' | 'praise' | 'criticism';
    text: string;
    relevance: number;
}
export interface IRatingCalculator<T extends IElement> {
    calculate(element: T, metrics: PerformanceMetrics): number;
    getWeights(): RatingWeights;
    adjustWeights(feedback: ProcessedFeedback[]): RatingWeights;
}
export interface RatingWeights {
    effectiveness: number;
    reliability: number;
    usability: number;
    [key: string]: number;
}
//# sourceMappingURL=IRatingManager.d.ts.map