import { Repository } from 'typeorm';
import { BaseService } from 'src/services/base.service';
import { NotificationEntity, NotificationItemEntity } from 'src/entities/notification.entity';
import { CreateNotificationDTO, NotificationItemQueryDTO, NotificationQueryDTO, NotificationToggleActiveStatusDTO } from 'src/dtos/notification.dto';
import { AuthService } from 'src/modules/authentication/services/authentication.service';
import { IDDto, SearchQueryDto } from '@serene-dev/la-nest-library';
import { UsersService } from 'src/modules/authentication/services/users.service';
import { IAuthParam } from 'src/modules/authentication/interfaces/authentication.interface';
export declare class NotificationService extends BaseService<NotificationEntity, NotificationQueryDTO> {
    protected readonly repo: Repository<NotificationEntity>;
    protected readonly repoChild: Repository<NotificationItemEntity>;
    authS: AuthService;
    userS: UsersService;
    static path: string;
    constructor(repo: Repository<NotificationEntity>, repoChild: Repository<NotificationItemEntity>, authS: AuthService, userS: UsersService);
    create(data: CreateNotificationDTO): Promise<NotificationEntity>;
    protected send(notification: NotificationEntity): Promise<NotificationEntity>;
    resend(notificationID: string, auth: IAuthParam): Promise<NotificationEntity>;
    update(id: string, data: Partial<NotificationEntity>): Promise<NotificationEntity>;
    toggleActiveStatus(notificationID: IDDto, payload: NotificationToggleActiveStatusDTO): Promise<NotificationEntity>;
    getMySentNotifications(authID: string, query: SearchQueryDto): Promise<import("@serene-dev/la-nest-library").ISearchResponse<NotificationEntity>>;
    getMyUnreadNotificationsCount(authID: string): Promise<{
        count: number;
    }>;
    calculateSeen(notificationID: string): Promise<import("typeorm").UpdateResult>;
}
export declare class NotificationItemService extends BaseService<NotificationItemEntity, NotificationItemQueryDTO> {
    protected readonly repo: Repository<NotificationItemEntity>;
    protected readonly repoParent: Repository<NotificationEntity>;
    authS: AuthService;
    static path: string;
    constructor(repo: Repository<NotificationItemEntity>, repoParent: Repository<NotificationEntity>, authS: AuthService);
    getById(id: string): Promise<NotificationItemEntity>;
    getMyReceivedNotifications(authID: string, query: SearchQueryDto): Promise<import("@serene-dev/la-nest-library").ISearchResponse<NotificationItemEntity>>;
    markAsRead(itemID: IDDto, authID: string): Promise<NotificationItemEntity>;
}
