// Типы для элемента "Условия поверки" на основе новой API схемы

// Маппинг условия в ячейку
export interface ConditionMapping {
  conditionKey: string // ключ условия (temperature, humidity, etc.)
  conditionName: string // название условия для отображения
  cellIndex: number // индекс целевой ячейки
}

// Конфигурация элемента
export interface VerificationConditionsConfig {
  // Выбранная лаборатория (UUID)
  selectedLaboratoryId?: string
  // Выбранная дата
  selectedDate?: string
  // Маппинг условий в ячейки (включая дату поверки)
  conditionMappings?: ConditionMapping[]
  // Показывать ли единицы измерения
  showUnits?: boolean
  // Целевые ячейки
  targetCells?: any[]
  // Идентификатор для совместимости с TemplateElement
  id?: string
}

// Значение элемента
export interface VerificationConditionsValue {
  date: string // дата в формате YYYY-MM-DD
  conditions: Record<string, string> // условия поверки {temperature: "20", humidity: "50", ...}
}

// Тип условия из API
export interface ConditionType {
  id: string
  name: string
  unit: string
  created_at: string
  updated_at: string
  deleted_at: string | null
}

// Лаборатория из API
export interface Laboratory {
  id: string
  name: string
  condition_types: ConditionType[]
  created_at: string
  updated_at: string
  deleted_at: string | null
}

// Ежедневное условие из API
export interface DailyCondition {
  id: string
  laboratory_id: string
  measurement_date: string
  conditions: Record<string, any>
  created_at: string
  updated_at: string
  deleted_at: string | null
}

// Типы для API запросов/ответов
export interface GetLaboratoriesOutput {
  laboratories: Laboratory[]
}

export interface GetLaboratoryOutput {
  laboratory: Laboratory | null
}

export interface CreateDailyConditionInput {
  laboratory_id: string
  measurement_date: string
  conditions: Record<string, any>
}

export interface CreateDailyConditionOutput {
  id: string
}

export interface UpdateDailyConditionInput {
  laboratory_id?: string | null
  measurement_date?: string | null
  conditions?: Record<string, any> | null
}

export interface UpdateDailyConditionOutput {
  id: string
}

export interface GetDailyConditionsOutput {
  daily_conditions: DailyCondition[]
}

export interface GetDailyConditionOutput {
  daily_condition: DailyCondition | null
}

// Параметры фильтрации для получения ежедневных условий
export interface DailyConditionsFilters {
  laboratory_id?: string
  start_date?: string
  end_date?: string
}
