import { Model, Types } from "mongoose";
import { Notification, NotificationDocument } from "./schemas/notification.schema";
import { UserDocument } from "./schemas/user.schema";
export declare class NotificationsService {
    private readonly notificationModel;
    private readonly userModel;
    constructor(notificationModel: Model<NotificationDocument>, userModel: Model<UserDocument>);
    create(payload: {
        userId: string;
        type: string;
        message: string;
        documentId?: string;
    }): Promise<import("mongoose").Document<unknown, {}, NotificationDocument, {}, import("mongoose").DefaultSchemaOptions> & Notification & import("mongoose").Document<Types.ObjectId, any, any, Record<string, any>, {}> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    } & {
        id: string;
    }>;
    notifyManagers(message: string, documentId: string): Promise<void>;
    notifyUser(userId: string, type: string, message: string, documentId: string): Promise<import("mongoose").Document<unknown, {}, NotificationDocument, {}, import("mongoose").DefaultSchemaOptions> & Notification & import("mongoose").Document<Types.ObjectId, any, any, Record<string, any>, {}> & Required<{
        _id: Types.ObjectId;
    }> & {
        __v: number;
    } & {
        id: string;
    }>;
    getForUser(userId: string): Promise<{
        id: string;
        type: string;
        message: string;
        documentId: string | null;
        read: boolean;
        createdAt: string;
    }[]>;
    getUnreadCount(userId: string): Promise<number>;
    markRead(id: string, userId: string): Promise<void>;
    markAllRead(userId: string): Promise<void>;
}
