import { DataSource } from "typeorm";
import { SendNotificationDto } from "./dto/send-notification.dto";
import { SaveFcmTokenDto } from "./dto/save-fcm-token.dto";
import { MarkReadDto } from "./dto/mark-read.dto";
import { FcmTokenRepository } from "./repositories/fcm-token.repository";
import { NotificationRepository } from "./repositories/notification.repository";
export declare class NotificationService {
    private readonly fcmTokenRepository;
    private readonly notificationRepository;
    private readonly dataSource;
    constructor(fcmTokenRepository: FcmTokenRepository, notificationRepository: NotificationRepository, dataSource: DataSource);
    sendNotification(dto: SendNotificationDto): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    createNotification(payload: {
        title: string;
        description: string;
        company_id: number;
        employee_id?: number;
        type?: string;
    }): Promise<import("./entities/notification.entity").Notification>;
    saveFcmToken(dto: SaveFcmTokenDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    markNotificationAsRead(dto: MarkReadDto, token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    sendAndSaveNotification(payload: {
        title: string;
        description: string;
        company_id: number;
        employee_id?: number;
        data?: Record<string, any>;
        type?: string;
    }): Promise<{
        success: boolean;
        tokens_sent: number;
    }>;
    sendAndSaveNotificationToMultiple(payload: {
        title: string;
        description: string;
        company_id: number;
        employee_ids: number[];
        data?: Record<string, any>;
        type?: string;
    }): Promise<{
        success: boolean;
        tokens_sent: any;
    }>;
    listNotifications(token: string, page?: number, limit?: number): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
}
