UNPKG

@tehreet/conduit

Version:

LLM API gateway with intelligent routing, robust process management, and health monitoring

128 lines 2.97 kB
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<string, { requests: number; tokens: number; cost: number; }>; timeRange: { start: Date; end: Date; }; projectBreakdown?: Record<string, { requests: number; tokens: number; cost: number; }>; agentBreakdown?: Record<string, { requests: number; tokens: number; cost: number; }>; } 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<string, number>; byProject?: Record<string, number>; byAgent?: Record<string, number>; 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<void>; /** * Track usage data */ trackUsage(usage: UsageData): Promise<void>; /** * Get usage statistics */ getUsageStats(query?: UsageTrackerQuery): Promise<UsageStats>; /** * Get cost breakdown */ getCostBreakdown(query?: UsageTrackerQuery): Promise<CostBreakdown>; /** * Get recent usage data */ getRecentUsage(limit?: number): Promise<UsageData[]>; /** * Clear old usage data */ cleanupOldData(olderThanDays?: number): Promise<void>; /** * Export usage data */ exportData(query?: UsageTrackerQuery, format?: 'json' | 'csv'): Promise<string>; /** * Get usage tracking status */ getStatus(): any; /** * Update configuration */ updateConfig(config: Partial<UsageConfig>): Promise<void>; /** * 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<void>; } //# sourceMappingURL=UsageTracker.d.ts.map