/** * Usage Analytics - Higher-level analytics layer on top of SpendingTracker * * Provides daily breakdowns, per-model and per-command aggregations, * markdown and JSON report generation. */ import { type SpendingRecord, type SpendingTotals, type SpendingTracker } from './spending-tracker.js'; export interface ActivityUsage { activity: string; avgCostPerRequest: number; avgIterations: null | number; cacheSavingsUsd: number; oneShotRate: null | number; requestCount: number; totalCostUsd: number; totalTokens: number; } export interface AgentUsage { agent: string; avgCostPerRequest: number; cacheSavingsUsd: number; requestCount: number; totalCostUsd: number; totalTokens: number; } export interface CommandUsage { avgCostPerRequest: number; cacheSavingsUsd: number; command: string; models: string[]; requestCount: number; totalCostUsd: number; totalTokens: number; } export interface DailyUsage { cacheReadTokens: number; cacheSavingsUsd: number; cacheWriteTokens: number; date: string; inputTokens: number; outputTokens: number; requestCount: number; totalCostUsd: number; totalTokens: number; } export interface ModelUsage { avgCostPerRequest: number; cacheReadTokens: number; cacheSavingsUsd: number; cacheWriteTokens: number; inputTokens: number; model: string; outputTokens: number; requestCount: number; totalCostUsd: number; totalTokens: number; } export interface ProjectUsage { avgCostPerRequest: number; cacheSavingsUsd: number; projectPath: string; requestCount: number; totalCostUsd: number; totalTokens: number; } export interface SessionUsage { avgCostPerRequest: number; cacheSavingsUsd: number; from: string; requestCount: number; sessionId: string; to: string; totalCostUsd: number; totalTokens: number; } export interface UsageAnalyticsOptions { activity?: string; agent?: string; command?: string; model?: string; project?: string; session?: string; sinceDate?: string; sinceDays?: number; } export interface UsagePeriod { from: string; to: string; } export interface UsageSummary { avgDailyCost: number; avgDailyTokens: number; byActivity: ActivityUsage[]; byAgent: AgentUsage[]; byCommand: CommandUsage[]; byModel: ModelUsage[]; byProject: ProjectUsage[]; bySession: SessionUsage[]; cacheHitRatio: number; costliestRequests: SpendingRecord[]; daily: DailyUsage[]; peakDay: DailyUsage | null; period: UsagePeriod; sessionsCount: number; totals: SpendingTotals; } export declare class UsageAnalytics { private readonly tracker; constructor(tracker: SpendingTracker); private fetchRecords; private resolveOptions; private byActivityFromRecords; private byAgentFromRecords; private byCommandFromRecords; private byModelFromRecords; private byProjectFromRecords; private bySessionFromRecords; private dailyBreakdownFromRecords; analyze(options?: UsageAnalyticsOptions): UsageSummary; generateCsvReport(opts?: UsageAnalyticsOptions & { section?: 'byActivity' | 'byAgent' | 'byCommand' | 'byModel' | 'byProject' | 'bySession' | 'daily'; }): string; generateJsonReport(options?: UsageAnalyticsOptions): string; generateMarkdownReport(options?: UsageAnalyticsOptions): string; getByCommand(options?: UsageAnalyticsOptions): CommandUsage[]; getByModel(options?: UsageAnalyticsOptions): ModelUsage[]; getDailyBreakdown(options?: UsageAnalyticsOptions): DailyUsage[]; } export type CsvSection = 'byActivity' | 'byAgent' | 'byCommand' | 'byModel' | 'byProject' | 'bySession' | 'daily'; export declare function toCsv(summary: UsageSummary, section: CsvSection): string; export declare function getUsageAnalytics(): UsageAnalytics; //# sourceMappingURL=usage-analytics.d.ts.map