import type { Queue } from 'bull';
import { ModelService } from '../model/model.service';
import { NotificationType, NotificationChannel } from '../common/enums';
import { Types } from 'mongoose';
import { ReminderTemplate } from '../model/schemas/reminder.schema';
export declare class NotificationService {
    private queue;
    private readonly model;
    private readonly logger;
    constructor(queue: Queue, model: ModelService);
    enqueueNotification(payload: {
        clientId: any;
        salonId?: string;
        reminderKey?: string;
        title?: string;
        type: NotificationType;
        channels: NotificationChannel[];
        message: string;
        delay?: number;
    }): Promise<void>;
    scheduleInactiveNotifications(salonId: any): Promise<number>;
    processOfferDistribution(offer: any): Promise<void>;
    broadcastPendingOffers(): Promise<number>;
    processTriggerOffers(): Promise<number>;
    scheduleAppointmentReminder(clientId: any, clientName: any, cfg: ReminderTemplate, appointmentDate: Date): Promise<void>;
    private calculateDelay;
    sendNewClientWelcome(clientId: string, salonId: string): Promise<boolean>;
    sendAppointmentReminders(salonId: string): Promise<number>;
    sendInactiveClientReminders(salonId: string): Promise<number>;
    createDefaultConfigs(salonId: any): Promise<{
        ok: boolean;
    }>;
    getDefaultConfigs(salonId: any): Promise<(import("mongoose").FlattenMaps<ReminderTemplate> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    getNotifications(salonId: string, filters?: {
        type?: string;
        status?: string;
    }): Promise<(import("mongoose").FlattenMaps<import("../model/schemas/notification-store.schema").NotificationStore> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    getNotificationById(id: string): Promise<(import("mongoose").FlattenMaps<import("../model/schemas/notification-store.schema").NotificationStore> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    }) | null>;
    markAllNotificationsAsRead(salonId: string): Promise<import("mongoose").UpdateWriteOpResult>;
    markNotificationAsRead(id: string): Promise<import("mongoose").UpdateWriteOpResult>;
}
