import { UsageData, UsageTimePeriod, UsageStatsResult } from '../config/types.js'; import { PricingService } from './pricing.js'; /** * UsageService tracks token usage per model per day. * * Data is stored in ~/.mcp-rubber-duck/data/usage.json * Writes are debounced to avoid excessive disk I/O. */ export declare class UsageService { private usagePath; private data; private pricingService; private pendingWrites; private writeDebounceTimer; private debounceMs; constructor(pricingService: PricingService, options?: { dataDir?: string; debounceMs?: number; }); private ensureDirectoryExists; private loadUsage; private saveUsage; private scheduleSave; private getTodayKey; /** * Record usage for a provider/model. */ recordUsage(provider: string, model: string, promptTokens: number, completionTokens: number, error?: boolean): void; /** * Get usage statistics for a time period. */ getStats(period: UsageTimePeriod): UsageStatsResult; private formatDate; /** * Flush pending writes immediately. Call on shutdown. */ shutdown(): void; /** * Get raw usage data (for testing/debugging). * Returns a deep copy to prevent external mutation. */ getRawData(): UsageData; /** * Clear all usage data (for testing). */ clearData(): void; } //# sourceMappingURL=usage.d.ts.map