import type { FillFieldValue } from './types';

export interface FieldConflict {
  baseValue: FillFieldValue;
  documentValue: FillFieldValue;
  draftValue: FillFieldValue;
}

export interface DocumentReconciliation {
  conflict?: FieldConflict;
  documentValue: FillFieldValue;
  draftValue: FillFieldValue;
}

export function reconcileDocumentValue(
  baseValue: FillFieldValue,
  draftValue: FillFieldValue,
  documentValue: FillFieldValue,
): DocumentReconciliation {
  if (draftValue === baseValue || draftValue === documentValue) {
    return { documentValue, draftValue: documentValue };
  }
  if (documentValue === baseValue) {
    return { documentValue, draftValue };
  }
  return {
    conflict: { baseValue, documentValue, draftValue },
    documentValue,
    draftValue,
  };
}
