export interface GeoLocation {
  latitude: number;
  longitude: number;
  country: string;
  countryCode: string;
  region: string;
  city: string;
  timezone: string;
  source: 'ip' | 'client' | 'unknown';
}

export interface GeoDeviceContext {
  geo: GeoLocation | null;
  device: Record<string, unknown>;
  browser: Record<string, unknown>;
  os: Record<string, unknown>;
  client: {
    language?: string;
    languages?: string[];
  };
  ip?: string;
  userAgent: string;
  acceptLanguage?: string;
  requestedAt: string;
}

export interface LocalizationContext {
  locale: string;
  language: string;
  region: string | null;
  countryCode: string | null;
  timezone: string | null;
  source: 'geo' | 'accept-language' | 'client' | 'fallback';
}
