import { ContactImportJob, ImportDuplicateStrategy } from "@prisma/client";

export interface ColumnMapping {
  email: string;
  name?: string;
  phone?: string;
  tags?: string;
}

export interface CreateImportJobData {
  fileName: string;
  totalRows: number;
  createdById: string;
}

export interface UpdateImportJobMappingData {
  columnMapping: ColumnMapping;
  duplicateStrategy: ImportDuplicateStrategy;
  targetListId?: string;
}

export interface IncrementImportJobCountersData {
  processedRows: number;
  importedCount: number;
  updatedCount: number;
  skippedCount: number;
  errorCount: number;
}

export interface ContactImportJobsRepository {
  create(data: CreateImportJobData): Promise<ContactImportJob>;
  findById(id: string): Promise<ContactImportJob | null>;
  updateMapping(id: string, data: UpdateImportJobMappingData): Promise<ContactImportJob>;
  incrementCounters(id: string, data: IncrementImportJobCountersData): Promise<ContactImportJob>;
  markCompleted(id: string): Promise<ContactImportJob>;
}
