import { Repository } from 'typeorm';
import { NotificationType } from '../../common/enums';
import { Notification } from '../../database/entities/notification.entity';
import { NotificationPreferences } from '../../database/entities/notification-preferences.entity';
import { NotificationDto, PaginatedNotificationsDto } from './dto/notification-response.dto';
import { PaginationDto } from '../../common/dto/pagination.dto';
export interface CreateNotificationInput {
    userId: string;
    title: string;
    body: string;
    type: NotificationType;
    entityId?: string;
}
export declare class NotificationsService {
    private readonly notificationRepo;
    private readonly notificationPrefsRepo;
    private readonly logger;
    constructor(notificationRepo: Repository<Notification>, notificationPrefsRepo: Repository<NotificationPreferences>);
    notify(input: CreateNotificationInput): Promise<void>;
    notifyMany(userIds: string[], input: Omit<CreateNotificationInput, 'userId'>): Promise<void>;
    list(userId: string, query: PaginationDto): Promise<PaginatedNotificationsDto>;
    markRead(notificationId: string, userId: string): Promise<NotificationDto>;
    markAllRead(userId: string): Promise<{
        message: string;
        count: number;
    }>;
    private toDto;
}
