import { PrismaService } from '../prisma/prisma.service';
import { SettingsService } from '../settings/settings.service';
import { SendEmailDto } from './dto/send-email.dto';
import { SendSmsDto } from './dto/send-sms.dto';
export declare class NotificationsService {
    private prisma;
    private settingsService;
    private readonly logger;
    constructor(prisma: PrismaService, settingsService: SettingsService);
    private getHtmlWrapper;
    sendEmail(sendEmailDto: SendEmailDto): Promise<{
        success: boolean;
        provider: string;
        messageId: any;
        error?: undefined;
    } | {
        success: boolean;
        error: any;
        provider?: undefined;
        messageId?: undefined;
    }>;
    sendSms(sendSmsDto: SendSmsDto): Promise<{
        success: boolean;
        provider: string;
        status: string;
        error?: undefined;
    } | {
        success: boolean;
        error: any;
        provider?: undefined;
        status?: undefined;
    }>;
    getTemplates(): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
        type: string;
        subject: string | null;
        body: string;
        channel: string;
    }[]>;
    updateTemplate(type: string, data: {
        subject?: string;
        body: string;
        isActive: boolean;
        channel?: string;
    }): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        isActive: boolean;
        type: string;
        subject: string | null;
        body: string;
        channel: string;
    }>;
    parseTemplate(type: string, variables: Record<string, string>): Promise<{
        subject: string;
        body: string;
        channel: string;
    }>;
    sendInApp(userId: string, title: string, message: string, link?: string): Promise<{
        success: boolean;
        notification: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            type: string;
            link: string | null;
            message: string;
            userId: string;
            title: string;
            isRead: boolean;
        };
        error?: undefined;
    } | {
        success: boolean;
        error: any;
        notification?: undefined;
    }>;
    getUserNotifications(userId: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        type: string;
        link: string | null;
        message: string;
        userId: string;
        title: string;
        isRead: boolean;
    }[]>;
    markAsRead(id: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        type: string;
        link: string | null;
        message: string;
        userId: string;
        title: string;
        isRead: boolean;
    }>;
    dispatchNotification(type: string, to: string, variables: Record<string, string>, userId?: string): Promise<{
        success: boolean;
        provider: string;
        messageId: any;
        error?: undefined;
    } | {
        success: boolean;
        error: any;
        provider?: undefined;
        messageId?: undefined;
    } | {
        success: boolean;
        provider: string;
        status: string;
        error?: undefined;
    } | {
        success: boolean;
        error: any;
        provider?: undefined;
        status?: undefined;
    } | {
        success: boolean;
        notification: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            type: string;
            link: string | null;
            message: string;
            userId: string;
            title: string;
            isRead: boolean;
        };
        error?: undefined;
    } | {
        success: boolean;
        error: any;
        notification?: undefined;
    } | {
        success: boolean;
        message: string;
    }>;
}
