import { Repository } from 'typeorm';
import { ClsService } from 'nestjs-cls';
import { NotificationEntity, NotificationKind } from '../../entities/notification.entity';
import { UserEntity } from '../../entities/user.entity';
import { RolePermissionEntity, ModuleName, AccessLevel } from '../../entities/role-permission.entity';
export interface CreateNotificationInput {
    user_id: string;
    kind: NotificationKind;
    title: string;
    message: string;
    link?: string | null;
    related_entity_type?: string | null;
    related_entity_id?: string | null;
}
export declare class NotificationService {
    private readonly repo;
    private readonly userRepo;
    private readonly rolePermRepo;
    private readonly cls;
    constructor(repo: Repository<NotificationEntity>, userRepo: Repository<UserEntity>, rolePermRepo: Repository<RolePermissionEntity>, cls: ClsService);
    private tenantId;
    create(input: CreateNotificationInput): Promise<NotificationEntity>;
    createForRoleWithAccess(module: ModuleName, minLevel: AccessLevel, template: Omit<CreateNotificationInput, 'user_id'>, excludeUserIds?: string[]): Promise<void>;
    listForCurrentUser(limit?: number): Promise<NotificationEntity[]>;
    unreadCount(): Promise<number>;
    markRead(id: string): Promise<void>;
    markAllRead(): Promise<void>;
}
