import { DeviceToken, PushChannel } from '../entities/device-token.entity';

export interface IDeviceTokenRepository {
  findActiveByUserId(userId: string): Promise<DeviceToken[]>;
  findActiveByUserIds(userIds: string[]): Promise<DeviceToken[]>;
  upsertToken(data: Partial<DeviceToken>): Promise<DeviceToken>;
  deactivateToken(token: string): Promise<void>;
  deactivateAllForUser(userId: string): Promise<void>;
  countByChannel(): Promise<Array<{ channel: PushChannel; count: number }>>;
}

export const DEVICE_TOKEN_REPOSITORY = Symbol('IDeviceTokenRepository');
