// =============================================================================
// PROFILE INTERFACES (Wizard Steps 1-5)
// =============================================================================

import type {
  CompanySize,
  CompanyRole,
  DataCategory,
  DataSubject,
  DataVolume,
  HostingLocation,
  HostingModel,
  MultiTenancy,
  AuthMethodType,
  BackupFrequency,
  CIARating,
  ProtectionLevel,
} from './enums'

export interface CompanyProfile {
  id: string
  name: string
  industry: string
  size: CompanySize
  role: CompanyRole
  products: string[]
  dpoPerson: string | null
  dpoEmail: string | null
  itSecurityContact: string | null
}

export interface DataProfile {
  categories: DataCategory[]
  subjects: DataSubject[]
  hasSpecialCategories: boolean
  processesMinors: boolean
  dataVolume: DataVolume
  thirdCountryTransfers: boolean
  thirdCountryList: string[]
}

export interface CloudProvider {
  name: string
  location: HostingLocation
  certifications: string[]
}

export interface ArchitectureProfile {
  hostingModel: HostingModel
  hostingLocation: HostingLocation
  providers: CloudProvider[]
  multiTenancy: MultiTenancy
  hasSubprocessors: boolean
  subprocessorCount: number
  encryptionAtRest: boolean
  encryptionInTransit: boolean
}

export interface AuthMethod {
  type: AuthMethodType
  provider: string | null
}

export interface SecurityProfile {
  authMethods: AuthMethod[]
  hasMFA: boolean
  hasSSO: boolean
  hasIAM: boolean
  hasPAM: boolean
  hasEncryptionAtRest: boolean
  hasEncryptionInTransit: boolean
  hasLogging: boolean
  logRetentionDays: number
  hasBackup: boolean
  backupFrequency: BackupFrequency
  backupRetentionDays: number
  hasDRPlan: boolean
  rtoHours: number | null
  rpoHours: number | null
  hasVulnerabilityManagement: boolean
  hasPenetrationTests: boolean
  hasSecurityTraining: boolean
}

export interface CIAAssessment {
  confidentiality: CIARating
  integrity: CIARating
  availability: CIARating
  justification: string
}

export interface RiskProfile {
  ciaAssessment: CIAAssessment
  protectionLevel: ProtectionLevel
  specialRisks: string[]
  regulatoryRequirements: string[]
  hasHighRiskProcessing: boolean
  dsfaRequired: boolean
}
