/** * Claude Code Transcript Parser * * Parses local Claude Code transcript files from ~/.claude/projects/ * to extract token usage data for cost tracking. * * Transcript files are JSONL format where each line is a separate entry. * Token usage is embedded in assistant message entries. */ /** * Token usage from a single assistant message */ export interface TokenUsage { inputTokens: number; outputTokens: number; cacheCreationTokens: number; cacheReadTokens: number; } /** * Aggregated usage for a single session */ export interface SessionUsage { sessionId: string; projectHash: string; projectName?: string; model: string; tokens: TokenUsage; messageCount: number; startTime: string; endTime: string; activeMinutesEstimate: number; filePath: string; } export interface SessionUsageDetailed extends SessionUsage { dailyUsage: Record; rangeUsage?: TokenUsage; rangeActiveMinutesEstimate?: number; } /** * Metadata about a discovered transcript file */ export interface TranscriptFile { path: string; sessionId: string; projectHash: string; lastModified: Date; size: number; } /** * Get the Claude Code projects directory path */ export declare function getClaudeProjectsDir(): string; /** * Check if Claude Code directory exists */ export declare function claudeCodeDirectoryExists(): boolean; /** * Discover all transcript files within the age limit * * @param maxAgeHours - Only include files modified within this many hours * @returns Array of transcript file metadata */ export declare function discoverTranscripts(maxAgeHours?: number): TranscriptFile[]; /** * Parse a single transcript file and extract usage data * * @param filePath - Path to the JSONL transcript file * @returns Session usage data or null if parsing fails */ export declare function parseTranscript(filePath: string): SessionUsage | null; export declare function parseTranscriptDetailed(filePath: string, options?: { rangeStart?: Date; rangeEnd?: Date; }): SessionUsageDetailed | null; /** * Parse all transcripts within the age limit * * @param maxAgeHours - Only include files modified within this many hours * @returns Array of session usage data */ export declare function parseAllTranscripts(maxAgeHours?: number): SessionUsage[]; export declare function parseAllTranscriptsDetailed(maxAgeHours?: number, options?: { rangeStart?: Date; rangeEnd?: Date; }): SessionUsageDetailed[]; /** * Get a specific transcript by session ID * * @param sessionId - The session UUID to find * @param maxAgeHours - Only search within this age limit * @returns Session usage or null if not found */ export declare function getTranscriptBySessionId(sessionId: string, maxAgeHours?: number): SessionUsage | null; /** * Aggregate token usage across multiple sessions */ export declare function aggregateUsage(sessions: SessionUsage[]): { totalSessions: number; tokens: TokenUsage; totalTokens: number; models: Record; }; //# sourceMappingURL=transcript-parser.d.ts.map