/**
 * Model capability resolution (P3b — A6).
 *
 * The only capability we care about today is **vision**: can the configured
 * inference model accept image input? Image captioning / OCR (the P3b indexing
 * pass) and the composer's vision attachments (P6) both gate on this.
 *
 * Source of truth, in order:
 *   1. pi-ai model metadata — `Model.input` is a `("text" | "image")[]`, so
 *      `input.includes('image')` is authoritative WHEN pi-ai knows the model.
 *   2. A **maintained fallback map** — pi-ai's generated metadata is missing or
 *      wrong for custom / gateway / newly-released models. The Studiograph
 *      Credits gateway in particular routes through its own client and is
 *      asserted vision-capable here (decision A6).
 *
 * Why a map and not "trust pi-ai or default false": defaulting unknown models
 * to false would silently disable captioning the moment a tenant points at a
 * model pi-ai hasn't catalogued yet — a quiet regression. The map lets us
 * assert capability for the providers we actually ship against.
 *
 * Note: vision *capability* is necessary but not sufficient for captioning.
 * The Credits gateway is vision-capable yet `completeSimple()` cannot reach it
 * (see asset-caption-service.ts) — that reachability gate is separate.
 */
/** Shape we read off a pi-ai model. Kept structural so tests can pass a stub. */
export interface VisionModelLike {
    input?: readonly string[];
}
/**
 * Does the model that pi-ai resolves for `(provider, modelId)` accept image
 * input? pi-ai metadata wins when present; otherwise the maintained fallback
 * map; otherwise `false` (conservative — captioning degrades to filename-only
 * rather than firing a vision call the model would reject).
 */
export declare function supportsVision(provider: string, modelId: string): boolean;
/**
 * Capability check against an already-resolved model object (e.g. one from
 * `getModel`/`studiographCreditsModel`). Falls back to the (provider, modelId)
 * map when the object carries no usable `input` array.
 */
export declare function modelSupportsVision(model: VisionModelLike | null | undefined, provider: string, modelId: string): boolean;
