import type { CliId } from '../adapters/cli/types.js';
export interface SessionCost {
    inputTokens: number;
    outputTokens: number;
    cacheReadTokens: number;
    cacheCreateTokens: number;
    model: string;
    turns: number;
}
export interface SessionTokenUsage extends SessionCost {
    in: number;
    out: number;
}
export interface SessionTokenUsageQuery {
    cliId?: CliId | 'unknown';
    sessionId: string;
    cliSessionId?: string;
    cwd?: string;
    /** Bypass the reparse throttle (stat short-circuit and incremental folding
     *  still apply). Use at low-frequency exact points like ledger snapshots. */
    fresh?: boolean;
}
export declare function getSessionJsonlPath(sessionId: string, cwd: string): string | null;
export declare function getSessionCost(sessionId: string, cwd: string): SessionCost | null;
/** Per-CLI transcript dialect. Each kind only counts the events that dialect
 *  defines as billable turns — no cross-CLI guessing on usage-shaped lines. */
type UsageKind = 'claude' | 'codex' | 'coco' | 'generic';
type CachedUsageKind = UsageKind | 'aiden';
export declare function __resetSessionUsageCachesForTest(): void;
/** Read a transcript's token usage through the stat/incremental cache.
 *  This is the reusable entry point for dashboard rows and, later, the
 *  persistent usage ledger. */
export declare function readSessionTokenUsageFile(path: string, kind: CachedUsageKind, opts?: {
    fresh?: boolean;
}): SessionTokenUsage | null;
export declare function getSessionTokenUsage(q: SessionTokenUsageQuery): SessionTokenUsage | null;
export declare function formatNumber(n: number): string;
export {};
//# sourceMappingURL=cost-calculator.d.ts.map