/**
 * Hourly USD rates for self-hosted GPU instance types, sourced from public
 * CoreWeave / RunPod / Lambda Cloud price pages (as of 2026-Q1).
 *
 * These are reference defaults — users override per-instance via
 * `models.gpuRates: { "a100-80gb": 2.5 }` in symi.json, or per-model via
 * `cost.hourlyRate: 4.42` on a specific provider model.
 */
export type GpuType = "a100-40gb" | "a100-80gb" | "h100-pcie" | "h100-sxm" | "h200" | "l40" | "l40s" | "a40" | "a6000" | "a5000" | "v100" | "mi300x" | "rtx-4090";
export declare const GPU_VRAM_GB: Record<GpuType, number>;
export declare const GPU_LABEL: Record<GpuType, string>;
export declare const DEFAULT_HOURLY_RATES_USD: Record<GpuType, number>;
/**
 * Rough decode (output) throughput defaults in tokens/sec for a 27-30B FP8
 * model on a single GPU of each type. Scales roughly inversely with model
 * parameter count and bytes-per-param. Used as a fallback when no live
 * `vllm:generation_tokens_total` delta has been observed yet.
 *
 * These are conservative published-benchmark medians; treat as ballpark.
 * Override via `models.gpuRates` is rate-only; throughput overrides are
 * Phase 4+ (not yet wired to config).
 */
export declare const DEFAULT_DECODE_TPS: Record<GpuType, number>;
/**
 * Prefill throughput is typically 30-60× higher than decode for a given
 * setup. Use 40× as a balanced midpoint.
 */
export declare const PREFILL_DECODE_RATIO = 40;
export declare function resolveDefaultDecodeTps(gpuType: GpuType, paramsB: number | undefined, bytesPerParam: number | undefined): number;
export type HourlyRateOverrides = Partial<Record<string, number>>;
export declare function resolveHourlyRate(gpuType: string, overrides?: HourlyRateOverrides): number | undefined;
export declare function isKnownGpuType(value: string): value is GpuType;
