/** * Cost Tracking Types * * Types for tracking API usage costs during certifications. * * @module cost/types */ /** * Supported model providers */ export type ModelProvider = "anthropic" | "openai" | "google"; /** * Supported models for cost calculation */ export type ModelId = "claude-3-opus" | "claude-3-sonnet" | "claude-3-haiku" | "claude-3.5-sonnet" | "claude-3.5-haiku" | "gpt-4" | "gpt-4-turbo" | "gpt-4o" | "gpt-4o-mini" | "gpt-3.5-turbo" | "gemini-1.5-pro" | "gemini-1.5-flash" | "gemini-1.0-pro"; /** * Model pricing per 1M tokens (in USD) */ export interface ModelPricing { provider: ModelProvider; inputPer1M: number; outputPer1M: number; cachedInputPer1M?: number; } /** * Token usage for a single API call */ export interface TokenUsage { inputTokens: number; outputTokens: number; cachedInputTokens?: number; totalTokens: number; } /** * Cost for a single API call */ export interface CallCost { inputCost: number; outputCost: number; cachedInputCost: number; totalCost: number; } /** * API call record */ export interface ApiCallRecord { id: string; timestamp: string; model: ModelId; provider: ModelProvider; usage: TokenUsage; cost: CallCost; agent?: string; operation?: string; cached?: boolean; } /** * Cost summary for a certification */ export interface CostSummary { totalCost: number; totalInputTokens: number; totalOutputTokens: number; totalCachedTokens: number; totalCalls: number; byModel: Record; byAgent: Record; startedAt: string; updatedAt: string; } /** * Budget configuration */ export interface BudgetConfig { /** Maximum total cost in USD */ maxCost?: number; /** Maximum input tokens */ maxInputTokens?: number; /** Maximum output tokens */ maxOutputTokens?: number; /** Maximum total tokens */ maxTotalTokens?: number; /** Maximum API calls */ maxCalls?: number; /** Warn at this percentage of budget (0-100) */ warnAtPercent?: number; /** Abort on budget exceeded */ abortOnExceeded?: boolean; } /** * Budget status */ export interface BudgetStatus { withinBudget: boolean; costUsedPercent: number; tokensUsedPercent: number; callsUsedPercent: number; warnings: string[]; exceeded: string[]; } /** * Cost tracker state */ export interface CostTrackerState { certificationId: string; projectPath: string; budget: BudgetConfig; calls: ApiCallRecord[]; summary: CostSummary; status: BudgetStatus; } /** * Cost tracking options */ export interface CostTrackingOptions { /** Enable cost tracking */ enabled?: boolean; /** Budget configuration */ budget?: BudgetConfig; /** Default model for cost estimation */ defaultModel?: ModelId; /** Log costs to console */ logCosts?: boolean; } //# sourceMappingURL=types.d.ts.map