import type { CanonicalFieldRole } from './canonical-model'; export type RecognitionConfidenceLevel = 'high' | 'medium' | 'low' | 'unknown'; export type RecognitionDecisionSource = 'automatic' | 'user-confirmed' | 'fallback'; export interface RecognitionEvidence { signal: string; message: string; contribution: number; } export interface RecognitionConfidence { level: RecognitionConfidenceLevel; score: number; reasons: string[]; } export interface ToolCandidateRecognition { toolId: string; toolName: string; confidence: RecognitionConfidence; evidence: RecognitionEvidence[]; } export interface SourceRecognition { selected: ToolCandidateRecognition; candidates: ToolCandidateRecognition[]; decisionSource: RecognitionDecisionSource; requiresConfirmation: boolean; } export interface TableRecognition { tableId: string; tableIndex: number; tableName: string; selected: boolean; confidence: RecognitionConfidence; evidence: RecognitionEvidence[]; decisionSource: RecognitionDecisionSource; requiresConfirmation: boolean; } export interface FieldRoleAlternative { role: CanonicalFieldRole; confidence: RecognitionConfidence; } export interface FieldRoleRecognition { tableId: string; tableIndex: number; columnIndex: number; sourceHeader: string; proposedRole: CanonicalFieldRole | null; appliedRole: CanonicalFieldRole; alternatives: FieldRoleAlternative[]; confidence: RecognitionConfidence; evidence: RecognitionEvidence[]; decisionSource: RecognitionDecisionSource; requiresConfirmation: boolean; } export interface ImportRecognitionResult { version: 1; source: SourceRecognition; tables: TableRecognition[]; fields: FieldRoleRecognition[]; } export interface RecognitionOverrides { sourceTool?: { toolId: string; toolName: string }; tableSelections?: Record; fieldRoles?: Array<{ tableId: string; columnIndex: number; role: CanonicalFieldRole; }>; candidateFieldRoles?: Array<{ decisionId: string; role: CanonicalFieldRole; }>; }