/** * Spending Tracker - Persistent per-request cost ledger * * Appends each request's cost data to .valora/spending.jsonl * (one JSON record per line for easy streaming and appending). */ export interface EndpointSummary { avgCostUsd: number; cacheSavingsUsd: number; command: string; requestCount: number; totalCacheReadTokens: number; totalCacheWriteTokens: number; totalCostUsd: number; totalInputTokens: number; totalOutputTokens: number; totalTokens: number; } export interface GetRecordsOptions { command?: string; since?: string; } export interface SpendingRecord { activity?: string; agent?: string; batchDiscounted: boolean; cacheReadCostUsd: number; cacheReadTokens: number; cacheSavingsUsd: number; cacheWriteCostUsd: number; cacheWriteTokens: number; command: string; completionTokens: number; contextSavingsPercent?: number; contextTokensAfter?: number; contextTokensBefore?: number; costUsd: number; durationMs: number; id: string; inputCostUsd: number; iterations?: number; model: string; outputCostUsd: number; plugin?: string; progressiveDisclosureCalls?: number; projectPath?: string; promptTokens: number; sessionId?: string; stage: string; success?: boolean; timestamp: string; totalTokens: number; unknownModelPricing: boolean; } export interface SpendingTotals { cacheSavingsUsd: number; hasUnknownModelPricing: boolean; requestCount: number; totalCacheReadCostUsd: number; totalCacheReadTokens: number; totalCacheWriteCostUsd: number; totalCacheWriteTokens: number; totalCostUsd: number; totalInputCostUsd: number; totalInputTokens: number; totalOutputCostUsd: number; totalOutputTokens: number; totalTokens: number; } export declare class SpendingTracker { private readonly dataDir?; constructor(dataDir?: string | undefined); /** * Append a spending record to the JSONL file */ record(r: SpendingRecord): void; /** * Read all records, optionally filtered by command and/or date */ getRecords(opts?: GetRecordsOptions): SpendingRecord[]; /** * Group records by command (endpoint), sorted by total cost descending */ getByEndpoint(opts?: GetRecordsOptions): EndpointSummary[]; /** * Return the top N most expensive records */ getExpensive(limit: number, opts?: GetRecordsOptions): SpendingRecord[]; /** * Return aggregate totals across all (optionally filtered) records */ getTotals(opts?: GetRecordsOptions): SpendingTotals; } export declare function getSpendingTracker(): SpendingTracker; //# sourceMappingURL=spending-tracker.d.ts.map