import { StreamableFile } from '@nestjs/common';
import type { Request, Response } from 'express';
import { PreviousNcService } from '../services/previous-nc.service';
import { PreviousNcPdfService } from '../services/previous-nc-pdf.service';
import { NcClosureService } from '../services/nc-closure.service';
import { ListPreviousNcsDto } from '../dto/list-previous-ncs.dto';
import { UpdatePreviousNcDto } from '../dto/update-previous-nc.dto';
import { AuditNcStatusExcelService } from '../services/audit-nc-status-excel.service';
import { AuditNcStatusPdfService } from '../services/audit-nc-status-pdf.service';
export declare class PreviousNcController {
    private readonly previousNcService;
    private readonly pdfService;
    private readonly closureService;
    private readonly ncExcel;
    private readonly ncPdf;
    private readonly logger;
    constructor(previousNcService: PreviousNcService, pdfService: PreviousNcPdfService, closureService: NcClosureService, ncExcel: AuditNcStatusExcelService, ncPdf: AuditNcStatusPdfService);
    private getCurrentUserId;
    getPaged(q: ListPreviousNcsDto, req: Request): Promise<{
        rows: import("../services/previous-nc.service").PreviousNcRowDto[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    getUsers(): Promise<import("../services/previous-nc.service").PreviousNcUserOptionDto[]>;
    createNew(dto: any, req: Request): Promise<{
        ok: true;
        nc_id: number;
        audit_id: number;
        findings_created: number;
    }>;
    resendClosureEmail(source: string, id: number, body: any, req: Request): Promise<{
        ok: true;
        sent_to: string;
    }>;
    sendEvidence(source: string, id: number, dto: {
        evidence_to?: string;
        evidence_cc?: string;
        evidence_bcc?: string;
    }, req: Request): Promise<{
        ok: true;
        sent_to: string;
        files_attached: number;
    }>;
    sendNcEmail(source: string, id: number, dto: any, req: Request): Promise<{
        ok: true;
        sent: string[];
    }>;
    uploadEntryEvidence(source: string, ncId: number, entryId: number, file: Express.Multer.File, req: Request): Promise<{
        ok: true;
        entry_id: number;
        document_path: string;
        filename: string;
        size: number;
        uploaded_at: string;
    }>;
    deleteEntry(source: string, ncId: number, entryId: number, req: Request): Promise<{
        ok: true;
        entry_id: number;
        deleted_file: boolean;
    }>;
    getEntryFile(source: string, ncId: number, entryId: number, index: string, res: Response): Promise<StreamableFile>;
    deleteEntryEvidence(source: string, ncId: number, entryId: number, req: Request): Promise<{
        ok: true;
        entry_id: number;
        deleted_file: boolean;
    }>;
    getClosure(source: string, ncId: number, req: Request): Promise<import("../services/nc-closure.service").ClosureResponse>;
    saveClosure(source: string, ncId: number, body: any, files: {
        signed_copy?: Express.Multer.File[];
        signature?: Express.Multer.File[];
    }, req: Request): Promise<{
        ok: true;
        is_finalized: boolean;
        rows_saved: number;
        entries_closed: number;
        merged_pdf_sha256?: string;
        merged_pdf_pages?: number;
        merged_pdf_content_hash?: string;
    }>;
    getClosureFile(source: string, ncId: number, kind: string, res: Response): Promise<StreamableFile>;
    aiDraft(body: {
        nc_type?: string;
        note: string;
    }): Promise<any>;
    deleteClosure(source: string, ncId: number, req: Request): Promise<{
        ok: true;
        deleted_rows: number;
    }>;
    auditAssignReport(req: Request): Promise<{
        rows: Array<{
            user_id: number;
            auditor: string;
            source: "QRS" | "TQS";
            total_assigned: number;
            stage1_uploaded: number;
            stage1_missing: number;
            stage2_uploaded: number;
            stage2_missing: number;
            initial: number;
            surveillance: number;
            recertification: number;
            months: Array<{
                month: string;
                total_assigned: number;
                stage1_uploaded: number;
                stage2_uploaded: number;
                initial: number;
                surveillance: number;
                recertification: number;
            }>;
        }>;
        totals: {
            total_assigned: number;
            stage1_uploaded: number;
            stage1_missing: number;
            stage2_uploaded: number;
            stage2_missing: number;
            initial: number;
            surveillance: number;
            recertification: number;
        };
    }>;
    exportNcStatusExcel(req: Request, q: any, res: Response): Promise<StreamableFile>;
    exportNcStatusPdf(req: Request, q: any, res: Response): Promise<StreamableFile>;
    private ncSubtitle;
    auditNcStatus(q: any, req: Request): Promise<{
        rows: Array<{
            source: "QRS" | "TQS";
            audit_kind: "client" | "surveillance" | "recertification";
            audit_id: number;
            company_name: string | null;
            audit_date: string | null;
            auditor_names: string[];
            nc_count: number;
            nc_status: "NC Raised" | "NC Pending";
        }>;
        totals: {
            total: number;
            raised: number;
            pending: number;
        };
        can_view_all: boolean;
    }>;
    listClosures(q: any, req: Request): Promise<any[]>;
    deleteFinalizedClosure(source: string, id: number, req: Request): Promise<{
        ok: true;
        reopened: boolean;
        deleted_rows: number;
    }>;
    getOne(source: string, id: string, req: Request): Promise<import("../services/previous-nc.service").PreviousNcDetailDto>;
    deleteNc(source: string, id: number, req: Request): Promise<{
        ok: true;
        deleted_id: number;
        deleted_entries: number;
    }>;
    update(source: string, id: number, dto: UpdatePreviousNcDto, req: Request): Promise<{
        ok: true;
        nc_id: number;
        source: "QRS" | "TQS" | "NEW";
        updated_fields: string[];
        updated_entries: number;
        new_remark_id: number | null;
        new_findings_created: number;
    }>;
    getPdf(source: string, id: string, req: Request, res: Response): Promise<void>;
    getAttendancePdf(source: string, id: string, req: Request, res: Response): Promise<void>;
    private validateSource;
    private validateId;
}
