/**
 * Performance Monitoring System
 *
 * Tracks metrics, performance, and provides insights
 * for Ultimate MCP server operations
 */
import { EventEmitter } from 'events';
interface PerformanceMetric {
    timestamp: number;
    duration: number;
    success: boolean;
    error?: string;
}
interface ToolMetrics {
    invocations: number;
    totalDuration: number;
    averageDuration: number;
    minDuration: number;
    maxDuration: number;
    successRate: number;
    lastUsed: number;
    errors: number;
    calls: number;
}
interface ModelMetrics {
    requests: number;
    tokens: {
        input: number;
        output: number;
        total: number;
    };
    cost: number;
    averageLatency: number;
    errors: number;
}
export declare class PerformanceMonitor extends EventEmitter {
    private toolMetrics;
    private modelMetrics;
    private systemMetrics;
    private metricsInterval?;
    constructor();
    /**
     * Start tracking tool execution
     */
    private activeToolExecutions;
    startToolExecution(toolName: string): void;
    /**
     * End tracking tool execution
     */
    endToolExecution(toolName: string, success: boolean, error?: string): void;
    /**
     * Record model usage
     */
    recordModelUsage(model: string, tokens: number, latency: number, success: boolean, inputTokens?: number, outputTokens?: number, cost?: number): void;
    /**
     * Estimate cost based on model and tokens
     */
    private estimateCost;
    /**
     * Track tool execution
     */
    trackToolExecution(toolName: string, duration: number, success: boolean, error?: string): void;
    /**
     * Track model usage
     */
    trackModelUsage(model: string, inputTokens: number, outputTokens: number, cost: number, latency: number, success: boolean): void;
    /**
     * Track request lifecycle
     */
    startRequest(): string;
    endRequest(requestId: string): void;
    /**
     * Get tool metrics
     */
    getToolMetrics(toolName?: string): Record<string, ToolMetrics> | ToolMetrics | null;
    /**
     * Calculate metrics for a tool
     */
    private calculateToolMetrics;
    /**
     * Get model metrics
     */
    getModelMetrics(model?: string): Record<string, ModelMetrics> | ModelMetrics | null;
    /**
     * Get performance summary
     */
    getPerformanceSummary(): {
        uptime: number;
        totalRequests: number;
        activeRequests: number;
        peakActiveRequests: number;
        tools: Record<string, ToolMetrics>;
        models: Record<string, ModelMetrics>;
        memoryUsage: {
            timestamp: number;
            used: number;
            total: number;
        };
    };
    /**
     * Get system metrics
     */
    getSystemMetrics(): {
        uptime: number;
        uptimeHuman: string;
        totalRequests: number;
        activeRequests: number;
        peakActiveRequests: number;
        requestsPerMinute: string;
        memory: {
            current: {
                heapUsed: number;
                heapTotal: number;
                external: number;
                rss: number;
            };
            history: {
                timestamp: number;
                used: number;
                total: number;
            }[];
        };
        cpu: {
            history: {
                timestamp: number;
                usage: number;
            }[];
        };
    };
    /**
     * Get cost breakdown
     */
    getCostBreakdown(): {
        total: number;
        breakdown: Record<string, {
            cost: number;
            percentage: number;
        }>;
        byProvider: Record<string, number>;
    };
    /**
     * Group costs by provider
     */
    private groupCostByProvider;
    /**
     * Get performance insights
     */
    getInsights(): string[];
    /**
     * Export metrics for analysis
     */
    exportMetrics(): {
        timestamp: number;
        tools: {
            [k: string]: PerformanceMetric[];
        };
        models: {
            [k: string]: ModelMetrics;
        };
        system: {
            uptime: number;
            uptimeHuman: string;
            totalRequests: number;
            activeRequests: number;
            peakActiveRequests: number;
            requestsPerMinute: string;
            memory: {
                current: {
                    heapUsed: number;
                    heapTotal: number;
                    external: number;
                    rss: number;
                };
                history: {
                    timestamp: number;
                    used: number;
                    total: number;
                }[];
            };
            cpu: {
                history: {
                    timestamp: number;
                    usage: number;
                }[];
            };
        };
    };
    /**
     * Start collecting system metrics
     */
    private startSystemMetricsCollection;
    /**
     * Format uptime
     */
    private formatUptime;
    /**
     * Cleanup
     */
    destroy(): void;
}
export {};
//# sourceMappingURL=performance-monitor.d.ts.map