import { type ProviderId, type TokenUsage } from "../../types.js"; export interface SessionUsageRoute { readonly provider: ProviderId | undefined; readonly model: string | undefined; readonly requests: number; readonly promptTokens: number; readonly completionTokens: number; readonly totalTokens: number; readonly cachedPromptTokens: number | undefined; readonly cacheCreationTokens: number | undefined; readonly uncachedPromptTokens: number | undefined; readonly reasoningTokens: number | undefined; readonly reasoningObserved: boolean; readonly cacheBasePromptTokens: number | undefined; readonly estimatedRequests: number; readonly unmeasuredPromptRequests: number; } export interface SessionUsageTotals { readonly routes: number; readonly requests: number; readonly promptTokens: number; readonly completionTokens: number; readonly totalTokens: number; readonly cachedPromptTokens: number | undefined; readonly cacheCreationTokens: number | undefined; readonly uncachedPromptTokens: number | undefined; readonly reasoningTokens: number | undefined; readonly reasoningObserved: boolean; readonly cacheBasePromptTokens: number | undefined; readonly estimatedRequests: number; readonly unmeasuredPromptRequests: number; } export interface SessionUsageReport { readonly routes: readonly SessionUsageRoute[]; readonly totals: SessionUsageTotals; } export interface PersistedRouteUsage { readonly provider?: string | undefined; readonly model?: string | undefined; readonly requests: number; readonly promptTokens: number; readonly completionTokens: number; readonly totalTokens: number; readonly cachedPromptTokens?: number | undefined; readonly cacheCreationTokens?: number | undefined; readonly uncachedPromptTokens?: number | undefined; readonly reasoningTokens?: number | undefined; readonly reasoningObserved?: boolean | undefined; readonly cacheBasePromptTokens?: number | undefined; readonly estimatedRequests?: number | undefined; readonly unmeasuredPromptRequests?: number | undefined; } export declare function usageCacheHitRate(input: { readonly cachedPromptTokens: number | undefined; readonly cacheBasePromptTokens: number | undefined; }): number | undefined; export declare class SessionUsageLedger { private readonly entries; private sequence; record(usage: TokenUsage, provider: ProviderId | undefined, model: string | undefined): void; isEmpty(): boolean; clear(): void; report(): SessionUsageReport; persist(): readonly PersistedRouteUsage[] | undefined; restore(rows: unknown): void; }