/**
 * 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<ModelId, {
        calls: number;
        inputTokens: number;
        outputTokens: number;
        cost: number;
    }>;
    byAgent: Record<string, {
        calls: number;
        inputTokens: number;
        outputTokens: number;
        cost: number;
    }>;
    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