import { EventEmitter } from 'events';
export interface MetricData {
    name: string;
    value: number;
    timestamp: number;
    labels: Record<string, string>;
    unit: string;
}
export interface SystemMetrics {
    requests: {
        total: number;
        successful: number;
        failed: number;
        rate: number;
    };
    performance: {
        averageResponseTime: number;
        p95ResponseTime: number;
        p99ResponseTime: number;
    };
    ai: {
        totalCost: number;
        totalTokens: number;
        modelUsage: Record<string, number>;
        providerUsage: Record<string, number>;
    };
    users: {
        activeUsers: number;
        totalUsers: number;
        rateLimitViolations: number;
    };
    system: {
        uptime: number;
        memoryUsage: number;
        cpuUsage: number;
    };
}
export interface PerformanceSnapshot {
    timestamp: number;
    responseTime: number;
    statusCode: number;
    endpoint: string;
    userId: string | undefined;
    modelId?: string;
    cost?: number;
    tokens?: number;
}
export declare class MetricsService extends EventEmitter {
    private static instance;
    private metrics;
    private performanceData;
    private counters;
    private gauges;
    private histograms;
    private startTime;
    private readonly maxMetricsAge;
    private readonly maxDataPoints;
    private constructor();
    static getInstance(): MetricsService;
    private initializeMetrics;
    recordCounter(name: string, value?: number, labels?: Record<string, string>): void;
    recordGauge(name: string, value: number, labels?: Record<string, string>): void;
    recordHistogram(name: string, value: number, labels?: Record<string, string>): void;
    private recordMetric;
    recordRequest(success: boolean, responseTime: number, endpoint: string, userId?: string): void;
    recordAIUsage(modelId: string, provider: string, cost: number, tokens: number, userId?: string): void;
    recordUserActivity(userId: string, action: string): void;
    recordRateLimitViolation(userId: string, tier: string, reason: string): void;
    updateSystemMetrics(): void;
    getSystemMetrics(): SystemMetrics;
    private getModelUsage;
    private getProviderUsage;
    private getUniqueUsersCount;
    checkAlerts(): void;
    exportMetrics(format?: 'json' | 'prometheus'): string;
    private exportPrometheusFormat;
    private startCleanupTimer;
    private cleanup;
    reset(): void;
}
export declare const metricsService: MetricsService;
//# sourceMappingURL=MetricsService.d.ts.map