export interface VisionEntity { id: string; sourcePath: string; hash: string; capturedAt: string; description: string; ocr?: string; tags: string[]; project: string; embedding?: number[]; } export declare class MultimodalVision { private ollamaModel; private ollamaBaseUrl; private initialized; init(): Promise; /** Ingest an image file. Returns the persisted VisionEntity. */ ingestImage(filePath: string, opts?: { project?: string; tags?: string[]; prompt?: string; }): Promise; /** Semantic search across stored image descriptions. */ search(query: string, topK?: number, project?: string): Promise; /** Recent ingests, newest first. */ recent(limit?: number, project?: string): Promise; /** True if a vision model was detected. */ hasVisionModel(): boolean; private describe; private appendIndex; private loadAll; } /** OCR stub. TODO: wire up tesseract.js or system tesseract for real OCR. * Returns null today; vision model + description handles text most of the time. */ export declare function ocrExtract(_filePath: string): Promise; export declare function getMultimodalVision(): MultimodalVision; export declare function resetMultimodalVisionForTests(): void; //# sourceMappingURL=multimodal-vision.d.ts.map