/**
 * Per-model overrides remembered across sessions so switching models in
 * the UI does not drag a wrong global setting along. Today the only
 * tracked field is `contextMaxTokens` (cycle 18); the structure keeps
 * room for future per-model fields like `validationProfile` or
 * `pairedVisionModel` without a schema rewrite.
 *
 * Profiles are scoped to the project (.harness/model-profiles.json) and
 * are missing-file friendly — every reader returns an empty map when no
 * profiles have been recorded.
 */
export interface ModelProfile {
    /**
     * Model-specific contextMaxTokens. Same semantics as the global
     * setting: 0 means auto-detect; >0 caps the detected window.
     */
    contextMaxTokens?: number;
    /**
     * Output validation profile to apply when this model is the active
     * chat model. Examples: 'coding-answer', 'oracle-prime'. Empty/unset
     * means "use whatever is globally configured".
     */
    validationProfile?: string;
    /**
     * Vision model to pair with this chat model when the user attaches
     * an image. Useful when a strong text model has no vision capability
     * and you want a specific multimodal companion (e.g. llava:latest)
     * regardless of the global vision setting.
     */
    pairedVisionModel?: string;
}
export interface ModelProfileStore {
    profiles: Record<string, ModelProfile>;
}
export declare function loadModelProfiles(projectDir: string): Promise<ModelProfileStore>;
export declare function saveModelProfiles(projectDir: string, store: ModelProfileStore): Promise<void>;
export declare function getModelProfile(projectDir: string, model: string): Promise<ModelProfile | undefined>;
export declare function setModelProfileField<K extends keyof ModelProfile>(projectDir: string, model: string, field: K, value: ModelProfile[K] | undefined): Promise<ModelProfileStore>;
//# sourceMappingURL=modelProfiles.d.ts.map