import { NotificationsService } from './notifications.service';
import { Role } from '../common/roles/role.enum';
import { CreateNotificationDto } from './dto/create-notification.dto';
import { UpdateNotificationDto } from './dto/update-notification.dto';
export declare class NotificationsController {
    private readonly notificationsService;
    constructor(notificationsService: NotificationsService);
    send(dto: CreateNotificationDto, id: string, currentAyId?: string, file?: Express.Multer.File): Promise<import("./schemas/notification.schema").Notification & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>>;
    myFeed(id: string, role: Role, limit?: string, ayHeader?: string): Promise<any[]>;
    getUnreadCount(id: string, role: Role, ayHeader?: string): Promise<{
        count: number;
    }>;
    markAllAsRead(id: string, role: Role, ayHeader?: string): Promise<{
        message: string;
    }>;
    dismissAll(id: string, role: Role, ayHeader?: string): Promise<{
        message: string;
    }>;
    findAll(): Promise<(import("mongoose").FlattenMaps<import("./schemas/notification.schema").NotificationDocument> & Required<{
        _id: string;
    }>)[]>;
    filter(type?: string, status?: string, sentBy?: string, academicYearId?: string, classId?: string, sectionId?: string, q?: string, hasFile?: string, ayHeader?: string): Promise<(import("mongoose").FlattenMaps<import("./schemas/notification.schema").NotificationDocument> & Required<{
        _id: string;
    }>)[]>;
    getRecent(limit?: string, ayHeader?: string): Promise<(import("mongoose").FlattenMaps<import("./schemas/notification.schema").NotificationDocument> & Required<{
        _id: string;
    }>)[]>;
    getRecipients(id: string): Promise<{
        recipients: {
            type: "Student" | "Teacher";
            id: string;
            name: string;
            uniqueId: string;
        }[];
        total: number;
    }>;
    getFile(id: string, userId: string, role: Role, ayHeader?: string): Promise<{
        hasFile: boolean;
        fileUrl?: undefined;
        fileName?: undefined;
        fileType?: undefined;
        fileSize?: undefined;
    } | {
        hasFile: boolean;
        fileUrl: string;
        fileName: string | undefined;
        fileType: string | undefined;
        fileSize: number | undefined;
    }>;
    findOne(id: string): Promise<(import("mongoose").FlattenMaps<import("./schemas/notification.schema").NotificationDocument> & Required<{
        _id: string;
    }>) | null>;
    markAsRead(id: string, userId: string, role: Role, ayHeader?: string): Promise<{
        message: string;
    }>;
    dismiss(id: string, userId: string, role: Role, ayHeader?: string): Promise<{
        message: string;
    }>;
    update(id: string, dto: UpdateNotificationDto, currentAyId?: string, file?: Express.Multer.File): Promise<import("mongoose").FlattenMaps<import("./schemas/notification.schema").NotificationDocument> & Required<{
        _id: string;
    }>>;
    remove(id: string): Promise<{
        message: string;
    }>;
}
