/**
 * High-level cost breakdown orchestrator. Combines:
 *   - Phase 1 serving discovery (engine + observed throughput)
 *   - Phase 2 GPU inference (gpu type + count) + hourly rate lookup
 *   - Phase 3 instance-derived per-token cost (added in Phase 3)
 *   - Phase 4 Claude benchmark comparison (added in Phase 4)
 *
 * One async call per /status invocation produces all the display lines.
 */
import type { SymiConfig } from "../config/config.js";
import { type BenchmarkResult, type BenchmarkTarget } from "./benchmark.js";
import { type GpuInference } from "./gpu-inference.js";
import { type ServingInfo } from "./serving-discovery.js";
export type CostBreakdown = {
    serving: ServingInfo | null;
    gpu?: GpuInference;
    hourlyRate?: number;
    hourlyRateSource?: "config-override" | "model-override" | "default-table";
    decodeTps?: number;
    prefillTps?: number;
    throughputSource?: "observed" | "default-table";
    engineLine?: string;
    hardwareLine?: string;
    /**
     * Estimated USD cost for the supplied usage (input/output token counts),
     * derived from the instance hourly rate and inferred throughput. Computed
     * only when raw per-token rates would yield $0 AND we have a usable
     * (gpuType, hourlyRate) pair.
     */
    instanceCostUsd?: number;
    /**
     * Equivalent per-token average for the request (USD per token). Useful
     * for UI display only; not authoritative.
     */
    perTokenAvgUsd?: number;
    /**
     * The actual cost figure used for display — either the per-token rate
     * (when non-zero) or the instance-derived estimate. Stored here so
     * downstream consumers don't need to re-implement the precedence.
     */
    effectiveCostUsd?: number;
    /** Comparison results against Claude tiers. Empty when target is "none". */
    benchmarks: BenchmarkResult[];
    /** Human-readable suffix for the cost line (e.g. "vs Sonnet $0.23 (save 93%)"). */
    costLineSuffix?: string;
    /** Resolved benchmark target. */
    benchmarkTarget: BenchmarkTarget | "none";
};
export type BuildBreakdownArgs = {
    baseUrl?: string;
    provider?: string;
    modelId?: string;
    config?: SymiConfig;
    probeTimeoutMs?: number;
    forceProbeRefresh?: boolean;
    /** Token usage for the current request — used to compute instance-derived cost. */
    usage?: {
        input?: number;
        output?: number;
    };
};
export declare function buildCostBreakdown(args: BuildBreakdownArgs): Promise<CostBreakdown>;
export declare function formatHardwareLine(breakdown: CostBreakdown): string | undefined;
