/**
 * Datenpunktkatalog & Datenschutzinformationen-Generator
 * TypeScript Interfaces
 *
 * Dieses Modul definiert alle Typen für:
 * - Datenpunktkatalog (32 vordefinierte + kundenspezifische)
 * - Privacy Policy Generator
 * - Cookie Banner Configuration
 * - Retention Matrix
 */

// =============================================================================
// ENUMS
// =============================================================================

/**
 * Kategorien für Datenpunkte (18 Kategorien: A-R)
 */
export type DataPointCategory =
  | 'MASTER_DATA'         // A: Stammdaten
  | 'CONTACT_DATA'        // B: Kontaktdaten
  | 'AUTHENTICATION'      // C: Authentifizierungsdaten
  | 'CONSENT'             // D: Einwilligungsdaten
  | 'COMMUNICATION'       // E: Kommunikationsdaten
  | 'PAYMENT'             // F: Zahlungsdaten
  | 'USAGE_DATA'          // G: Nutzungsdaten
  | 'LOCATION'            // H: Standortdaten
  | 'DEVICE_DATA'         // I: Gerätedaten
  | 'MARKETING'           // J: Marketingdaten
  | 'ANALYTICS'           // K: Analysedaten
  | 'SOCIAL_MEDIA'        // L: Social-Media-Daten
  | 'HEALTH_DATA'         // M: Gesundheitsdaten (Art. 9 DSGVO)
  | 'EMPLOYEE_DATA'       // N: Beschäftigtendaten
  | 'CONTRACT_DATA'       // O: Vertragsdaten
  | 'LOG_DATA'            // P: Protokolldaten
  | 'AI_DATA'             // Q: KI-Daten
  | 'SECURITY'            // R: Sicherheitsdaten

/**
 * Risikoniveau für Datenpunkte
 */
export type RiskLevel = 'LOW' | 'MEDIUM' | 'HIGH'

/**
 * Rechtsgrundlagen nach DSGVO Art. 6 und Art. 9
 */
export type LegalBasis =
  | 'CONTRACT'            // Art. 6 Abs. 1 lit. b DSGVO
  | 'CONSENT'             // Art. 6 Abs. 1 lit. a DSGVO
  | 'EXPLICIT_CONSENT'    // Art. 9 Abs. 2 lit. a DSGVO (für Art. 9 Daten)
  | 'LEGITIMATE_INTEREST' // Art. 6 Abs. 1 lit. f DSGVO
  | 'LEGAL_OBLIGATION'    // Art. 6 Abs. 1 lit. c DSGVO
  | 'VITAL_INTERESTS'     // Art. 6 Abs. 1 lit. d DSGVO
  | 'PUBLIC_INTEREST'     // Art. 6 Abs. 1 lit. e DSGVO

/**
 * Aufbewahrungsfristen
 */
export type RetentionPeriod =
  | '24_HOURS'
  | '30_DAYS'
  | '90_DAYS'
  | '12_MONTHS'
  | '24_MONTHS'
  | '26_MONTHS'              // Google Analytics Standard
  | '36_MONTHS'
  | '48_MONTHS'
  | '6_YEARS'
  | '10_YEARS'
  | 'UNTIL_REVOCATION'
  | 'UNTIL_PURPOSE_FULFILLED'
  | 'UNTIL_ACCOUNT_DELETION'

/**
 * Cookie-Kategorien für Cookie-Banner
 */
export type CookieCategory =
  | 'ESSENTIAL'           // Technisch notwendig
  | 'PERFORMANCE'         // Analyse & Performance
  | 'PERSONALIZATION'     // Personalisierung
  | 'EXTERNAL_MEDIA'      // Externe Medien

/**
 * Export-Formate für Privacy Policy
 */
export type ExportFormat = 'HTML' | 'MARKDOWN' | 'PDF' | 'DOCX'

/**
 * Sprachen
 */
export type SupportedLanguage = 'de' | 'en'

// =============================================================================
// DATA POINT
// =============================================================================

/**
 * Lokalisierter Text (DE/EN)
 */
export interface LocalizedText {
  de: string
  en: string
}

/**
 * Einzelner Datenpunkt im Katalog
 */
export interface DataPoint {
  id: string
  code: string                              // z.B. "A1", "B2", "C3"
  category: DataPointCategory
  name: LocalizedText
  description: LocalizedText
  purpose: LocalizedText
  riskLevel: RiskLevel
  legalBasis: LegalBasis
  legalBasisJustification: LocalizedText
  retentionPeriod: RetentionPeriod
  retentionJustification: LocalizedText
  cookieCategory: CookieCategory | null     // null = kein Cookie
  isSpecialCategory: boolean                // Art. 9 DSGVO (sensible Daten)
  requiresExplicitConsent: boolean
  thirdPartyRecipients: string[]
  technicalMeasures: string[]
  tags: string[]
  isCustom?: boolean                        // Kundenspezifischer Datenpunkt
  isActive?: boolean                        // Aktiviert fuer diesen Tenant
}

/**
 * YAML-Struktur fuer Datenpunkte (fuer Loader)
 */
export interface DataPointYAML {
  id: string
  code: string
  category: string
  name_de: string
  name_en: string
  description_de: string
  description_en: string
  purpose_de: string
  purpose_en: string
  risk_level: string
  legal_basis: string
  legal_basis_justification_de: string
  legal_basis_justification_en: string
  retention_period: string
  retention_justification_de: string
  retention_justification_en: string
  cookie_category: string | null
  is_special_category: boolean
  requires_explicit_consent: boolean
  third_party_recipients: string[]
  technical_measures: string[]
  tags: string[]
}

// =============================================================================
// CATALOG & RETENTION MATRIX
// =============================================================================

/**
 * Gesamter Datenpunktkatalog eines Tenants
 */
export interface DataPointCatalog {
  id: string
  tenantId: string
  version: string
  dataPoints: DataPoint[]                   // Vordefinierte (32)
  customDataPoints: DataPoint[]             // Kundenspezifische
  retentionMatrix: RetentionMatrixEntry[]
  createdAt: Date
  updatedAt: Date
}

/**
 * Eintrag in der Retention Matrix
 */
export interface RetentionMatrixEntry {
  category: DataPointCategory
  categoryName: LocalizedText
  standardPeriod: RetentionPeriod
  legalBasis: string
  exceptions: RetentionException[]
}

/**
 * Ausnahme von der Standard-Loeschfrist
 */
export interface RetentionException {
  condition: LocalizedText
  period: RetentionPeriod
  reason: LocalizedText
}

// =============================================================================
// PRIVACY POLICY GENERATION
// =============================================================================

/**
 * Abschnitt in der Privacy Policy
 */
export interface PrivacyPolicySection {
  id: string
  order: number
  title: LocalizedText
  content: LocalizedText
  dataPointIds: string[]
  isRequired: boolean
  isGenerated: boolean                      // true = aus Datenpunkten generiert
}

/**
 * Unternehmensinfo fuer Privacy Policy
 */
export interface CompanyInfo {
  name: string
  address: string
  city: string
  postalCode: string
  country: string
  email: string
  phone?: string
  website?: string
  dpoName?: string                          // Datenschutzbeauftragter
  dpoEmail?: string
  dpoPhone?: string
  registrationNumber?: string               // Handelsregister
  vatId?: string                            // USt-IdNr
}

/**
 * Generierte Privacy Policy
 */
export interface GeneratedPrivacyPolicy {
  id: string
  tenantId: string
  language: SupportedLanguage
  sections: PrivacyPolicySection[]
  companyInfo: CompanyInfo
  generatedAt: Date
  version: string
  format: ExportFormat
  content?: string                          // Rendered content (HTML/MD)
}

/**
 * Optionen fuer Privacy Policy Generierung
 */
export interface PrivacyPolicyGenerationOptions {
  language: SupportedLanguage
  format: ExportFormat
  includeDataPoints: string[]               // Welche Datenpunkte einschliessen
  customSections?: PrivacyPolicySection[]   // Zusaetzliche Abschnitte
  styling?: PrivacyPolicyStyling
}

/**
 * Styling-Optionen fuer PDF/HTML Export
 */
export interface PrivacyPolicyStyling {
  primaryColor?: string
  fontFamily?: string
  fontSize?: number
  headerFontSize?: number
  includeTableOfContents?: boolean
  includeDateFooter?: boolean
  logoUrl?: string
}

// =============================================================================
// COOKIE BANNER CONFIG
// =============================================================================

/**
 * Einzelner Cookie in einer Kategorie
 */
export interface CookieInfo {
  name: string
  provider: string
  purpose: LocalizedText
  expiry: string
  type: 'FIRST_PARTY' | 'THIRD_PARTY'
}

/**
 * Cookie-Banner Kategorie
 */
export interface CookieBannerCategory {
  id: CookieCategory
  name: LocalizedText
  description: LocalizedText
  isRequired: boolean                       // Essentiell = required
  defaultEnabled: boolean
  dataPointIds: string[]                    // Verknuepfte Datenpunkte
  cookies: CookieInfo[]
}

/**
 * Styling fuer Cookie Banner
 */
export interface CookieBannerStyling {
  position: 'BOTTOM' | 'TOP' | 'CENTER'
  theme: 'LIGHT' | 'DARK' | 'CUSTOM'
  primaryColor?: string
  secondaryColor?: string
  textColor?: string
  backgroundColor?: string
  borderRadius?: number
  maxWidth?: number
}

/**
 * Texte fuer Cookie Banner
 */
export interface CookieBannerTexts {
  title: LocalizedText
  description: LocalizedText
  acceptAll: LocalizedText
  rejectAll: LocalizedText
  customize: LocalizedText
  save: LocalizedText
  privacyPolicyLink: LocalizedText
}

/**
 * Generierter Code fuer Cookie Banner
 */
export interface CookieBannerEmbedCode {
  html: string
  css: string
  js: string
  scriptTag: string                         // Fertiger Script-Tag zum Einbinden
}

/**
 * Vollstaendige Cookie Banner Konfiguration
 */
export interface CookieBannerConfig {
  id: string
  tenantId: string
  categories: CookieBannerCategory[]
  styling: CookieBannerStyling
  texts: CookieBannerTexts
  embedCode?: CookieBannerEmbedCode
  updatedAt: Date
}

// =============================================================================
// CONSENT MANAGEMENT
// =============================================================================

/**
 * Einzelne Einwilligung eines Nutzers
 */
export interface ConsentEntry {
  id: string
  userId: string
  dataPointId: string
  granted: boolean
  grantedAt: Date
  revokedAt?: Date
  ipAddress?: string
  userAgent?: string
  consentVersion: string
}

/**
 * Aggregierte Consent-Statistiken
 */
export interface ConsentStatistics {
  totalConsents: number
  activeConsents: number
  revokedConsents: number
  byCategory: Record<DataPointCategory, {
    total: number
    active: number
    revoked: number
  }>
  byLegalBasis: Record<LegalBasis, {
    total: number
    active: number
  }>
  conversionRate: number                    // Prozent der Nutzer mit Consent
}

// =============================================================================
// EINWILLIGUNGEN STATE & ACTIONS
// =============================================================================

/**
 * Aktiver Tab in der Einwilligungen-Ansicht
 */
export type EinwilligungenTab =
  | 'catalog'
  | 'privacy-policy'
  | 'cookie-banner'
  | 'retention'
  | 'consents'

/**
 * State fuer Einwilligungen-Modul
 */
export interface EinwilligungenState {
  // Data
  catalog: DataPointCatalog | null
  selectedDataPoints: string[]
  privacyPolicy: GeneratedPrivacyPolicy | null
  cookieBannerConfig: CookieBannerConfig | null
  companyInfo: CompanyInfo | null
  consentStatistics: ConsentStatistics | null

  // UI State
  activeTab: EinwilligungenTab
  isLoading: boolean
  isSaving: boolean
  error: string | null

  // Editor State
  editingDataPoint: DataPoint | null
  editingSection: PrivacyPolicySection | null

  // Preview
  previewLanguage: SupportedLanguage
  previewFormat: ExportFormat
}

/**
 * Actions fuer Einwilligungen-Reducer
 */
export type EinwilligungenAction =
  | { type: 'SET_CATALOG'; payload: DataPointCatalog }
  | { type: 'SET_SELECTED_DATA_POINTS'; payload: string[] }
  | { type: 'TOGGLE_DATA_POINT'; payload: string }
  | { type: 'ADD_CUSTOM_DATA_POINT'; payload: DataPoint }
  | { type: 'UPDATE_DATA_POINT'; payload: { id: string; data: Partial<DataPoint> } }
  | { type: 'DELETE_CUSTOM_DATA_POINT'; payload: string }
  | { type: 'SET_PRIVACY_POLICY'; payload: GeneratedPrivacyPolicy }
  | { type: 'SET_COOKIE_BANNER_CONFIG'; payload: CookieBannerConfig }
  | { type: 'UPDATE_COOKIE_BANNER_STYLING'; payload: Partial<CookieBannerStyling> }
  | { type: 'UPDATE_COOKIE_BANNER_TEXTS'; payload: Partial<CookieBannerTexts> }
  | { type: 'SET_COMPANY_INFO'; payload: CompanyInfo }
  | { type: 'SET_CONSENT_STATISTICS'; payload: ConsentStatistics }
  | { type: 'SET_ACTIVE_TAB'; payload: EinwilligungenTab }
  | { type: 'SET_LOADING'; payload: boolean }
  | { type: 'SET_SAVING'; payload: boolean }
  | { type: 'SET_ERROR'; payload: string | null }
  | { type: 'SET_EDITING_DATA_POINT'; payload: DataPoint | null }
  | { type: 'SET_EDITING_SECTION'; payload: PrivacyPolicySection | null }
  | { type: 'SET_PREVIEW_LANGUAGE'; payload: SupportedLanguage }
  | { type: 'SET_PREVIEW_FORMAT'; payload: ExportFormat }
  | { type: 'RESET_STATE' }

// =============================================================================
// HELPER TYPES
// =============================================================================

/**
 * Kategorie-Metadaten
 */
export interface CategoryMetadata {
  id: DataPointCategory
  code: string                              // A, B, C, etc.
  name: LocalizedText
  description: LocalizedText
  icon: string                              // Icon name
  color: string                             // Tailwind color class
}

/**
 * Mapping von Kategorie zu Metadaten (18 Kategorien)
 */
export const CATEGORY_METADATA: Record<DataPointCategory, CategoryMetadata> = {
  MASTER_DATA: {
    id: 'MASTER_DATA',
    code: 'A',
    name: { de: 'Stammdaten', en: 'Master Data' },
    description: { de: 'Grundlegende personenbezogene Daten', en: 'Basic personal data' },
    icon: 'User',
    color: 'blue'
  },
  CONTACT_DATA: {
    id: 'CONTACT_DATA',
    code: 'B',
    name: { de: 'Kontaktdaten', en: 'Contact Data' },
    description: { de: 'Kontaktinformationen und Erreichbarkeit', en: 'Contact information and availability' },
    icon: 'Mail',
    color: 'sky'
  },
  AUTHENTICATION: {
    id: 'AUTHENTICATION',
    code: 'C',
    name: { de: 'Authentifizierungsdaten', en: 'Authentication Data' },
    description: { de: 'Daten zur Benutzeranmeldung und Session-Verwaltung', en: 'Data for user login and session management' },
    icon: 'Key',
    color: 'slate'
  },
  CONSENT: {
    id: 'CONSENT',
    code: 'D',
    name: { de: 'Einwilligungsdaten', en: 'Consent Data' },
    description: { de: 'Einwilligungen und Datenschutzpraeferenzen', en: 'Consents and privacy preferences' },
    icon: 'CheckCircle',
    color: 'green'
  },
  COMMUNICATION: {
    id: 'COMMUNICATION',
    code: 'E',
    name: { de: 'Kommunikationsdaten', en: 'Communication Data' },
    description: { de: 'Kundenservice und Kommunikationsdaten', en: 'Customer service and communication data' },
    icon: 'MessageSquare',
    color: 'cyan'
  },
  PAYMENT: {
    id: 'PAYMENT',
    code: 'F',
    name: { de: 'Zahlungsdaten', en: 'Payment Data' },
    description: { de: 'Rechnungs- und Zahlungsinformationen', en: 'Billing and payment information' },
    icon: 'CreditCard',
    color: 'amber'
  },
  USAGE_DATA: {
    id: 'USAGE_DATA',
    code: 'G',
    name: { de: 'Nutzungsdaten', en: 'Usage Data' },
    description: { de: 'Daten zur Nutzung des Dienstes', en: 'Data about service usage' },
    icon: 'Activity',
    color: 'violet'
  },
  LOCATION: {
    id: 'LOCATION',
    code: 'H',
    name: { de: 'Standortdaten', en: 'Location Data' },
    description: { de: 'Geografische Standortinformationen', en: 'Geographic location information' },
    icon: 'MapPin',
    color: 'emerald'
  },
  DEVICE_DATA: {
    id: 'DEVICE_DATA',
    code: 'I',
    name: { de: 'Geraetedaten', en: 'Device Data' },
    description: { de: 'Technische Geraete- und Browserinformationen', en: 'Technical device and browser information' },
    icon: 'Smartphone',
    color: 'zinc'
  },
  MARKETING: {
    id: 'MARKETING',
    code: 'J',
    name: { de: 'Marketingdaten', en: 'Marketing Data' },
    description: { de: 'Marketing- und Werbedaten', en: 'Marketing and advertising data' },
    icon: 'Megaphone',
    color: 'purple'
  },
  ANALYTICS: {
    id: 'ANALYTICS',
    code: 'K',
    name: { de: 'Analysedaten', en: 'Analytics Data' },
    description: { de: 'Web-Analyse und Nutzungsstatistiken', en: 'Web analytics and usage statistics' },
    icon: 'BarChart3',
    color: 'indigo'
  },
  SOCIAL_MEDIA: {
    id: 'SOCIAL_MEDIA',
    code: 'L',
    name: { de: 'Social-Media-Daten', en: 'Social Media Data' },
    description: { de: 'Daten aus sozialen Netzwerken', en: 'Data from social networks' },
    icon: 'Share2',
    color: 'pink'
  },
  HEALTH_DATA: {
    id: 'HEALTH_DATA',
    code: 'M',
    name: { de: 'Gesundheitsdaten', en: 'Health Data' },
    description: { de: 'Besondere Kategorie nach Art. 9 DSGVO - Gesundheitsbezogene Daten', en: 'Special category under Art. 9 GDPR - Health-related data' },
    icon: 'Heart',
    color: 'rose'
  },
  EMPLOYEE_DATA: {
    id: 'EMPLOYEE_DATA',
    code: 'N',
    name: { de: 'Beschaeftigtendaten', en: 'Employee Data' },
    description: { de: 'Personalverwaltung und Arbeitnehmerinformationen (BDSG § 26)', en: 'HR management and employee information' },
    icon: 'Briefcase',
    color: 'orange'
  },
  CONTRACT_DATA: {
    id: 'CONTRACT_DATA',
    code: 'O',
    name: { de: 'Vertragsdaten', en: 'Contract Data' },
    description: { de: 'Vertragsinformationen und -dokumente', en: 'Contract information and documents' },
    icon: 'FileText',
    color: 'teal'
  },
  LOG_DATA: {
    id: 'LOG_DATA',
    code: 'P',
    name: { de: 'Protokolldaten', en: 'Log Data' },
    description: { de: 'System- und Zugriffsprotokolle', en: 'System and access logs' },
    icon: 'FileCode',
    color: 'gray'
  },
  AI_DATA: {
    id: 'AI_DATA',
    code: 'Q',
    name: { de: 'KI-Daten', en: 'AI Data' },
    description: { de: 'KI-Interaktionen, Prompts und generierte Inhalte (AI Act)', en: 'AI interactions, prompts and generated content (AI Act)' },
    icon: 'Bot',
    color: 'fuchsia'
  },
  SECURITY: {
    id: 'SECURITY',
    code: 'R',
    name: { de: 'Sicherheitsdaten', en: 'Security Data' },
    description: { de: 'Sicherheitsrelevante Daten und Vorfallberichte', en: 'Security-relevant data and incident reports' },
    icon: 'Shield',
    color: 'red'
  }
}

/**
 * Mapping von Rechtsgrundlage zu Beschreibung
 */
export const LEGAL_BASIS_INFO: Record<LegalBasis, { article: string; name: LocalizedText; description: LocalizedText }> = {
  CONTRACT: {
    article: 'Art. 6 Abs. 1 lit. b DSGVO',
    name: { de: 'Vertragserfuellung', en: 'Contract Performance' },
    description: {
      de: 'Die Verarbeitung ist erforderlich fuer die Erfuellung eines Vertrags oder zur Durchfuehrung vorvertraglicher Massnahmen.',
      en: 'Processing is necessary for the performance of a contract or pre-contractual measures.'
    }
  },
  CONSENT: {
    article: 'Art. 6 Abs. 1 lit. a DSGVO',
    name: { de: 'Einwilligung', en: 'Consent' },
    description: {
      de: 'Die betroffene Person hat ihre Einwilligung zu der Verarbeitung gegeben.',
      en: 'The data subject has given consent to the processing.'
    }
  },
  EXPLICIT_CONSENT: {
    article: 'Art. 9 Abs. 2 lit. a DSGVO',
    name: { de: 'Ausdrueckliche Einwilligung', en: 'Explicit Consent' },
    description: {
      de: 'Die betroffene Person hat ausdruecklich in die Verarbeitung besonderer Kategorien personenbezogener Daten (Art. 9 DSGVO) eingewilligt. Dies betrifft Gesundheitsdaten, biometrische Daten, Daten zur ethnischen Herkunft, politische Meinungen, religiöse Überzeugungen etc.',
      en: 'The data subject has given explicit consent to the processing of special categories of personal data (Art. 9 GDPR). This includes health data, biometric data, racial or ethnic origin, political opinions, religious beliefs, etc.'
    }
  },
  LEGITIMATE_INTEREST: {
    article: 'Art. 6 Abs. 1 lit. f DSGVO',
    name: { de: 'Berechtigtes Interesse', en: 'Legitimate Interest' },
    description: {
      de: 'Die Verarbeitung ist zur Wahrung berechtigter Interessen des Verantwortlichen erforderlich.',
      en: 'Processing is necessary for legitimate interests pursued by the controller.'
    }
  },
  LEGAL_OBLIGATION: {
    article: 'Art. 6 Abs. 1 lit. c DSGVO',
    name: { de: 'Rechtliche Verpflichtung', en: 'Legal Obligation' },
    description: {
      de: 'Die Verarbeitung ist zur Erfuellung einer rechtlichen Verpflichtung erforderlich.',
      en: 'Processing is necessary for compliance with a legal obligation.'
    }
  },
  VITAL_INTERESTS: {
    article: 'Art. 6 Abs. 1 lit. d DSGVO',
    name: { de: 'Lebenswichtige Interessen', en: 'Vital Interests' },
    description: {
      de: 'Die Verarbeitung ist erforderlich, um lebenswichtige Interessen der betroffenen Person oder einer anderen natuerlichen Person zu schuetzen.',
      en: 'Processing is necessary to protect the vital interests of the data subject or another natural person.'
    }
  },
  PUBLIC_INTEREST: {
    article: 'Art. 6 Abs. 1 lit. e DSGVO',
    name: { de: 'Oeffentliches Interesse', en: 'Public Interest' },
    description: {
      de: 'Die Verarbeitung ist fuer die Wahrnehmung einer Aufgabe erforderlich, die im oeffentlichen Interesse liegt oder in Ausuebung oeffentlicher Gewalt erfolgt.',
      en: 'Processing is necessary for the performance of a task carried out in the public interest or in the exercise of official authority.'
    }
  }
}

/**
 * Mapping von Aufbewahrungsfrist zu Beschreibung
 */
export const RETENTION_PERIOD_INFO: Record<RetentionPeriod, { label: LocalizedText; days: number | null }> = {
  '24_HOURS': { label: { de: '24 Stunden', en: '24 Hours' }, days: 1 },
  '30_DAYS': { label: { de: '30 Tage', en: '30 Days' }, days: 30 },
  '90_DAYS': { label: { de: '90 Tage', en: '90 Days' }, days: 90 },
  '12_MONTHS': { label: { de: '12 Monate', en: '12 Months' }, days: 365 },
  '24_MONTHS': { label: { de: '24 Monate', en: '24 Months' }, days: 730 },
  '26_MONTHS': { label: { de: '26 Monate (Google Analytics)', en: '26 Months (Google Analytics)' }, days: 790 },
  '36_MONTHS': { label: { de: '36 Monate', en: '36 Months' }, days: 1095 },
  '48_MONTHS': { label: { de: '48 Monate', en: '48 Months' }, days: 1460 },
  '6_YEARS': { label: { de: '6 Jahre', en: '6 Years' }, days: 2190 },
  '10_YEARS': { label: { de: '10 Jahre', en: '10 Years' }, days: 3650 },
  'UNTIL_REVOCATION': { label: { de: 'Bis Widerruf', en: 'Until Revocation' }, days: null },
  'UNTIL_PURPOSE_FULFILLED': { label: { de: 'Bis Zweckerfuellung', en: 'Until Purpose Fulfilled' }, days: null },
  'UNTIL_ACCOUNT_DELETION': { label: { de: 'Bis Kontoschliessung', en: 'Until Account Deletion' }, days: null }
}

/**
 * Spezielle Hinweise für Art. 9 DSGVO Kategorien
 */
export interface Article9Warning {
  title: LocalizedText
  description: LocalizedText
  requirements: LocalizedText[]
}

export const ARTICLE_9_WARNING: Article9Warning = {
  title: {
    de: 'Besondere Kategorie personenbezogener Daten (Art. 9 DSGVO)',
    en: 'Special Category of Personal Data (Art. 9 GDPR)'
  },
  description: {
    de: 'Die Verarbeitung dieser Daten unterliegt besonderen Anforderungen nach Art. 9 DSGVO. Diese Daten sind besonders schuetzenswert.',
    en: 'Processing of this data is subject to special requirements under Art. 9 GDPR. This data requires special protection.'
  },
  requirements: [
    {
      de: 'Ausdrueckliche Einwilligung erforderlich (Art. 9 Abs. 2 lit. a DSGVO)',
      en: 'Explicit consent required (Art. 9(2)(a) GDPR)'
    },
    {
      de: 'Separate Einwilligungserklaerung im UI notwendig',
      en: 'Separate consent declaration required in UI'
    },
    {
      de: 'Hoehere Dokumentationspflichten',
      en: 'Higher documentation requirements'
    },
    {
      de: 'Spezielle Loeschverfahren erforderlich',
      en: 'Special deletion procedures required'
    },
    {
      de: 'Datenschutz-Folgenabschaetzung (DSFA) empfohlen',
      en: 'Data Protection Impact Assessment (DPIA) recommended'
    }
  ]
}

/**
 * Spezielle Hinweise für Beschäftigtendaten (BDSG § 26)
 */
export interface EmployeeDataWarning {
  title: LocalizedText
  description: LocalizedText
  requirements: LocalizedText[]
}

export const EMPLOYEE_DATA_WARNING: EmployeeDataWarning = {
  title: {
    de: 'Beschaeftigtendaten (BDSG § 26)',
    en: 'Employee Data (BDSG § 26)'
  },
  description: {
    de: 'Die Verarbeitung von Beschaeftigtendaten unterliegt besonderen Anforderungen nach § 26 BDSG.',
    en: 'Processing of employee data is subject to special requirements under § 26 BDSG (German Federal Data Protection Act).'
  },
  requirements: [
    {
      de: 'Aufbewahrungspflichten fuer Lohnunterlagen (6-10 Jahre)',
      en: 'Retention obligations for payroll records (6-10 years)'
    },
    {
      de: 'Betriebsrat-Beteiligung ggf. erforderlich',
      en: 'Works council involvement may be required'
    },
    {
      de: 'Verarbeitung nur fuer Zwecke des Beschaeftigungsverhaeltnisses',
      en: 'Processing only for employment purposes'
    },
    {
      de: 'Besondere Vertraulichkeit bei Gesundheitsdaten',
      en: 'Special confidentiality for health data'
    }
  ]
}

/**
 * Spezielle Hinweise für KI-Daten (AI Act)
 */
export interface AIDataWarning {
  title: LocalizedText
  description: LocalizedText
  requirements: LocalizedText[]
}

export const AI_DATA_WARNING: AIDataWarning = {
  title: {
    de: 'KI-Daten (AI Act)',
    en: 'AI Data (AI Act)'
  },
  description: {
    de: 'Die Verarbeitung von KI-bezogenen Daten unterliegt den Transparenzpflichten des AI Acts.',
    en: 'Processing of AI-related data is subject to AI Act transparency requirements.'
  },
  requirements: [
    {
      de: 'Transparenzpflichten bei KI-Verarbeitung',
      en: 'Transparency obligations for AI processing'
    },
    {
      de: 'Kennzeichnung von KI-generierten Inhalten',
      en: 'Labeling of AI-generated content'
    },
    {
      de: 'Dokumentation der KI-Modell-Nutzung',
      en: 'Documentation of AI model usage'
    },
    {
      de: 'Keine Verwendung fuer unerlaubtes Training ohne Einwilligung',
      en: 'No use for unauthorized training without consent'
    }
  ]
}

/**
 * Risk Level Styling
 */
export const RISK_LEVEL_STYLING: Record<RiskLevel, { label: LocalizedText; color: string; bgColor: string }> = {
  LOW: {
    label: { de: 'Niedrig', en: 'Low' },
    color: 'text-green-700',
    bgColor: 'bg-green-100'
  },
  MEDIUM: {
    label: { de: 'Mittel', en: 'Medium' },
    color: 'text-yellow-700',
    bgColor: 'bg-yellow-100'
  },
  HIGH: {
    label: { de: 'Hoch', en: 'High' },
    color: 'text-red-700',
    bgColor: 'bg-red-100'
  }
}
