import { Types } from 'mongoose';
import { ModelsService } from 'src/models/models.service';
import { CommonService } from 'src/common/common.service';
import { EmailService } from 'src/common/services/email.service';
import { CreateBroadcastDto, GetBroadcastListDto } from './dto/broadcast.dto';
import { NotificationType } from './enums/notification-type.enum';
export declare class NotificationService {
    private readonly Model;
    private readonly CommonService;
    private readonly EmailService;
    constructor(Model: ModelsService, CommonService: CommonService, EmailService: EmailService);
    getNotificationsByUserId(page: number | undefined, limit: number | undefined, req: any): Promise<{
        unread_count: number;
        status: string;
        message: string;
        data: any[];
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
            hasNextPage: boolean;
            hasPrevPage: boolean;
        };
    }>;
    markAllAsRead(userId: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    getUnreadCount(userId: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    createBroadcast(dto: CreateBroadcastDto, adminId: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    processBroadcast(broadcastId: string): Promise<void>;
    getBroadcastList(queryDto: GetBroadcastListDto, adminId: string): Promise<{
        status: string;
        message: string;
        data: any[];
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
            hasNextPage: boolean;
            hasPrevPage: boolean;
        };
    }>;
    getBroadcastById(broadcastId: string, adminId: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    retryFailedBroadcast(broadcastId: string, adminId: string): Promise<{
        status: string;
        message: string;
        data: any;
    }>;
    notifyUser(params: {
        userId: Types.ObjectId | string;
        sentBy: Types.ObjectId | string;
        type: NotificationType;
        titleKey: string;
        messageKey: string;
        meta?: Record<string, any>;
    }): Promise<void>;
}
