import { EventEmitter } from 'events'; import { UsageData } from '../types'; export interface UsageConfig { enabled?: boolean; storage?: { type: 'memory' | 'file' | 'database'; path?: string; retention?: number; }; metrics?: { enabled: boolean; provider?: 'prometheus' | 'statsd' | 'custom'; endpoint?: string; }; } export interface UsageStats { totalRequests: number; totalTokens: number; totalCost: number; averageTokensPerRequest: number; modelBreakdown: Record; timeRange: { start: Date; end: Date; }; projectBreakdown?: Record; agentBreakdown?: Record; } export interface UsageTrackerQuery { projectId?: string; agentId?: string; model?: string; timeRange?: { start: Date; end: Date; }; limit?: number; offset?: number; } export interface CostBreakdown { total: number; byModel: Record; byProject?: Record; byAgent?: Record; byTimeRange: Array<{ date: string; cost: number; }>; } /** * Usage tracking system for Conduit */ export declare class UsageTracker extends EventEmitter { private config; private storage; private metrics; private isInitialized; constructor(config?: UsageConfig); /** * Initialize usage tracking */ initialize(): Promise; /** * Track usage data */ trackUsage(usage: UsageData): Promise; /** * Get usage statistics */ getUsageStats(query?: UsageTrackerQuery): Promise; /** * Get cost breakdown */ getCostBreakdown(query?: UsageTrackerQuery): Promise; /** * Get recent usage data */ getRecentUsage(limit?: number): Promise; /** * Clear old usage data */ cleanupOldData(olderThanDays?: number): Promise; /** * Export usage data */ exportData(query?: UsageTrackerQuery, format?: 'json' | 'csv'): Promise; /** * Get usage tracking status */ getStatus(): any; /** * Update configuration */ updateConfig(config: Partial): Promise; /** * Validate usage data */ private validateUsageData; /** * Calculate statistics from usage data */ private calculateStats; /** * Calculate cost breakdown */ private calculateCostBreakdown; /** * Format data as CSV */ private formatAsCSV; /** * Cleanup resources */ cleanup(): Promise; } //# sourceMappingURL=UsageTracker.d.ts.map