/** * Cost Tracker * Tracks and optimizes LLM usage costs across providers */ import type { LLMRequest, LLMResponse, CostConfig, ModelCapabilities } from '../types.js'; import type { Logger } from './logger.js'; import type { CreditLedger } from './credit-ledger.js'; export interface ProviderCostEntry { totalCost: number; requestCount: number; inputTokens: number; outputTokens: number; lastRecordedAt: number; } export interface ProviderCostBreakdownEntry extends ProviderCostEntry { cost: number; requests: number; tokens: { input: number; output: number; }; averageCostPerRequest: number; } export declare class CostTracker { private providers; private config; private ledger?; private logger; constructor(config?: Partial, ledger?: CreditLedger, logger?: Logger); /** * Calculate cost for a request */ calculateRequestCost(request: LLMRequest, capabilities: ModelCapabilities): number; /** * Track actual cost from response */ trackCost(provider: string, response: LLMResponse): void; /** * Record cost directly without requiring a full LLMResponse. * This is the simplified API — callers pass provider + cost + tokens. */ record(provider: string, cost: number, inputTokens?: number, outputTokens?: number, model?: string): void; /** * Get the attached CreditLedger (if any) */ getLedger(): CreditLedger | undefined; /** * Get total cost across all providers */ getTotalCost(): number; /** * Get cost for specific provider */ getProviderCost(provider: string): number; /** * Get cost breakdown by provider */ getCostBreakdown(): Record; /** * Get a provider snapshot aligned with Workers usage reporting. */ breakdown(): Record; /** * Get total cost across all providers. */ total(): number; /** * Get most cost-effective provider for a request */ getMostCostEffectiveProvider(providers: Record, request: LLMRequest): string; /** * Check if we're approaching cost limits */ shouldRouteBasedOnCost(provider: string): boolean; /** * Reset cost tracking (e.g., monthly reset) */ reset(): void; /** * Reset tracking for specific provider */ resetProvider(provider: string): void; /** * Drain and reset provider tracking for periodic reporting. */ drain(): Record; /** * Export cost data for analytics */ exportData(): { totalCost: number; breakdown: Record; period: { start: number; end: number; }; }; /** * Estimate input tokens from request */ private estimateInputTokens; /** * Check for cost alerts */ private checkCostAlerts; /** * Update cost configuration */ updateConfig(config: Partial): void; /** * Get current configuration */ getConfig(): CostConfig; private createProviderEntry; } /** * Default cost tracker instance */ export declare const defaultCostTracker: CostTracker; /** * Cost optimization utilities */ export declare class CostOptimizer { /** * Choose optimal provider based on cost and performance */ static chooseOptimalProvider(providers: Record, request: LLMRequest, costTracker: CostTracker, performanceWeights?: { cost: number; latency: number; quality: number; }): string; /** * Suggest cost reduction strategies */ static suggestOptimizations(costBreakdown: Record): string[]; } //# sourceMappingURL=cost-tracker.d.ts.map