/**
 * Cost estimation for local LLM models.
 *
 * Unlike cloud models with per-token pricing, local models have:
 *   1. Hardware amortization cost (GPU, RAM, storage)
 *   2. Power consumption cost
 *   3. Opportunity cost (what else could run on this hardware)
 *
 * This module provides a simple estimation framework that's
 * more honest than showing $0.00 or cloud Anthropic prices.
 *
 * Users can configure per-model costs in config.json, or use
 * defaults based on model size and quantization.
 */
export interface CostProfile {
    /** Cost per million input tokens (in local currency units, e.g. kWh or ¥) */
    inputCostPer1M: number;
    /** Cost per million output tokens */
    outputCostPer1M: number;
    /** Currency/unit label (e.g. "kWh", "¥", "$", "compute-units") */
    unit: string;
    /** Estimated tokens per second for this model */
    estimatedTps: number;
    /** Source of the estimate */
    source: 'configured' | 'estimated' | 'default';
}
export interface CostEstimate {
    /** Input token cost */
    inputCost: number;
    /** Output token cost */
    outputCost: number;
    /** Total cost */
    totalCost: number;
    /** Currency/unit label */
    unit: string;
    /** Estimated wall-clock time in seconds */
    estimatedSeconds: number;
    /** Source of the cost profile */
    source: CostProfile['source'];
}
interface SizeProfile {
    inputCostPer1M: number;
    outputCostPer1M: number;
    estimatedTps: number;
}
declare const SIZE_PROFILES: Record<string, SizeProfile>;
/**
 * Extract parameter count from model ID (e.g. "70B", "27B", "120b").
 */
export declare function extractParamCount(modelId: string): number | null;
/**
 * Determine size category from parameter count.
 */
export declare function sizeCategory(params: number): keyof typeof SIZE_PROFILES;
/**
 * Get cost profile for a model.
 * Priority: user-configured > size-estimated > default.
 */
export declare function getCostProfile(modelId: string, userProfiles?: Record<string, Partial<CostProfile>>): CostProfile;
/**
 * Calculate cost for a given token usage.
 */
export declare function estimateCost(inputTokens: number, outputTokens: number, modelId: string, userProfiles?: Record<string, Partial<CostProfile>>): CostEstimate;
/**
 * Format cost estimate for display.
 */
export declare function formatCostEstimate(estimate: CostEstimate): string;
/**
 * Format a detailed cost breakdown.
 */
export declare function formatCostBreakdown(inputTokens: number, outputTokens: number, estimate: CostEstimate): string;
/**
 * Get cost profile enhanced with actual TPS from perf tracker.
 * Falls back to size-based estimation if no real data available.
 */
export declare function getCostProfileWithPerf(modelId: string, realTps?: number, userProfiles?: Record<string, Partial<CostProfile>>): CostProfile;
/**
 * Get session cost summary across all models.
 */
export declare function getSessionCostSummary(modelUsage: Array<{
    modelId: string;
    inputTokens: number;
    outputTokens: number;
    realTps?: number;
}>, userProfiles?: Record<string, Partial<CostProfile>>): {
    perModel: Array<{
        modelId: string;
        cost: CostEstimate;
    }>;
    totalCost: number;
    unit: string;
};
export {};
