import type { ModelMessage, LanguageModelV3 } from '@push.rocks/smartai';
import type {
  ISmartAiMistralOcrOptions,
  ISmartAiMistralOcrRecognizeOptions,
  ISmartAiOcrEngine,
  ISmartAiOcrResult,
  TSmartAiOcrImageMimeType,
} from '@push.rocks/smartai/ocr';

export interface ISmartOcrConstructorOptions {
  smartAiOcrEngine?: ISmartAiOcrEngine;
  mistralOcrOptions?: ISmartAiMistralOcrOptions;
}

export interface ISmartOcrImageAiOptions {
  mimeType: TSmartAiOcrImageMimeType;
  smartAiOcrEngine?: ISmartAiOcrEngine;
  mistralOcrOptions?: ISmartAiMistralOcrOptions;
  recognizeOptions?: ISmartAiMistralOcrRecognizeOptions;
}

export interface ISmartOcrPdfAiOptions {
  model: LanguageModelV3;
  systemMessage?: string;
  userMessage?: string;
  messageHistory?: ModelMessage[];
}

export type TSmartOcrAiResult<TRaw = unknown> = ISmartAiOcrResult<TRaw>;
