import { type LLMTask, type TokenUsageRecord } from '@cortex/core'; export declare function estimateCost(model: string, inputTokens: number, outputTokens: number, provider?: string): number; export type PersistFn = (record: TokenUsageRecord) => void; export declare class TokenTracker { private records; private monthlyBudgetUsd; private warningThresholds; private warningsFired; private persistFn?; private hydratedSpendUsd; constructor(monthlyBudgetUsd?: number, warningThresholds?: number[]); /** Set a callback to persist each record (e.g. to SQLite) */ setPersist(fn: PersistFn): void; /** * Hydrate tracker with spend already recorded in SQLite. * This ensures budget enforcement works across separate CLI processes. */ hydrateSpend(currentMonthSpendUsd: number): void; record(requestId: string, task: LLMTask, provider: string, model: string, inputTokens: number, outputTokens: number, latencyMs: number): TokenUsageRecord; private trimOldRecords; private checkBudget; getCurrentMonthSpend(): number; isBudgetExhausted(): boolean; getBudgetRemaining(): number; getRecords(): TokenUsageRecord[]; getSummary(): { totalCostUsd: number; totalInputTokens: number; totalOutputTokens: number; requestCount: number; costByTask: Record; costByProvider: Record; }; } //# sourceMappingURL=token-tracker.d.ts.map