ccusage 0.6.0 → 0.6.2
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.
- package/README.md +29 -22
- package/dist/calculate-cost.d.ts +11 -8
- package/dist/{core-BgFXUe_h.js → core-B0ovMhJe.js} +4 -4
- package/dist/data-loader-B0tJZeHI.d.ts +144 -0
- package/dist/{data-loader-CDv0IYZx.js → data-loader-BfnzLKGl.js} +503 -131
- package/dist/data-loader.d.ts +2 -4
- package/dist/data-loader.js +4 -4
- package/dist/{debug-Dk36WQTw.js → debug-Bf6GUNZE.js} +45 -40
- package/dist/debug.d.ts +4 -4
- package/dist/debug.js +5 -5
- package/dist/{dist-FwNhpFrW.js → dist-BEQ1tJCL.js} +1 -109
- package/dist/{dist-C_i5I27w.js → dist-DAarI-SJ.js} +5 -5
- package/dist/{effect-WSjEuzC9-BsxP11fz.js → effect-WSjEuzC9-ChJ5OQQf.js} +1 -1
- package/dist/{esm-vjyZjnpZ.js → esm-Dqsc1zmX.js} +1 -1
- package/dist/{index-CISmcbXk-BotItq1T.js → index-CISmcbXk-x9eVmhGM.js} +5 -5
- package/dist/index.js +108 -42
- package/dist/{logger-DhDyJEC5.js → logger-DixU80sg.js} +17 -17
- package/dist/logger.js +1 -1
- package/dist/{mcp-G-TIOcuj.js → mcp-nXxiNurt.js} +93 -78
- package/dist/mcp.d.ts +2 -4
- package/dist/mcp.js +7 -8
- package/dist/pricing-fetcher-BY3-ryVq.js +79 -0
- package/dist/{index-BurjgCfW.d.ts → pricing-fetcher-Dq-OLBp4.d.ts} +31 -249
- package/dist/pricing-fetcher.d.ts +2 -3
- package/dist/pricing-fetcher.js +4 -4
- package/dist/{prompt-IToGuko2.js → prompt-DljZqwMa.js} +4 -4
- package/dist/{sury-DmrZ3_Oj-DhGOjCNc.js → sury-DmrZ3_Oj-l0qqtY-f.js} +1 -1
- package/dist/{types-CFnCBr2I.js → types-DS8M8QF_.js} +4 -4
- package/dist/valibot-CQk-M5rL-BNHzwpA0.js +10 -0
- package/dist/{zod-Db63SLXj-BWdcigdx.js → zod-Db63SLXj-N1oN-yiY.js} +3 -3
- package/package.json +8 -11
- package/dist/data-loader-aUOjeZ06.d.ts +0 -67
- package/dist/pricing-fetcher-BCv1Vods.js +0 -60
- package/dist/pricing-fetcher-DygIroMj.d.ts +0 -21
- package/dist/shared-args-BtMSktLn.js +0 -68
- package/dist/shared-args.d.ts +0 -108
- package/dist/shared-args.js +0 -8
- package/dist/types-BcXIBMQk.js +0 -42
- package/dist/types-y1JQzaKZ.d.ts +0 -81
- package/dist/types.d.ts +0 -3
- package/dist/types.js +0 -4
- package/dist/utils-C7kg8MXN.js +0 -10
- package/dist/utils.d.ts +0 -5
- package/dist/utils.js +0 -3
- package/dist/valibot-CQk-M5rL-Cq5E7F3g.js +0 -10
- /package/dist/{arktype-C-GObzDh-Dj1DVoqC.js → arktype-C-GObzDh-Bx7Fdrqj.js} +0 -0
package/README.md
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
> **ccusage(claude-code-usage)**
|
|
4
4
|
|
|
5
5
|
[](https://npmjs.com/package/ccusage)
|
|
6
|
-
[](https://
|
|
7
|
-
[](https://deepwiki.com/ryoppippi/ccusage)
|
|
8
|
-
|
|
6
|
+
[](https://tanstack.com/stats/npm?packageGroups=%5B%7B%22packages%22:%5B%7B%22name%22:%22ccusage%22%7D%5D%7D%5D&range=30-days&transform=none&binType=daily&showDataMode=all&height=400)
|
|
7
|
+
[](https://deepwiki.com/ryoppippi/ccusage)<!-- DeepWiki badge generated by https://deepwiki.ryoppippi.com/ -->
|
|
8
|
+
[](https://github.com/hesreallyhim/awesome-claude-code)
|
|
9
9
|
|
|
10
10
|
<div align="center">
|
|
11
11
|
<img src="https://github.com/ryoppippi/ccusage/blob/main/docs/screenshot.png?raw=true">
|
|
@@ -16,22 +16,23 @@ A CLI tool for analyzing Claude Code usage from local JSONL files.
|
|
|
16
16
|
Inspired by [this article](https://note.com/milliondev/n/n1d018da2d769) about tracking Claude Code usage costs.
|
|
17
17
|
|
|
18
18
|
## What is `ccusage` (by NotebookLM)
|
|
19
|
+
|
|
19
20
|
<details>
|
|
20
21
|
<summary>Podcact</summary>
|
|
21
22
|
|
|
22
23
|
# English
|
|
23
|
-
https://github.com/user-attachments/assets/7a00f2f3-82a7-41b6-a8da-e04b76b5e35a
|
|
24
24
|
|
|
25
|
+
https://github.com/user-attachments/assets/7a00f2f3-82a7-41b6-a8da-e04b76b5e35a
|
|
25
26
|
|
|
26
27
|
# 日本語
|
|
28
|
+
|
|
27
29
|
https://github.com/user-attachments/assets/db09fc06-bf57-4d37-9b06-514851bcc1d0
|
|
28
30
|
|
|
29
31
|
</details>
|
|
30
32
|
|
|
31
|
-
|
|
32
33
|
## Motivation
|
|
33
34
|
|
|
34
|
-
Claude Code's Max plan offers unlimited usage - but wouldn't it be interesting to know how much you'd be paying if you were on a pay-per-use plan?
|
|
35
|
+
Claude Code's Max plan offers unlimited usage - but wouldn't it be interesting to know how much you'd be paying if you were on a pay-per-use plan?
|
|
35
36
|
|
|
36
37
|
This tool helps you understand the value you're getting from your subscription by calculating the equivalent costs of your actual usage. See how much you're saving and enjoy that satisfying feeling of getting great value! 😊
|
|
37
38
|
|
|
@@ -52,6 +53,7 @@ This tool helps you understand the value you're getting from your subscription b
|
|
|
52
53
|
⚠️ **This is NOT an official Claude tool** - it's an independent community project that analyzes locally stored usage data.
|
|
53
54
|
|
|
54
55
|
**Cost calculations are estimates only** and may not reflect actual billing:
|
|
56
|
+
|
|
55
57
|
- Costs shown are virtual/estimated based on token counts and model pricing data
|
|
56
58
|
- Actual costs may vary due to pricing changes, special rates, or billing adjustments
|
|
57
59
|
- We do not guarantee the accuracy of calculated costs
|
|
@@ -202,7 +204,7 @@ ccusage session --order desc # Show newest sessions first (default)
|
|
|
202
204
|
All commands support the following options:
|
|
203
205
|
|
|
204
206
|
- `-s, --since <date>`: Filter from date (YYYYMMDD format)
|
|
205
|
-
- `-u, --until <date>`: Filter until date (YYYYMMDD format)
|
|
207
|
+
- `-u, --until <date>`: Filter until date (YYYYMMDD format)
|
|
206
208
|
- `-p, --path <path>`: Custom path to Claude data directory (default: `~/.claude`)
|
|
207
209
|
- `-j, --json`: Output results in JSON format instead of table
|
|
208
210
|
- `-m, --mode <mode>`: Cost calculation mode: `auto` (default), `calculate`, or `display`
|
|
@@ -234,10 +236,12 @@ ccusage mcp --mode calculate
|
|
|
234
236
|
```
|
|
235
237
|
|
|
236
238
|
The MCP server supports both **stdio** and **HTTP stream** transports:
|
|
239
|
+
|
|
237
240
|
- **stdio** (default): Best for local integration where the client directly spawns the process
|
|
238
241
|
- **HTTP stream**: Best for remote access when you need to call the server from another machine or network location
|
|
239
242
|
|
|
240
243
|
Available MCP tools:
|
|
244
|
+
|
|
241
245
|
- `daily`: Returns daily usage reports (accepts `since`, `until`, `mode` parameters)
|
|
242
246
|
- `session`: Returns session usage reports (accepts `since`, `until`, `mode` parameters)
|
|
243
247
|
|
|
@@ -249,18 +253,18 @@ Available MCP tools:
|
|
|
249
253
|
|
|
250
254
|
To use ccusage MCP with Claude Desktop, add this to your Claude Desktop configuration file:
|
|
251
255
|
|
|
252
|
-
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
256
|
+
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
253
257
|
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
254
258
|
|
|
255
259
|
```json
|
|
256
260
|
{
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
"mcpServers": {
|
|
262
|
+
"ccusage": {
|
|
263
|
+
"command": "npx",
|
|
264
|
+
"args": ["ccusage@latest", "mcp"],
|
|
265
|
+
"env": {}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
264
268
|
}
|
|
265
269
|
```
|
|
266
270
|
|
|
@@ -268,13 +272,13 @@ Or if you have ccusage installed globally:
|
|
|
268
272
|
|
|
269
273
|
```json
|
|
270
274
|
{
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
275
|
+
"mcpServers": {
|
|
276
|
+
"ccusage": {
|
|
277
|
+
"command": "ccusage",
|
|
278
|
+
"args": ["mcp"],
|
|
279
|
+
"env": {}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
278
282
|
}
|
|
279
283
|
```
|
|
280
284
|
|
|
@@ -283,6 +287,7 @@ After adding this configuration, restart Claude Desktop. You'll then be able to
|
|
|
283
287
|
## Output Example
|
|
284
288
|
|
|
285
289
|
### Daily Report
|
|
290
|
+
|
|
286
291
|
```
|
|
287
292
|
╭──────────────────────────────────────────╮
|
|
288
293
|
│ │
|
|
@@ -302,6 +307,7 @@ After adding this configuration, restart Claude Desktop. You'll then be able to
|
|
|
302
307
|
```
|
|
303
308
|
|
|
304
309
|
### Session Report
|
|
310
|
+
|
|
305
311
|
```
|
|
306
312
|
╭───────────────────────────────────────────────╮
|
|
307
313
|
│ │
|
|
@@ -321,6 +327,7 @@ After adding this configuration, restart Claude Desktop. You'll then be able to
|
|
|
321
327
|
```
|
|
322
328
|
|
|
323
329
|
## Requirements
|
|
330
|
+
|
|
324
331
|
- Claude Code usage history files (`~/.claude/projects/**/*.jsonl`)
|
|
325
332
|
|
|
326
333
|
## License
|
package/dist/calculate-cost.d.ts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import "./pricing-fetcher-
|
|
3
|
-
import { TokenData, TokenTotals } from "./types-y1JQzaKZ.js";
|
|
4
|
-
import { DailyUsage, MonthlyUsage, SessionUsage } from "./data-loader-aUOjeZ06.js";
|
|
1
|
+
import { DailyUsage, MonthlyUsage, SessionUsage } from "./data-loader-B0tJZeHI.js";
|
|
2
|
+
import "./pricing-fetcher-Dq-OLBp4.js";
|
|
5
3
|
|
|
6
4
|
//#region src/calculate-cost.d.ts
|
|
7
|
-
|
|
8
|
-
declare function getTotalTokens(tokens: TokenData): number;
|
|
9
|
-
declare function createTotalsObject(totals: TokenTotals): {
|
|
5
|
+
type TokenData = {
|
|
10
6
|
inputTokens: number;
|
|
11
7
|
outputTokens: number;
|
|
12
8
|
cacheCreationTokens: number;
|
|
13
9
|
cacheReadTokens: number;
|
|
14
|
-
|
|
10
|
+
};
|
|
11
|
+
type TokenTotals = TokenData & {
|
|
15
12
|
totalCost: number;
|
|
16
13
|
};
|
|
14
|
+
type TotalsObject = TokenTotals & {
|
|
15
|
+
totalTokens: number;
|
|
16
|
+
};
|
|
17
|
+
declare function calculateTotals(data: Array<DailyUsage | MonthlyUsage | SessionUsage>): TokenTotals;
|
|
18
|
+
declare function getTotalTokens(tokens: TokenData): number;
|
|
19
|
+
declare function createTotalsObject(totals: TokenTotals): TotalsObject;
|
|
17
20
|
//#endregion
|
|
18
21
|
export { calculateTotals, createTotalsObject, getTotalTokens };
|
|
@@ -38,8 +38,8 @@ const $output = Symbol("ZodOutput");
|
|
|
38
38
|
const $input = Symbol("ZodInput");
|
|
39
39
|
var $ZodRegistry = class {
|
|
40
40
|
constructor() {
|
|
41
|
-
this._map = new WeakMap();
|
|
42
|
-
this._idmap = new Map();
|
|
41
|
+
this._map = /* @__PURE__ */ new WeakMap();
|
|
42
|
+
this._idmap = /* @__PURE__ */ new Map();
|
|
43
43
|
}
|
|
44
44
|
add(schema, ..._meta) {
|
|
45
45
|
const meta = _meta[0];
|
|
@@ -85,7 +85,7 @@ var JSONSchemaGenerator = class {
|
|
|
85
85
|
this.unrepresentable = params?.unrepresentable ?? "throw";
|
|
86
86
|
this.override = params?.override ?? (() => {});
|
|
87
87
|
this.io = params?.io ?? "output";
|
|
88
|
-
this.seen = new Map();
|
|
88
|
+
this.seen = /* @__PURE__ */ new Map();
|
|
89
89
|
}
|
|
90
90
|
process(schema, _params = {
|
|
91
91
|
path: [],
|
|
@@ -630,7 +630,7 @@ function toJSONSchema(input, _params) {
|
|
|
630
630
|
return gen.emit(input, _params);
|
|
631
631
|
}
|
|
632
632
|
function isTransforming(_schema, _ctx) {
|
|
633
|
-
const ctx = _ctx ?? { seen: new Set() };
|
|
633
|
+
const ctx = _ctx ?? { seen: /* @__PURE__ */ new Set() };
|
|
634
634
|
if (ctx.seen.has(_schema)) return false;
|
|
635
635
|
ctx.seen.add(_schema);
|
|
636
636
|
const schema = _schema;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { ArraySchema, InferOutput, NumberSchema, ObjectSchema, OptionalSchema, PricingFetcher, RegexAction, SchemaWithPipe, StringSchema } from "./pricing-fetcher-Dq-OLBp4.js";
|
|
2
|
+
|
|
3
|
+
//#region node_modules/type-fest/source/observable-like.d.ts
|
|
4
|
+
declare global {
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
|
|
6
|
+
interface SymbolConstructor {
|
|
7
|
+
readonly observable: symbol;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
@remarks
|
|
13
|
+
The TC39 observable proposal defines a `closed` property, but some implementations (such as xstream) do not as of 10/08/2021.
|
|
14
|
+
As well, some guidance on making an `Observable` to not include `closed` property.
|
|
15
|
+
@see https://github.com/tc39/proposal-observable/blob/master/src/Observable.js#L129-L130
|
|
16
|
+
@see https://github.com/staltz/xstream/blob/6c22580c1d84d69773ee4b0905df44ad464955b3/src/index.ts#L79-L85
|
|
17
|
+
@see https://github.com/benlesh/symbol-observable#making-an-object-observable
|
|
18
|
+
|
|
19
|
+
@category Observable
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region node_modules/type-fest/source/tuple-to-union.d.ts
|
|
24
|
+
/**
|
|
25
|
+
Convert a tuple/array into a union type of its elements.
|
|
26
|
+
|
|
27
|
+
This can be useful when you have a fixed set of allowed values and want a type defining only the allowed values, but do not want to repeat yourself.
|
|
28
|
+
|
|
29
|
+
@example
|
|
30
|
+
```
|
|
31
|
+
import type {TupleToUnion} from 'type-fest';
|
|
32
|
+
|
|
33
|
+
const destinations = ['a', 'b', 'c'] as const;
|
|
34
|
+
|
|
35
|
+
type Destination = TupleToUnion<typeof destinations>;
|
|
36
|
+
//=> 'a' | 'b' | 'c'
|
|
37
|
+
|
|
38
|
+
function verifyDestination(destination: unknown): destination is Destination {
|
|
39
|
+
return destinations.includes(destination as any);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
type RequestBody = {
|
|
43
|
+
deliverTo: Destination;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
function verifyRequestBody(body: unknown): body is RequestBody {
|
|
47
|
+
const deliverTo = (body as any).deliverTo;
|
|
48
|
+
return typeof body === 'object' && body !== null && verifyDestination(deliverTo);
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Alternatively, you may use `typeof destinations[number]`. If `destinations` is a tuple, there is no difference. However if `destinations` is a string, the resulting type will the union of the characters in the string. Other types of `destinations` may result in a compile error. In comparison, TupleToUnion will return `never` if a tuple is not provided.
|
|
53
|
+
|
|
54
|
+
@example
|
|
55
|
+
```
|
|
56
|
+
const destinations = ['a', 'b', 'c'] as const;
|
|
57
|
+
|
|
58
|
+
type Destination = typeof destinations[number];
|
|
59
|
+
//=> 'a' | 'b' | 'c'
|
|
60
|
+
|
|
61
|
+
const erroringType = new Set(['a', 'b', 'c']);
|
|
62
|
+
|
|
63
|
+
type ErroringType = typeof erroringType[number];
|
|
64
|
+
//=> Type 'Set<string>' has no matching index signature for type 'number'. ts(2537)
|
|
65
|
+
|
|
66
|
+
const numberBool: { [n: number]: boolean } = { 1: true };
|
|
67
|
+
|
|
68
|
+
type NumberBool = typeof numberBool[number];
|
|
69
|
+
//=> boolean
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
@category Array
|
|
73
|
+
*/
|
|
74
|
+
type TupleToUnion<ArrayType> = ArrayType extends readonly unknown[] ? ArrayType[number] : never;
|
|
75
|
+
//#endregion
|
|
76
|
+
//#region src/types.internal.d.ts
|
|
77
|
+
declare const CostModes: readonly ["auto", "calculate", "display"];
|
|
78
|
+
type CostMode = TupleToUnion<typeof CostModes>;
|
|
79
|
+
declare const SortOrders: readonly ["desc", "asc"];
|
|
80
|
+
type SortOrder = TupleToUnion<typeof SortOrders>;
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region src/data-loader.d.ts
|
|
83
|
+
declare function getDefaultClaudePath(): string;
|
|
84
|
+
declare const UsageDataSchema: ObjectSchema<{
|
|
85
|
+
readonly timestamp: StringSchema<undefined>;
|
|
86
|
+
readonly version: OptionalSchema<StringSchema<undefined>, undefined>;
|
|
87
|
+
readonly message: ObjectSchema<{
|
|
88
|
+
readonly usage: ObjectSchema<{
|
|
89
|
+
readonly input_tokens: NumberSchema<undefined>;
|
|
90
|
+
readonly output_tokens: NumberSchema<undefined>;
|
|
91
|
+
readonly cache_creation_input_tokens: OptionalSchema<NumberSchema<undefined>, undefined>;
|
|
92
|
+
readonly cache_read_input_tokens: OptionalSchema<NumberSchema<undefined>, undefined>;
|
|
93
|
+
}, undefined>;
|
|
94
|
+
readonly model: OptionalSchema<StringSchema<undefined>, undefined>;
|
|
95
|
+
}, undefined>;
|
|
96
|
+
readonly costUSD: OptionalSchema<NumberSchema<undefined>, undefined>;
|
|
97
|
+
}, undefined>;
|
|
98
|
+
type UsageData = InferOutput<typeof UsageDataSchema>;
|
|
99
|
+
declare const DailyUsageSchema: ObjectSchema<{
|
|
100
|
+
readonly date: SchemaWithPipe<readonly [StringSchema<undefined>, RegexAction<string, undefined>]>;
|
|
101
|
+
readonly inputTokens: NumberSchema<undefined>;
|
|
102
|
+
readonly outputTokens: NumberSchema<undefined>;
|
|
103
|
+
readonly cacheCreationTokens: NumberSchema<undefined>;
|
|
104
|
+
readonly cacheReadTokens: NumberSchema<undefined>;
|
|
105
|
+
readonly totalCost: NumberSchema<undefined>;
|
|
106
|
+
}, undefined>;
|
|
107
|
+
type DailyUsage = InferOutput<typeof DailyUsageSchema>;
|
|
108
|
+
declare const SessionUsageSchema: ObjectSchema<{
|
|
109
|
+
readonly sessionId: StringSchema<undefined>;
|
|
110
|
+
readonly projectPath: StringSchema<undefined>;
|
|
111
|
+
readonly inputTokens: NumberSchema<undefined>;
|
|
112
|
+
readonly outputTokens: NumberSchema<undefined>;
|
|
113
|
+
readonly cacheCreationTokens: NumberSchema<undefined>;
|
|
114
|
+
readonly cacheReadTokens: NumberSchema<undefined>;
|
|
115
|
+
readonly totalCost: NumberSchema<undefined>;
|
|
116
|
+
readonly lastActivity: StringSchema<undefined>;
|
|
117
|
+
readonly versions: ArraySchema<StringSchema<undefined>, undefined>;
|
|
118
|
+
}, undefined>;
|
|
119
|
+
type SessionUsage = InferOutput<typeof SessionUsageSchema>;
|
|
120
|
+
declare const MonthlyUsageSchema: ObjectSchema<{
|
|
121
|
+
readonly month: SchemaWithPipe<readonly [StringSchema<undefined>, RegexAction<string, undefined>]>;
|
|
122
|
+
readonly inputTokens: NumberSchema<undefined>;
|
|
123
|
+
readonly outputTokens: NumberSchema<undefined>;
|
|
124
|
+
readonly cacheCreationTokens: NumberSchema<undefined>;
|
|
125
|
+
readonly cacheReadTokens: NumberSchema<undefined>;
|
|
126
|
+
readonly totalCost: NumberSchema<undefined>;
|
|
127
|
+
}, undefined>;
|
|
128
|
+
type MonthlyUsage = InferOutput<typeof MonthlyUsageSchema>;
|
|
129
|
+
declare function formatDate(dateStr: string): string;
|
|
130
|
+
declare function calculateCostForEntry(data: UsageData, mode: CostMode, fetcher: PricingFetcher): Promise<number>;
|
|
131
|
+
type DateFilter = {
|
|
132
|
+
since?: string;
|
|
133
|
+
until?: string;
|
|
134
|
+
};
|
|
135
|
+
type LoadOptions = {
|
|
136
|
+
claudePath?: string;
|
|
137
|
+
mode?: CostMode;
|
|
138
|
+
order?: SortOrder;
|
|
139
|
+
} & DateFilter;
|
|
140
|
+
declare function loadDailyUsageData(options?: LoadOptions): Promise<DailyUsage[]>;
|
|
141
|
+
declare function loadSessionData(options?: LoadOptions): Promise<SessionUsage[]>;
|
|
142
|
+
declare function loadMonthlyUsageData(options?: LoadOptions): Promise<MonthlyUsage[]>;
|
|
143
|
+
//#endregion
|
|
144
|
+
export { DailyUsage, DailyUsageSchema, DateFilter, LoadOptions, MonthlyUsage, MonthlyUsageSchema, SessionUsage, SessionUsageSchema, UsageData, UsageDataSchema, calculateCostForEntry, formatDate, getDefaultClaudePath, loadDailyUsageData, loadMonthlyUsageData, loadSessionData };
|