import 'package:flutter/material.dart';

/// Domain entity representing application settings.
class AppSettings {
  final ThemeMode themeMode;
  final bool notificationsEnabled;
  final bool soundEnabled;
  final bool hapticFeedback;
  final String? selectedTenantId;
  final String? selectedTenantName;
  final String language;
  final bool biometricEnabled;
  final String ttsVoice;
  final String ttsStyle;
  final String engineType;

  const AppSettings({
    this.themeMode = ThemeMode.dark,
    this.notificationsEnabled = true,
    this.soundEnabled = true,
    this.hapticFeedback = true,
    this.selectedTenantId,
    this.selectedTenantName,
    this.language = 'en',
    this.biometricEnabled = false,
    this.ttsVoice = 'coral',
    this.ttsStyle = '',
    this.engineType = 'claude_agent_sdk',
  });

  AppSettings copyWith({
    ThemeMode? themeMode,
    bool? notificationsEnabled,
    bool? soundEnabled,
    bool? hapticFeedback,
    String? selectedTenantId,
    String? selectedTenantName,
    String? language,
    bool? biometricEnabled,
    String? ttsVoice,
    String? ttsStyle,
    String? engineType,
  }) {
    return AppSettings(
      themeMode: themeMode ?? this.themeMode,
      notificationsEnabled: notificationsEnabled ?? this.notificationsEnabled,
      soundEnabled: soundEnabled ?? this.soundEnabled,
      hapticFeedback: hapticFeedback ?? this.hapticFeedback,
      selectedTenantId: selectedTenantId ?? this.selectedTenantId,
      selectedTenantName: selectedTenantName ?? this.selectedTenantName,
      language: language ?? this.language,
      biometricEnabled: biometricEnabled ?? this.biometricEnabled,
      ttsVoice: ttsVoice ?? this.ttsVoice,
      ttsStyle: ttsStyle ?? this.ttsStyle,
      engineType: engineType ?? this.engineType,
    );
  }
}
