import type { AgentMiddleware, AgentResponse } from "../../types.js"; export interface CostConfig { /** Provider pricing (cost per 1M tokens) */ pricing: { [provider: string]: { input: number; output: number; }; }; limits?: { daily?: number; monthly?: number; /** Per-user daily cost limit */ userDaily?: number; }; /** Maximum number of per-user cost entries to retain (default: 10_000) */ maxTrackedUsers?: number; onLimitExceeded?: (usage: UsageSummary) => void; } export interface UsageRecord { timestamp: number; agentId: string; model: string; provider: string; tokens: { prompt: number; completion: number; total: number; }; cost: number; userId?: string; } export interface UsageSummary { requests: number; tokens: { prompt: number; completion: number; total: number; }; cost: number; byProvider: Record; period: { start: number; end: number; }; } export declare function createCostTracker(config: CostConfig): { track: (agentId: string, model: string, response: AgentResponse, userId?: string) => UsageRecord; isOverBudget: (userId?: string) => string | null; getSummary: (startTime?: number, endTime?: number) => UsageSummary; getDailySummary: () => UsageSummary; getMonthlySummary: () => UsageSummary; getAllRecords: () => UsageRecord[]; getTrackedUserCount: () => number; clear: () => void; destroy: () => void; }; export declare function costTrackingMiddleware(config: CostConfig): AgentMiddleware & { destroy(): void; }; //# sourceMappingURL=tracker.d.ts.map