import { NotificationChannel } from '@prisma/client';
import { PrismaService } from '../../prisma/prisma.service';
import { SmtpEmailProvider, InAppProvider } from './providers/notification-provider.interface';
export interface SendNotificationParams {
    tenantId?: string | null;
    userId?: string | null;
    channel: NotificationChannel;
    template: string;
    recipient: string;
    subject?: string;
    body: string;
    metadata?: Record<string, unknown>;
}
export declare class NotificationsService {
    private readonly prisma;
    private readonly logger;
    private readonly providers;
    constructor(prisma: PrismaService, email: SmtpEmailProvider, inApp: InAppProvider);
    send(params: SendNotificationParams): Promise<{
        id: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.NotificationStatus;
        userId: string | null;
        tenantId: string | null;
        body: string;
        subject: string | null;
        recipient: string;
        channel: import(".prisma/client").$Enums.NotificationChannel;
        template: string;
        providerMessageId: string | null;
        errorMessage: string | null;
        metadata: import("@prisma/client/runtime/library").JsonValue | null;
        sentAt: Date | null;
        readAt: Date | null;
    }>;
    listForUser(userId: string, limit?: number): Promise<{
        id: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.NotificationStatus;
        userId: string | null;
        tenantId: string | null;
        body: string;
        subject: string | null;
        recipient: string;
        channel: import(".prisma/client").$Enums.NotificationChannel;
        template: string;
        providerMessageId: string | null;
        errorMessage: string | null;
        metadata: import("@prisma/client/runtime/library").JsonValue | null;
        sentAt: Date | null;
        readAt: Date | null;
    }[]>;
    markRead(userId: string, notificationId: string): Promise<import(".prisma/client").Prisma.BatchPayload>;
}
