import type { ModelFitWorkload } from '../../schemas/assess-model-fit.js'; import type { ModelResourceProfile } from '../../schemas/model-resource-profile.js'; export declare const FLOOR_VERSION = "floor-v1"; export interface FloorInput { profile: ModelResourceProfile; workload: ModelFitWorkload; /** Artifact bytes of companion constants the caller passed alongside. */ extraArtifactBytes: number; } /** A lower bound with no upper bound, and how it was assembled. */ export interface FloorResult { bytes: number; reasons: readonly string[]; assumptions: readonly string[]; } /** * The smallest resident footprint the catalog facts prove: artifact bytes, plus * the KV cache for a llama.cpp model at the cheapest element width the engine * can default to. * * Every term the real load adds on top — weight slack, engine overhead, compute * buffers, a completion's working peak — is non-negative, so a floor with all of * them at zero is unconditionally valid on any platform and any backend. It can * therefore refuse a model (`likely-too-large` when even the floor is over * budget) but never confirm one, since how far above the floor the real load * lands is unmeasured here. * * This is the zero-fetch gate. It reads nothing but the catalog and stays the * fallback wherever no engine measurement is available. */ export declare function computeFloor(input: FloorInput): FloorResult;