import { HttpStatus } from '@nestjs/common';
import { PermissionUserContext } from '../../common/access-control/permission-context.types';
import { PermissionResolverService } from '../../common/access-control/permission-resolver.service';
import { DatabaseService, UploadService } from '../../config';
import { NotificationsService } from '../notifications/notifications.service';
import { createNoticeDto, noticeFilterDto, updateNoticeAcknowledgmentDto, updateNoticeDto } from './notice.dto';
export declare class NoticeService {
    private readonly db;
    private readonly uploadService;
    private readonly notificationService;
    private readonly permissionResolver;
    constructor(db: DatabaseService, uploadService: UploadService, notificationService: NotificationsService, permissionResolver: PermissionResolverService);
    private getPermissions;
    private buildPaginationDetails;
    private getNoticeSummary;
    private includeRelations;
    private ensureMemberIdsExist;
    private resolveTargetType;
    private buildAudienceFilter;
    private hasAudienceFilter;
    private ensureDepartmentIdsExist;
    private moveNoticeDocument;
    private buildWhereFilter;
    private getNoticesWithFullRelations;
    createNotice(data: createNoticeDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            title?: string;
            content?: string;
            document?: {
                file_name: string;
                original_name: string;
                file_size: number;
                mime_type: string;
            };
            status?: "draft" | "published" | "archived";
            priority?: "low" | "medium" | "high" | "critical";
            created_by?: string;
            published_at?: string;
            expire_at?: string;
            required_acknowledgment?: boolean;
            target_type?: "department" | "individual";
            departments?: {
                id: string;
                name: string;
                department_code: string;
            }[];
            recipients?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            up_acknowledgment?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            down_acknowledgment?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            created_at?: string;
            updated_at?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    getNotices(query: noticeFilterDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            title?: string;
            content?: string;
            document?: {
                file_name: string;
                original_name: string;
                file_size: number;
                mime_type: string;
            };
            status?: "draft" | "published" | "archived";
            priority?: "low" | "medium" | "high" | "critical";
            created_by?: string;
            published_at?: string;
            expire_at?: string;
            required_acknowledgment?: boolean;
            target_type?: "department" | "individual";
            departments?: {
                id: string;
                name: string;
                department_code: string;
            }[];
            recipients?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            up_acknowledgment?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            down_acknowledgment?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            created_at?: string;
            updated_at?: string;
        }[];
        message: string;
        status: HttpStatus;
        details: {
            summary: {
                total_notice: any;
                total_published: any;
                total_high_priority: any;
                total_acknowledge: any;
            };
            pagination: {
                total_items: number;
                total_pages: number;
                current_page: number;
                items_per_page: number;
                has_next_page: boolean;
                has_previous_page: boolean;
                next_page: number;
                previous_page: number;
            };
        };
    }>;
    getNoticeById(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            title?: string;
            content?: string;
            document?: {
                file_name: string;
                original_name: string;
                file_size: number;
                mime_type: string;
            };
            status?: "draft" | "published" | "archived";
            priority?: "low" | "medium" | "high" | "critical";
            created_by?: string;
            published_at?: string;
            expire_at?: string;
            required_acknowledgment?: boolean;
            target_type?: "department" | "individual";
            departments?: {
                id: string;
                name: string;
                department_code: string;
            }[];
            recipients?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            up_acknowledgment?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            down_acknowledgment?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            created_at?: string;
            updated_at?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    updateNotice(id: string, data: updateNoticeDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: {
            id?: string;
            title?: string;
            content?: string;
            document?: {
                file_name: string;
                original_name: string;
                file_size: number;
                mime_type: string;
            };
            status?: "draft" | "published" | "archived";
            priority?: "low" | "medium" | "high" | "critical";
            created_by?: string;
            published_at?: string;
            expire_at?: string;
            required_acknowledgment?: boolean;
            target_type?: "department" | "individual";
            departments?: {
                id: string;
                name: string;
                department_code: string;
            }[];
            recipients?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            up_acknowledgment?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            down_acknowledgment?: {
                id: string;
                employee_id: string;
                first_name: string;
                last_name?: string;
                nickname?: string;
                image?: any;
            }[];
            created_at?: string;
            updated_at?: string;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    updateAcknowledgeNotice(id: string, data: updateNoticeAcknowledgmentDto, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    deleteNotice(id: string, owner_id: string, ctx: PermissionUserContext): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
}
