export interface SessionTokenSummary {
    sessionId: string;
    model: string;
    inputTokens: number;
    outputTokens: number;
    cacheWriteTokens: number;
    cacheReadTokens: number;
    cost: number;
    savings: number;
    timestamp: string;
    duration?: number;
}
export interface BillingContext {
    planType: 'api' | 'subscription';
    monthlyAmount?: number;
}
export interface CostsSummaryPayload {
    totalCost: number;
    totalSavings: number;
    totalTokens: number;
    sessionCount: number;
    sessions: SessionTokenSummary[];
    modelBreakdown: Record<string, {
        cost: number;
        tokens: number;
        sessions: number;
    }>;
    billingContext: BillingContext;
}
export declare function getModelDisplayName(modelId: string): string;
export declare class CostAggregator {
    private logDir;
    /** Level-1: per-file cache keyed by absolute file path */
    private fileCache;
    /** Level-2: response cache — invalidated when file list/mtimes change */
    private responseCache;
    private responseCacheHash;
    constructor(projectRoot: string);
    getTokenSummaries(limit?: number, billingConfig?: {
        planType?: string;
        monthlyAmount?: number;
    }): Promise<CostsSummaryPayload>;
    private extractTokensFromSession;
    /** Get session files sorted by mtime, with mtime included for cache comparison */
    private getSessionFilesWithMtime;
}
//# sourceMappingURL=cost-aggregator.d.ts.map