/**
 * @ai-summary Type definitions for user preferences system
 * @ai-context Manages user settings including unit preferences
 */

export type UnitSystem = 'imperial' | 'metric';

export interface UserPreferences {
  id: string;
  userId: string;
  unitSystem: UnitSystem;
  currencyCode: string;
  timeZone: string;
  darkMode: boolean | null;
  createdAt: Date;
  updatedAt: Date;
}

export interface CreateUserPreferencesRequest {
  userId: string;
  unitSystem?: UnitSystem;
  currencyCode?: string;
  timeZone?: string;
  darkMode?: boolean | null;
}

export interface UpdateUserPreferencesRequest {
  unitSystem?: UnitSystem;
  currencyCode?: string;
  timeZone?: string;
  darkMode?: boolean | null;
}

export interface UserPreferencesResponse {
  id: string;
  userId: string;
  unitSystem: UnitSystem;
  currencyCode: string;
  timeZone: string;
  darkMode: boolean | null;
  createdAt: string;
  updatedAt: string;
}
