import { request, type ApiResponse } from './request'

export type ConsoleDataType = 'REALTIME' | 'STEP' | 'CYCLE'
export type ConsoleDataOperation = 'EDIT' | 'IMPORT' | 'DELETE'

export { consoleImportColumns } from '../utils/consoleDataImport'

export interface ConsoleDataActionPayload {
  dataType: ConsoleDataType | 'ALL'
  operationType: ConsoleDataOperation
  scopeSummary: string
  identitySummary: string
  changesSummary: string | null
  reason: string
  overrides?: Array<{
    stableIdentity: string
    fieldValues: string | null
    deleted: boolean
  }>
}

interface ActionResponse extends ApiResponse { actionId: number | null; actionIds: number[]; importedCount: number; skippedCount: number }

export async function submitConsoleDataAction(testId: number, payload: ConsoleDataActionPayload) {
  return request<ActionResponse>(`/system/test/${testId}/console-data/actions`, {
    method: 'POST',
    body: JSON.stringify(payload),
  })
}
