import { PromptVersion, TestExecution, PromptPerformanceMetrics } from './prompt-versioning';
import { OpenRouterClient } from './openrouter-client';
import { SupportedModel } from './types';
/**
 * Analytics data point for tracking prompt performance over time
 */
export interface AnalyticsDataPoint {
    timestamp: Date;
    promptVersionId: string;
    model: SupportedModel;
    metric: string;
    value: number;
    metadata?: Record<string, any>;
}
/**
 * Aggregated analytics for a specific time period
 */
export interface AnalyticsAggregation {
    period: 'hour' | 'day' | 'week' | 'month';
    startTime: Date;
    endTime: Date;
    promptVersionId: string;
    metrics: {
        totalExecutions: number;
        successRate: number;
        averageResponseTime: number;
        averageTokenUsage: number;
        averageCost: number;
        qualityScore?: number;
        errorRate: number;
        throughput: number;
    };
    trends: {
        responseTimeTrend: 'improving' | 'degrading' | 'stable';
        successRateTrend: 'improving' | 'degrading' | 'stable';
        costTrend: 'improving' | 'degrading' | 'stable';
    };
}
/**
 * Comparison analysis between different prompt versions
 */
export interface PromptComparison {
    baselineVersion: PromptVersion;
    comparisonVersions: PromptVersion[];
    metrics: {
        [versionId: string]: {
            version: PromptVersion;
            performance: PromptPerformanceMetrics;
            improvement: {
                responseTime: number;
                successRate: number;
                cost: number;
                tokenUsage: number;
            };
            significance: number;
        };
    };
    recommendation: {
        bestVersion: PromptVersion;
        reason: string;
        confidence: number;
    };
}
/**
 * Performance insights and recommendations
 */
export interface PerformanceInsights {
    promptVersionId: string;
    insights: {
        type: 'performance' | 'cost' | 'reliability' | 'optimization';
        severity: 'low' | 'medium' | 'high';
        title: string;
        description: string;
        recommendation: string;
        impact: string;
        confidence: number;
    }[];
    trends: {
        metric: string;
        direction: 'up' | 'down' | 'stable';
        magnitude: number;
        timeframe: string;
    }[];
    alerts: {
        type: 'threshold' | 'anomaly' | 'degradation';
        severity: 'warning' | 'critical';
        message: string;
        triggeredAt: Date;
        metric: string;
        value: number;
        threshold?: number;
    }[];
}
/**
 * Analytics configuration for monitoring and alerting
 */
export interface AnalyticsConfig {
    enableRealTimeMonitoring: boolean;
    aggregationIntervals: ('hour' | 'day' | 'week' | 'month')[];
    alertThresholds: {
        successRate: {
            warning: number;
            critical: number;
        };
        responseTime: {
            warning: number;
            critical: number;
        };
        errorRate: {
            warning: number;
            critical: number;
        };
        cost: {
            warning: number;
            critical: number;
        };
    };
    retentionPeriod: number;
    enableTrendAnalysis: boolean;
    enableAnomalyDetection: boolean;
}
/**
 * Prompt Performance Analytics System
 */
export declare class PromptAnalytics {
    private dataPoints;
    private aggregations;
    private config;
    private client?;
    constructor(config?: Partial<AnalyticsConfig>, client?: OpenRouterClient);
    /**
     * Record a test execution for analytics
     */
    recordExecution(execution: TestExecution, model: SupportedModel): void;
    /**
     * Add a custom analytics data point
     */
    addDataPoint(dataPoint: AnalyticsDataPoint): void;
    /**
     * Generate aggregated analytics for a prompt version
     */
    generateAggregation(promptVersionId: string, period: 'hour' | 'day' | 'week' | 'month', startTime?: Date, endTime?: Date): AnalyticsAggregation;
    /**
     * Compare performance between multiple prompt versions
     */
    compareVersions(baselineVersionId: string, comparisonVersionIds: string[], timeframe?: {
        start: Date;
        end: Date;
    }): PromptComparison;
    /**
     * Generate performance insights and recommendations
     */
    generateInsights(promptVersionId: string): PerformanceInsights;
    /**
     * Get analytics data for a specific time range
     */
    getAnalyticsData(promptVersionId: string, startTime: Date, endTime: Date, metrics?: string[]): AnalyticsDataPoint[];
    /**
     * Export analytics data to JSON
     */
    exportAnalytics(): string;
    /**
     * Import analytics data from JSON
     */
    importAnalytics(jsonData: string): void;
    private groupExecutions;
    private getStartTimeForPeriod;
    private getPeriodHours;
    private createEmptyAggregation;
    private calculateTrends;
    private getTrend;
    private getRecentAggregations;
    private performRealTimeAnalysis;
}
//# sourceMappingURL=prompt-analytics.d.ts.map