@tehreet/conduit
Version:
LLM API gateway with intelligent routing, robust process management, and health monitoring
128 lines • 2.97 kB
TypeScript
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