import { QualityIntelligence as MgQI, type ModelCapability } from "@oscharko-dev/keiko-model-gateway";
import type { UiHandlerDeps } from "../deps.js";
type QiProfileId = MgQI.QualityIntelligenceTaskProfileId;
export type QiTestDesignSelection = {
    readonly kind: "baseline";
} | {
    readonly kind: "model";
    readonly modelId: string;
    readonly capability: ModelCapability;
};
/**
 * Resolve the test-design generation strategy.
 *
 * Order:
 * 1. Explicit configured chat model id, even when it lacks structured output.
 * 2. Cheapest configured chat model that advertises structured output.
 * 3. Cheapest configured chat model of any kind.
 * 4. Deterministic no-model baseline.
 */
export declare function resolveQiTestDesignSelection(deps: UiHandlerDeps, requested?: string): QiTestDesignSelection;
export type QiMultimodalSelection = {
    readonly kind: "unavailable";
} | {
    readonly kind: "model";
    readonly modelId: string;
    readonly capability: ModelCapability;
};
/**
 * Resolve the image-input (multimodal) model for a vision-augmented stage (Issue #810).
 *
 * Selection is capability-driven: the cheapest configured chat model that advertises
 * supportsImageInput is chosen by `selectConfiguredModel`. When no configured model offers
 * image input, this returns a TYPED "unavailable" so the caller degrades gracefully to the
 * deterministic IR-only baseline — never a silent text-model substitution that would pretend
 * to have seen the image. No model id is hard-coded.
 */
export declare function resolveQiMultimodalSelection(deps: UiHandlerDeps): QiMultimodalSelection;
/**
 * Resolve the model id to use for a given QI task profile. Never returns undefined; throws
 * QI_CAPABILITY_UNAVAILABLE when no configured model satisfies the profile requirements.
 */
export declare function selectModelForQiCapability(deps: UiHandlerDeps, profileId: QiProfileId, requested?: string): string;
export {};
//# sourceMappingURL=modelSelection.d.ts.map