/**
 * Cloud-agnostic push notification interfaces.
 *
 * Provides a unified push API that works with
 * Firebase, APNS, Expo, or mock/log providers.
 */

export interface PushProvider {
  /** Send a single push notification. */
  send(notification: PushNotification): Promise<PushResult>;

  /** Send a batch of push notifications. */
  sendBatch(notifications: PushNotification[]): Promise<PushResult[]>;

  /** Check if the push provider is configured. */
  isConfigured(): boolean;
}

export interface PushNotification {
  deviceToken: string;
  platform: 'ios' | 'android' | 'web';
  title: string;
  body: string;
  data?: Record<string, string>;
  badge?: number;
  sound?: string;
  channelId?: string;
}

export interface PushResult {
  success: boolean;
  messageId?: string;
  error?: string;
}

export type PushProviderType = 'firebase' | 'expo' | 'mock';
