/**
 * Consent SDK Types — Core: categories, state, input
 */

// =============================================================================
// Consent Categories
// =============================================================================

/**
 * Standard-Consent-Kategorien nach IAB TCF 2.2
 */
export type ConsentCategory =
  | 'essential'   // Technisch notwendig (TTDSG § 25 Abs. 2)
  | 'functional'  // Personalisierung, Komfortfunktionen
  | 'analytics'   // Anonyme Nutzungsanalyse
  | 'marketing'   // Werbung, Retargeting
  | 'social';     // Social Media Plugins

/**
 * Consent-Status pro Kategorie
 */
export type ConsentCategories = Record<ConsentCategory, boolean>;

/**
 * Consent-Status pro Vendor
 */
export type ConsentVendors = Record<string, boolean>;

// =============================================================================
// Consent State
// =============================================================================

/**
 * Aktueller Consent-Zustand
 */
export interface ConsentState {
  /** Consent pro Kategorie */
  categories: ConsentCategories;

  /** Consent pro Vendor (optional, für granulare Kontrolle) */
  vendors: ConsentVendors;

  /** Zeitstempel der letzten Aenderung */
  timestamp: string;

  /** SDK-Version bei Erstellung */
  version: string;

  /** Eindeutige Consent-ID vom Backend */
  consentId?: string;

  /** Ablaufdatum */
  expiresAt?: string;

  /** IAB TCF String (falls aktiviert) */
  tcfString?: string;
}

/**
 * Minimaler Consent-Input fuer setConsent()
 */
export type ConsentInput = Partial<ConsentCategories> | {
  categories?: Partial<ConsentCategories>;
  vendors?: ConsentVendors;
};
