import { type FigmaSnapshotRecord } from "@oscharko-dev/keiko-evidence";
import type { UiHandlerDeps } from "../deps.js";
/** Loads an immutable Figma Snapshot evidence record by runId. Returns `undefined` when not found. */
export type FigmaSnapshotLoader = (snapshotRunId: string) => FigmaSnapshotRecord | undefined;
/**
 * Build the snapshot loader. Returns `undefined` when `deps.evidenceDir` is not configured so the
 * ingestion layer maps an attempted figma-snapshot source to QI_FIGMA_SNAPSHOT_UNAVAILABLE.
 */
export declare function makeFigmaSnapshotLoader(deps: UiHandlerDeps): FigmaSnapshotLoader | undefined;
/** The image-derived semantics a multimodal model recovered for one screen, as additive hints. */
export interface FigmaVisionScreenRequest {
    readonly screenId: string;
    /** The image side-file reference recorded in the snapshot (relative path + sha256). */
    readonly imageRelativePath: string;
    /** The deterministic baseline text, supplied so the model cross-checks rather than re-derives. */
    readonly baselineText: string;
}
/**
 * Produces additive vision hints for a screen, OR an empty list when vision is unavailable / failed.
 * The contract is total: it NEVER throws and NEVER returns a value that could override the IR — the
 * caller appends the hints below the baseline.
 */
export type FigmaVisionHintProvider = (request: FigmaVisionScreenRequest) => readonly string[];
/**
 * A raw vision call: given a screen request and the selected model id, return image-derived hint
 * strings. Injected so this module imports no provider SDK and stays testable. Absent in production
 * until the multimodal port lands (#810 follow-up) — its absence is exactly the IR-only path.
 */
export type FigmaVisionCall = (request: FigmaVisionScreenRequest, modelId: string) => readonly string[];
/**
 * Build a capability-routed vision hint provider. When no multimodal capability is configured (or no
 * `visionCall` is injected), every request returns `[]` — the deterministic IR-only baseline path.
 * When a multimodal model IS available, the provider routes the call through it; any thrown error or
 * garbage result is swallowed to `[]` so a misbehaving model can never break the run or override the
 * structural baseline. No model id is hard-coded — selection is via `resolveQiMultimodalSelection`.
 */
export declare function makeFigmaVisionHintProvider(deps: UiHandlerDeps, visionCall?: FigmaVisionCall): FigmaVisionHintProvider;
//# sourceMappingURL=figmaSnapshotAdapter.d.ts.map