// Type declarations for untyped modules

declare module 'xml2js' {
  export function parseStringPromise(
    xmlString: string,
    options?: any
  ): Promise<any>;
}

// Crypto for React Native
interface Crypto {
  randomUUID(): string;
}

declare global {
  var crypto: Crypto | undefined;
}

// Notification Types
export enum NotificationType {
  NEW_ARTICLE = 'NEW_ARTICLE',
  EPISODE_RELEASE = 'EPISODE_RELEASE',
  CUSTOM_ALERT = 'CUSTOM_ALERT',
  UPGRADE_PROMO = 'UPGRADE_PROMO',
}

export interface NotificationConfig {
  id: string;
  type: NotificationType;
  title: string;
  body: string;
  data: Record<string, unknown>;
  urgency?: 'normal' | 'high';
  sound?: string;
  badge?: number;
  category?: string;
  threadId?: string;
}

export interface PushNotificationConfig {
  enabled: boolean;
  notificationTypes: NotificationType[];
  foreground: NotificationConfig;
  critical: NotificationConfig;
  alert: NotificationConfig;
  badge: NotificationConfig;
  sound: NotificationConfig;
  vibration: NotificationConfig;
}

// Account Settings
export interface AccountSettings {
  email: string;
  notificationsEnabled: boolean;
  privacy: 'public' | 'private' | 'anonymous';
  language: string;
  timezone: string;
  theme: 'system' | 'light' | 'dark';
}

export {};
