ccusage 16.2.5 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,785 +0,0 @@
1
- import { Bucket, CostMode, PricingFetcher, SortOrder } from "./pricing-fetcher-DK8lcI1w.js";
2
- import { z } from "zod";
3
-
4
- //#region src/_consts.d.ts
5
-
6
- /**
7
- * Days of the week for weekly aggregation
8
- */
9
- declare const WEEK_DAYS: readonly ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"];
10
- /**
11
- * Week day names type
12
- */
13
- type WeekDay = typeof WEEK_DAYS[number];
14
- /**
15
- * Day of week as number (0 = Sunday, 1 = Monday, ..., 6 = Saturday)
16
- */
17
- //#endregion
18
- //#region src/_session-blocks.d.ts
19
- /**
20
- * Represents a single usage data entry loaded from JSONL files
21
- */
22
- type LoadedUsageEntry = {
23
- timestamp: Date;
24
- usage: {
25
- inputTokens: number;
26
- outputTokens: number;
27
- cacheCreationInputTokens: number;
28
- cacheReadInputTokens: number;
29
- };
30
- costUSD: number | null;
31
- model: string;
32
- version?: string;
33
- usageLimitResetTime?: Date; // Claude API usage limit reset time
34
- };
35
- /**
36
- * Aggregated token counts for different token types
37
- */
38
- type TokenCounts = {
39
- inputTokens: number;
40
- outputTokens: number;
41
- cacheCreationInputTokens: number;
42
- cacheReadInputTokens: number;
43
- };
44
- /**
45
- * Represents a session block (typically 5-hour billing period) with usage data
46
- */
47
- type SessionBlock = {
48
- id: string; // ISO string of block start time
49
- startTime: Date;
50
- endTime: Date; // startTime + 5 hours (for normal blocks) or gap end time (for gap blocks)
51
- actualEndTime?: Date; // Last activity in block
52
- isActive: boolean;
53
- isGap?: boolean; // True if this is a gap block
54
- entries: LoadedUsageEntry[];
55
- tokenCounts: TokenCounts;
56
- costUSD: number;
57
- models: string[];
58
- usageLimitResetTime?: Date; // Claude API usage limit reset time
59
- };
60
- /**
61
- * Represents usage burn rate calculations
62
- */
63
- //#endregion
64
- //#region src/data-loader.d.ts
65
- /**
66
- * Get Claude data directories to search for usage data
67
- * When CLAUDE_CONFIG_DIR is set: uses only those paths
68
- * When not set: uses default paths (~/.config/claude and ~/.claude)
69
- * @returns Array of valid Claude data directory paths
70
- */
71
- declare function getClaudePaths(): string[];
72
- /**
73
- * Extract project name from Claude JSONL file path
74
- * @param jsonlPath - Absolute path to JSONL file
75
- * @returns Project name extracted from path, or "unknown" if malformed
76
- */
77
- declare function extractProjectFromPath(jsonlPath: string): string;
78
- /**
79
- * Zod schema for validating Claude usage data from JSONL files
80
- */
81
- declare const usageDataSchema: z.ZodObject<{
82
- cwd: z.ZodOptional<z.ZodString>;
83
- sessionId: z.ZodOptional<z.ZodBranded<z.ZodString, "SessionId">>;
84
- timestamp: z.ZodBranded<z.ZodString, "ISOTimestamp">;
85
- version: z.ZodOptional<z.ZodBranded<z.ZodString, "Version">>;
86
- message: z.ZodObject<{
87
- usage: z.ZodObject<{
88
- input_tokens: z.ZodNumber;
89
- output_tokens: z.ZodNumber;
90
- cache_creation_input_tokens: z.ZodOptional<z.ZodNumber>;
91
- cache_read_input_tokens: z.ZodOptional<z.ZodNumber>;
92
- }, "strip", z.ZodTypeAny, {
93
- input_tokens: number;
94
- output_tokens: number;
95
- cache_creation_input_tokens?: number | undefined;
96
- cache_read_input_tokens?: number | undefined;
97
- }, {
98
- input_tokens: number;
99
- output_tokens: number;
100
- cache_creation_input_tokens?: number | undefined;
101
- cache_read_input_tokens?: number | undefined;
102
- }>;
103
- model: z.ZodOptional<z.ZodBranded<z.ZodString, "ModelName">>;
104
- id: z.ZodOptional<z.ZodBranded<z.ZodString, "MessageId">>;
105
- content: z.ZodOptional<z.ZodArray<z.ZodObject<{
106
- text: z.ZodOptional<z.ZodString>;
107
- }, "strip", z.ZodTypeAny, {
108
- text?: string | undefined;
109
- }, {
110
- text?: string | undefined;
111
- }>, "many">>;
112
- }, "strip", z.ZodTypeAny, {
113
- usage: {
114
- input_tokens: number;
115
- output_tokens: number;
116
- cache_creation_input_tokens?: number | undefined;
117
- cache_read_input_tokens?: number | undefined;
118
- };
119
- model?: (string & z.BRAND<"ModelName">) | undefined;
120
- id?: (string & z.BRAND<"MessageId">) | undefined;
121
- content?: {
122
- text?: string | undefined;
123
- }[] | undefined;
124
- }, {
125
- usage: {
126
- input_tokens: number;
127
- output_tokens: number;
128
- cache_creation_input_tokens?: number | undefined;
129
- cache_read_input_tokens?: number | undefined;
130
- };
131
- model?: string | undefined;
132
- id?: string | undefined;
133
- content?: {
134
- text?: string | undefined;
135
- }[] | undefined;
136
- }>;
137
- costUSD: z.ZodOptional<z.ZodNumber>;
138
- requestId: z.ZodOptional<z.ZodBranded<z.ZodString, "RequestId">>;
139
- isApiErrorMessage: z.ZodOptional<z.ZodBoolean>;
140
- }, "strip", z.ZodTypeAny, {
141
- cwd?: string | undefined;
142
- sessionId?: (string & z.BRAND<"SessionId">) | undefined;
143
- timestamp: string & z.BRAND<"ISOTimestamp">;
144
- version?: (string & z.BRAND<"Version">) | undefined;
145
- message: {
146
- usage: {
147
- input_tokens: number;
148
- output_tokens: number;
149
- cache_creation_input_tokens?: number | undefined;
150
- cache_read_input_tokens?: number | undefined;
151
- };
152
- model?: (string & z.BRAND<"ModelName">) | undefined;
153
- id?: (string & z.BRAND<"MessageId">) | undefined;
154
- content?: {
155
- text?: string | undefined;
156
- }[] | undefined;
157
- };
158
- costUSD?: number | undefined;
159
- requestId?: (string & z.BRAND<"RequestId">) | undefined;
160
- isApiErrorMessage?: boolean | undefined;
161
- }, {
162
- cwd?: string | undefined;
163
- sessionId?: string | undefined;
164
- timestamp: string;
165
- version?: string | undefined;
166
- message: {
167
- usage: {
168
- input_tokens: number;
169
- output_tokens: number;
170
- cache_creation_input_tokens?: number | undefined;
171
- cache_read_input_tokens?: number | undefined;
172
- };
173
- model?: string | undefined;
174
- id?: string | undefined;
175
- content?: {
176
- text?: string | undefined;
177
- }[] | undefined;
178
- };
179
- costUSD?: number | undefined;
180
- requestId?: string | undefined;
181
- isApiErrorMessage?: boolean | undefined;
182
- }>;
183
- /**
184
- * Zod schema for transcript usage data from Claude messages
185
- */
186
- declare const transcriptUsageSchema: z.ZodObject<{
187
- input_tokens: z.ZodOptional<z.ZodNumber>;
188
- cache_creation_input_tokens: z.ZodOptional<z.ZodNumber>;
189
- cache_read_input_tokens: z.ZodOptional<z.ZodNumber>;
190
- output_tokens: z.ZodOptional<z.ZodNumber>;
191
- }, "strip", z.ZodTypeAny, {
192
- input_tokens?: number | undefined;
193
- cache_creation_input_tokens?: number | undefined;
194
- cache_read_input_tokens?: number | undefined;
195
- output_tokens?: number | undefined;
196
- }, {
197
- input_tokens?: number | undefined;
198
- cache_creation_input_tokens?: number | undefined;
199
- cache_read_input_tokens?: number | undefined;
200
- output_tokens?: number | undefined;
201
- }>;
202
- /**
203
- * Zod schema for transcript message data
204
- */
205
- declare const transcriptMessageSchema: z.ZodObject<{
206
- type: z.ZodOptional<z.ZodString>;
207
- message: z.ZodOptional<z.ZodObject<{
208
- usage: z.ZodOptional<z.ZodObject<{
209
- input_tokens: z.ZodOptional<z.ZodNumber>;
210
- cache_creation_input_tokens: z.ZodOptional<z.ZodNumber>;
211
- cache_read_input_tokens: z.ZodOptional<z.ZodNumber>;
212
- output_tokens: z.ZodOptional<z.ZodNumber>;
213
- }, "strip", z.ZodTypeAny, {
214
- input_tokens?: number | undefined;
215
- cache_creation_input_tokens?: number | undefined;
216
- cache_read_input_tokens?: number | undefined;
217
- output_tokens?: number | undefined;
218
- }, {
219
- input_tokens?: number | undefined;
220
- cache_creation_input_tokens?: number | undefined;
221
- cache_read_input_tokens?: number | undefined;
222
- output_tokens?: number | undefined;
223
- }>>;
224
- }, "strip", z.ZodTypeAny, {
225
- usage?: {
226
- input_tokens?: number | undefined;
227
- cache_creation_input_tokens?: number | undefined;
228
- cache_read_input_tokens?: number | undefined;
229
- output_tokens?: number | undefined;
230
- } | undefined;
231
- }, {
232
- usage?: {
233
- input_tokens?: number | undefined;
234
- cache_creation_input_tokens?: number | undefined;
235
- cache_read_input_tokens?: number | undefined;
236
- output_tokens?: number | undefined;
237
- } | undefined;
238
- }>>;
239
- }, "strip", z.ZodTypeAny, {
240
- type?: string | undefined;
241
- message?: {
242
- usage?: {
243
- input_tokens?: number | undefined;
244
- cache_creation_input_tokens?: number | undefined;
245
- cache_read_input_tokens?: number | undefined;
246
- output_tokens?: number | undefined;
247
- } | undefined;
248
- } | undefined;
249
- }, {
250
- type?: string | undefined;
251
- message?: {
252
- usage?: {
253
- input_tokens?: number | undefined;
254
- cache_creation_input_tokens?: number | undefined;
255
- cache_read_input_tokens?: number | undefined;
256
- output_tokens?: number | undefined;
257
- } | undefined;
258
- } | undefined;
259
- }>;
260
- /**
261
- * Type definition for Claude usage data entries from JSONL files
262
- */
263
- type UsageData = z.infer<typeof usageDataSchema>;
264
- /**
265
- * Zod schema for model-specific usage breakdown data
266
- */
267
- declare const modelBreakdownSchema: z.ZodObject<{
268
- modelName: z.ZodBranded<z.ZodString, "ModelName">;
269
- inputTokens: z.ZodNumber;
270
- outputTokens: z.ZodNumber;
271
- cacheCreationTokens: z.ZodNumber;
272
- cacheReadTokens: z.ZodNumber;
273
- cost: z.ZodNumber;
274
- }, "strip", z.ZodTypeAny, {
275
- modelName: string & z.BRAND<"ModelName">;
276
- inputTokens: number;
277
- outputTokens: number;
278
- cacheCreationTokens: number;
279
- cacheReadTokens: number;
280
- cost: number;
281
- }, {
282
- modelName: string;
283
- inputTokens: number;
284
- outputTokens: number;
285
- cacheCreationTokens: number;
286
- cacheReadTokens: number;
287
- cost: number;
288
- }>;
289
- /**
290
- * Type definition for model-specific usage breakdown
291
- */
292
- type ModelBreakdown = z.infer<typeof modelBreakdownSchema>;
293
- /**
294
- * Zod schema for daily usage aggregation data
295
- */
296
- declare const dailyUsageSchema: z.ZodObject<{
297
- date: z.ZodBranded<z.ZodString, "DailyDate">;
298
- inputTokens: z.ZodNumber;
299
- outputTokens: z.ZodNumber;
300
- cacheCreationTokens: z.ZodNumber;
301
- cacheReadTokens: z.ZodNumber;
302
- totalCost: z.ZodNumber;
303
- modelsUsed: z.ZodArray<z.ZodBranded<z.ZodString, "ModelName">, "many">;
304
- modelBreakdowns: z.ZodArray<z.ZodObject<{
305
- modelName: z.ZodBranded<z.ZodString, "ModelName">;
306
- inputTokens: z.ZodNumber;
307
- outputTokens: z.ZodNumber;
308
- cacheCreationTokens: z.ZodNumber;
309
- cacheReadTokens: z.ZodNumber;
310
- cost: z.ZodNumber;
311
- }, "strip", z.ZodTypeAny, {
312
- modelName: string & z.BRAND<"ModelName">;
313
- inputTokens: number;
314
- outputTokens: number;
315
- cacheCreationTokens: number;
316
- cacheReadTokens: number;
317
- cost: number;
318
- }, {
319
- modelName: string;
320
- inputTokens: number;
321
- outputTokens: number;
322
- cacheCreationTokens: number;
323
- cacheReadTokens: number;
324
- cost: number;
325
- }>, "many">;
326
- project: z.ZodOptional<z.ZodString>;
327
- }, "strip", z.ZodTypeAny, {
328
- date: string & z.BRAND<"DailyDate">;
329
- inputTokens: number;
330
- outputTokens: number;
331
- cacheCreationTokens: number;
332
- cacheReadTokens: number;
333
- totalCost: number;
334
- modelsUsed: (string & z.BRAND<"ModelName">)[];
335
- modelBreakdowns: {
336
- modelName: string & z.BRAND<"ModelName">;
337
- inputTokens: number;
338
- outputTokens: number;
339
- cacheCreationTokens: number;
340
- cacheReadTokens: number;
341
- cost: number;
342
- }[];
343
- project?: string | undefined;
344
- }, {
345
- date: string;
346
- inputTokens: number;
347
- outputTokens: number;
348
- cacheCreationTokens: number;
349
- cacheReadTokens: number;
350
- totalCost: number;
351
- modelsUsed: string[];
352
- modelBreakdowns: {
353
- modelName: string;
354
- inputTokens: number;
355
- outputTokens: number;
356
- cacheCreationTokens: number;
357
- cacheReadTokens: number;
358
- cost: number;
359
- }[];
360
- project?: string | undefined;
361
- }>;
362
- /**
363
- * Type definition for daily usage aggregation
364
- */
365
- type DailyUsage = z.infer<typeof dailyUsageSchema>;
366
- /**
367
- * Zod schema for session-based usage aggregation data
368
- */
369
- declare const sessionUsageSchema: z.ZodObject<{
370
- sessionId: z.ZodBranded<z.ZodString, "SessionId">;
371
- projectPath: z.ZodBranded<z.ZodString, "ProjectPath">;
372
- inputTokens: z.ZodNumber;
373
- outputTokens: z.ZodNumber;
374
- cacheCreationTokens: z.ZodNumber;
375
- cacheReadTokens: z.ZodNumber;
376
- totalCost: z.ZodNumber;
377
- lastActivity: z.ZodBranded<z.ZodString, "ActivityDate">;
378
- versions: z.ZodArray<z.ZodBranded<z.ZodString, "Version">, "many">;
379
- modelsUsed: z.ZodArray<z.ZodBranded<z.ZodString, "ModelName">, "many">;
380
- modelBreakdowns: z.ZodArray<z.ZodObject<{
381
- modelName: z.ZodBranded<z.ZodString, "ModelName">;
382
- inputTokens: z.ZodNumber;
383
- outputTokens: z.ZodNumber;
384
- cacheCreationTokens: z.ZodNumber;
385
- cacheReadTokens: z.ZodNumber;
386
- cost: z.ZodNumber;
387
- }, "strip", z.ZodTypeAny, {
388
- modelName: string & z.BRAND<"ModelName">;
389
- inputTokens: number;
390
- outputTokens: number;
391
- cacheCreationTokens: number;
392
- cacheReadTokens: number;
393
- cost: number;
394
- }, {
395
- modelName: string;
396
- inputTokens: number;
397
- outputTokens: number;
398
- cacheCreationTokens: number;
399
- cacheReadTokens: number;
400
- cost: number;
401
- }>, "many">;
402
- }, "strip", z.ZodTypeAny, {
403
- sessionId: string & z.BRAND<"SessionId">;
404
- projectPath: string & z.BRAND<"ProjectPath">;
405
- inputTokens: number;
406
- outputTokens: number;
407
- cacheCreationTokens: number;
408
- cacheReadTokens: number;
409
- totalCost: number;
410
- lastActivity: string & z.BRAND<"ActivityDate">;
411
- versions: (string & z.BRAND<"Version">)[];
412
- modelsUsed: (string & z.BRAND<"ModelName">)[];
413
- modelBreakdowns: {
414
- modelName: string & z.BRAND<"ModelName">;
415
- inputTokens: number;
416
- outputTokens: number;
417
- cacheCreationTokens: number;
418
- cacheReadTokens: number;
419
- cost: number;
420
- }[];
421
- }, {
422
- sessionId: string;
423
- projectPath: string;
424
- inputTokens: number;
425
- outputTokens: number;
426
- cacheCreationTokens: number;
427
- cacheReadTokens: number;
428
- totalCost: number;
429
- lastActivity: string;
430
- versions: string[];
431
- modelsUsed: string[];
432
- modelBreakdowns: {
433
- modelName: string;
434
- inputTokens: number;
435
- outputTokens: number;
436
- cacheCreationTokens: number;
437
- cacheReadTokens: number;
438
- cost: number;
439
- }[];
440
- }>;
441
- /**
442
- * Type definition for session-based usage aggregation
443
- */
444
- type SessionUsage = z.infer<typeof sessionUsageSchema>;
445
- /**
446
- * Zod schema for monthly usage aggregation data
447
- */
448
- declare const monthlyUsageSchema: z.ZodObject<{
449
- month: z.ZodBranded<z.ZodString, "MonthlyDate">;
450
- inputTokens: z.ZodNumber;
451
- outputTokens: z.ZodNumber;
452
- cacheCreationTokens: z.ZodNumber;
453
- cacheReadTokens: z.ZodNumber;
454
- totalCost: z.ZodNumber;
455
- modelsUsed: z.ZodArray<z.ZodBranded<z.ZodString, "ModelName">, "many">;
456
- modelBreakdowns: z.ZodArray<z.ZodObject<{
457
- modelName: z.ZodBranded<z.ZodString, "ModelName">;
458
- inputTokens: z.ZodNumber;
459
- outputTokens: z.ZodNumber;
460
- cacheCreationTokens: z.ZodNumber;
461
- cacheReadTokens: z.ZodNumber;
462
- cost: z.ZodNumber;
463
- }, "strip", z.ZodTypeAny, {
464
- modelName: string & z.BRAND<"ModelName">;
465
- inputTokens: number;
466
- outputTokens: number;
467
- cacheCreationTokens: number;
468
- cacheReadTokens: number;
469
- cost: number;
470
- }, {
471
- modelName: string;
472
- inputTokens: number;
473
- outputTokens: number;
474
- cacheCreationTokens: number;
475
- cacheReadTokens: number;
476
- cost: number;
477
- }>, "many">;
478
- project: z.ZodOptional<z.ZodString>;
479
- }, "strip", z.ZodTypeAny, {
480
- month: string & z.BRAND<"MonthlyDate">;
481
- inputTokens: number;
482
- outputTokens: number;
483
- cacheCreationTokens: number;
484
- cacheReadTokens: number;
485
- totalCost: number;
486
- modelsUsed: (string & z.BRAND<"ModelName">)[];
487
- modelBreakdowns: {
488
- modelName: string & z.BRAND<"ModelName">;
489
- inputTokens: number;
490
- outputTokens: number;
491
- cacheCreationTokens: number;
492
- cacheReadTokens: number;
493
- cost: number;
494
- }[];
495
- project?: string | undefined;
496
- }, {
497
- month: string;
498
- inputTokens: number;
499
- outputTokens: number;
500
- cacheCreationTokens: number;
501
- cacheReadTokens: number;
502
- totalCost: number;
503
- modelsUsed: string[];
504
- modelBreakdowns: {
505
- modelName: string;
506
- inputTokens: number;
507
- outputTokens: number;
508
- cacheCreationTokens: number;
509
- cacheReadTokens: number;
510
- cost: number;
511
- }[];
512
- project?: string | undefined;
513
- }>;
514
- /**
515
- * Type definition for monthly usage aggregation
516
- */
517
- type MonthlyUsage = z.infer<typeof monthlyUsageSchema>;
518
- /**
519
- * Zod schema for weekly usage aggregation data
520
- */
521
- declare const weeklyUsageSchema: z.ZodObject<{
522
- week: z.ZodBranded<z.ZodString, "WeeklyDate">;
523
- inputTokens: z.ZodNumber;
524
- outputTokens: z.ZodNumber;
525
- cacheCreationTokens: z.ZodNumber;
526
- cacheReadTokens: z.ZodNumber;
527
- totalCost: z.ZodNumber;
528
- modelsUsed: z.ZodArray<z.ZodBranded<z.ZodString, "ModelName">, "many">;
529
- modelBreakdowns: z.ZodArray<z.ZodObject<{
530
- modelName: z.ZodBranded<z.ZodString, "ModelName">;
531
- inputTokens: z.ZodNumber;
532
- outputTokens: z.ZodNumber;
533
- cacheCreationTokens: z.ZodNumber;
534
- cacheReadTokens: z.ZodNumber;
535
- cost: z.ZodNumber;
536
- }, "strip", z.ZodTypeAny, {
537
- modelName: string & z.BRAND<"ModelName">;
538
- inputTokens: number;
539
- outputTokens: number;
540
- cacheCreationTokens: number;
541
- cacheReadTokens: number;
542
- cost: number;
543
- }, {
544
- modelName: string;
545
- inputTokens: number;
546
- outputTokens: number;
547
- cacheCreationTokens: number;
548
- cacheReadTokens: number;
549
- cost: number;
550
- }>, "many">;
551
- project: z.ZodOptional<z.ZodString>;
552
- }, "strip", z.ZodTypeAny, {
553
- week: string & z.BRAND<"WeeklyDate">;
554
- inputTokens: number;
555
- outputTokens: number;
556
- cacheCreationTokens: number;
557
- cacheReadTokens: number;
558
- totalCost: number;
559
- modelsUsed: (string & z.BRAND<"ModelName">)[];
560
- modelBreakdowns: {
561
- modelName: string & z.BRAND<"ModelName">;
562
- inputTokens: number;
563
- outputTokens: number;
564
- cacheCreationTokens: number;
565
- cacheReadTokens: number;
566
- cost: number;
567
- }[];
568
- project?: string | undefined;
569
- }, {
570
- week: string;
571
- inputTokens: number;
572
- outputTokens: number;
573
- cacheCreationTokens: number;
574
- cacheReadTokens: number;
575
- totalCost: number;
576
- modelsUsed: string[];
577
- modelBreakdowns: {
578
- modelName: string;
579
- inputTokens: number;
580
- outputTokens: number;
581
- cacheCreationTokens: number;
582
- cacheReadTokens: number;
583
- cost: number;
584
- }[];
585
- project?: string | undefined;
586
- }>;
587
- /**
588
- * Type definition for weekly usage aggregation
589
- */
590
- type WeeklyUsage = z.infer<typeof weeklyUsageSchema>;
591
- /**
592
- * Zod schema for bucket usage aggregation data
593
- */
594
- declare const bucketUsageSchema: z.ZodObject<{
595
- bucket: z.ZodUnion<[z.ZodBranded<z.ZodString, "WeeklyDate">, z.ZodBranded<z.ZodString, "MonthlyDate">]>;
596
- inputTokens: z.ZodNumber;
597
- outputTokens: z.ZodNumber;
598
- cacheCreationTokens: z.ZodNumber;
599
- cacheReadTokens: z.ZodNumber;
600
- totalCost: z.ZodNumber;
601
- modelsUsed: z.ZodArray<z.ZodBranded<z.ZodString, "ModelName">, "many">;
602
- modelBreakdowns: z.ZodArray<z.ZodObject<{
603
- modelName: z.ZodBranded<z.ZodString, "ModelName">;
604
- inputTokens: z.ZodNumber;
605
- outputTokens: z.ZodNumber;
606
- cacheCreationTokens: z.ZodNumber;
607
- cacheReadTokens: z.ZodNumber;
608
- cost: z.ZodNumber;
609
- }, "strip", z.ZodTypeAny, {
610
- modelName: string & z.BRAND<"ModelName">;
611
- inputTokens: number;
612
- outputTokens: number;
613
- cacheCreationTokens: number;
614
- cacheReadTokens: number;
615
- cost: number;
616
- }, {
617
- modelName: string;
618
- inputTokens: number;
619
- outputTokens: number;
620
- cacheCreationTokens: number;
621
- cacheReadTokens: number;
622
- cost: number;
623
- }>, "many">;
624
- project: z.ZodOptional<z.ZodString>;
625
- }, "strip", z.ZodTypeAny, {
626
- bucket: (string & z.BRAND<"MonthlyDate">) | (string & z.BRAND<"WeeklyDate">);
627
- inputTokens: number;
628
- outputTokens: number;
629
- cacheCreationTokens: number;
630
- cacheReadTokens: number;
631
- totalCost: number;
632
- modelsUsed: (string & z.BRAND<"ModelName">)[];
633
- modelBreakdowns: {
634
- modelName: string & z.BRAND<"ModelName">;
635
- inputTokens: number;
636
- outputTokens: number;
637
- cacheCreationTokens: number;
638
- cacheReadTokens: number;
639
- cost: number;
640
- }[];
641
- project?: string | undefined;
642
- }, {
643
- bucket: string;
644
- inputTokens: number;
645
- outputTokens: number;
646
- cacheCreationTokens: number;
647
- cacheReadTokens: number;
648
- totalCost: number;
649
- modelsUsed: string[];
650
- modelBreakdowns: {
651
- modelName: string;
652
- inputTokens: number;
653
- outputTokens: number;
654
- cacheCreationTokens: number;
655
- cacheReadTokens: number;
656
- cost: number;
657
- }[];
658
- project?: string | undefined;
659
- }>;
660
- /**
661
- * Type definition for bucket usage aggregation
662
- */
663
- type BucketUsage = z.infer<typeof bucketUsageSchema>;
664
- /**
665
- * Create a unique identifier for deduplication using message ID and request ID
666
- */
667
- declare function createUniqueHash(data: UsageData): string | null;
668
- /**
669
- * Extract the earliest timestamp from a JSONL file
670
- * Scans through the file until it finds a valid timestamp
671
- */
672
- declare function getEarliestTimestamp(filePath: string): Promise<Date | null>;
673
- /**
674
- * Sort files by their earliest timestamp
675
- * Files without valid timestamps are placed at the end
676
- */
677
- declare function sortFilesByTimestamp(files: string[]): Promise<string[]>;
678
- /**
679
- * Calculates cost for a single usage data entry based on the specified cost calculation mode
680
- * @param data - Usage data entry
681
- * @param mode - Cost calculation mode (auto, calculate, or display)
682
- * @param fetcher - Pricing fetcher instance for calculating costs from tokens
683
- * @returns Calculated cost in USD
684
- */
685
- declare function calculateCostForEntry(data: UsageData, mode: CostMode, fetcher: PricingFetcher): Promise<number>;
686
- /**
687
- * Get Claude Code usage limit expiration date
688
- * @param data - Usage data entry
689
- * @returns Usage limit expiration date
690
- */
691
- declare function getUsageLimitResetTime(data: UsageData): Date | null;
692
- /**
693
- * Result of glob operation with base directory information
694
- */
695
- type GlobResult = {
696
- file: string;
697
- baseDir: string;
698
- };
699
- /**
700
- * Glob files from multiple Claude paths in parallel
701
- * @param claudePaths - Array of Claude base paths
702
- * @returns Array of file paths with their base directories
703
- */
704
- declare function globUsageFiles(claudePaths: string[]): Promise<GlobResult[]>;
705
- /**
706
- * Date range filter for limiting usage data by date
707
- */
708
- type DateFilter = {
709
- since?: string; // YYYYMMDD format
710
- until?: string; // YYYYMMDD format
711
- };
712
- /**
713
- * Configuration options for loading usage data
714
- */
715
- type LoadOptions = {
716
- claudePath?: string; // Custom path to Claude data directory
717
- mode?: CostMode; // Cost calculation mode
718
- order?: SortOrder; // Sort order for dates
719
- offline?: boolean; // Use offline mode for pricing
720
- sessionDurationHours?: number; // Session block duration in hours
721
- groupByProject?: boolean; // Group data by project instead of aggregating
722
- project?: string; // Filter to specific project name
723
- startOfWeek?: WeekDay; // Start of week for weekly aggregation
724
- timezone?: string; // Timezone for date grouping (e.g., 'UTC', 'America/New_York'). Defaults to system timezone
725
- locale?: string; // Locale for date/time formatting (e.g., 'en-US', 'ja-JP'). Defaults to 'en-US'
726
- } & DateFilter;
727
- /**
728
- * Loads and aggregates Claude usage data by day
729
- * Processes all JSONL files in the Claude projects directory and groups usage by date
730
- * @param options - Optional configuration for loading and filtering data
731
- * @returns Array of daily usage summaries sorted by date
732
- */
733
- declare function loadDailyUsageData(options?: LoadOptions): Promise<DailyUsage[]>;
734
- /**
735
- * Loads and aggregates Claude usage data by session
736
- * Groups usage data by project path and session ID based on file structure
737
- * @param options - Optional configuration for loading and filtering data
738
- * @returns Array of session usage summaries sorted by last activity
739
- */
740
- declare function loadSessionData(options?: LoadOptions): Promise<SessionUsage[]>;
741
- /**
742
- * Loads and aggregates Claude usage data by month
743
- * Uses daily usage data as the source and groups by month
744
- * @param options - Optional configuration for loading and filtering data
745
- * @returns Array of monthly usage summaries sorted by month
746
- */
747
- declare function loadMonthlyUsageData(options?: LoadOptions): Promise<MonthlyUsage[]>;
748
- declare function loadWeeklyUsageData(options?: LoadOptions): Promise<WeeklyUsage[]>;
749
- /**
750
- * Load usage data for a specific session by sessionId
751
- * Searches for a JSONL file named {sessionId}.jsonl in all Claude project directories
752
- * @param sessionId - The session ID to load data for (matches the JSONL filename)
753
- * @param options - Options for loading data
754
- * @param options.mode - Cost calculation mode (auto, calculate, display)
755
- * @param options.offline - Whether to use offline pricing data
756
- * @returns Usage data for the specific session or null if not found
757
- */
758
- declare function loadSessionUsageById(sessionId: string, options?: {
759
- mode?: CostMode;
760
- offline?: boolean;
761
- }): Promise<{
762
- totalCost: number;
763
- entries: UsageData[];
764
- } | null>;
765
- declare function loadBucketUsageData(groupingFn: (data: DailyUsage) => Bucket, options?: LoadOptions): Promise<BucketUsage[]>;
766
- /**
767
- * Calculate context tokens from transcript file using improved JSONL parsing
768
- * Based on the Python reference implementation for better accuracy
769
- * @param transcriptPath - Path to the transcript JSONL file
770
- * @returns Object with context tokens info or null if unavailable
771
- */
772
- declare function calculateContextTokens(transcriptPath: string, modelId?: string, offline?: boolean): Promise<{
773
- inputTokens: number;
774
- percentage: number;
775
- contextLimit: number;
776
- } | null>;
777
- /**
778
- * Loads usage data and organizes it into session blocks (typically 5-hour billing periods)
779
- * Processes all usage data and groups it into time-based blocks for billing analysis
780
- * @param options - Optional configuration including session duration and filtering
781
- * @returns Array of session blocks with usage and cost information
782
- */
783
- declare function loadSessionBlockData(options?: LoadOptions): Promise<SessionBlock[]>;
784
- //#endregion
785
- export { BucketUsage, DailyUsage, DateFilter, GlobResult, LoadOptions, ModelBreakdown, MonthlyUsage, SessionUsage, UsageData, WeeklyUsage, bucketUsageSchema, calculateContextTokens, calculateCostForEntry, createUniqueHash, dailyUsageSchema, extractProjectFromPath, getClaudePaths, getEarliestTimestamp, getUsageLimitResetTime, globUsageFiles, loadBucketUsageData, loadDailyUsageData, loadMonthlyUsageData, loadSessionBlockData, loadSessionData, loadSessionUsageById, loadWeeklyUsageData, modelBreakdownSchema, monthlyUsageSchema, sessionUsageSchema, sortFilesByTimestamp, transcriptMessageSchema, transcriptUsageSchema, usageDataSchema, weeklyUsageSchema };