import type { ResultType } from '../../domain/enums'
import type { TradeOff, Risk, MissingDataItem } from '../../domain/match'

export type MatchCardVariant = 'compact' | 'expanded' | 'review' | 'compare-mini'

export type MatchCardActionType =
  | 'OPEN_DETAIL'
  | 'ADD_COMPARE'
  | 'SAVE_SHORTLIST'
  | 'SEND_REVIEW'
  | 'APPROVE'
  | 'REJECT'
  | 'REQUEST_DATA'

export interface MatchCardAction {
  id: string
  label: string
  actionType: MatchCardActionType
  variant?: 'primary' | 'secondary' | 'danger'
  disabled?: boolean
  onClick: () => void
}

export interface MatchCardReason {
  type: 'HARD_FACT' | 'SOFT_FACTOR' | 'STRATEGIC'
  label: string
  explanation: string
  score: number
}

export interface MatchCardViewModel {
  id: string
  title: string
  resultType: ResultType
  assetType?: string
  matchScore: number
  confidenceScore: number      // 0–1
  dataQualityScore: number     // 0–1
  locationLabel: string
  availabilityLabel?: string
  sourceLabel?: string
  externalUrl?: string
  reasons: MatchCardReason[]   // max 3: HARD_FACT, SOFT_FACTOR, STRATEGIC
  tradeoffs: TradeOff[]
  risks: Risk[]
  missingData: MissingDataItem[]
  actions: MatchCardAction[]
  disclaimer?: string          // required for FUTURE_AVAILABILITY
  explainabilitySummary?: string

  // States
  isSelected?: boolean
  isCompareSelected?: boolean
  isRestricted?: boolean
  isReviewRequired?: boolean
  isStaleData?: boolean
}
