import { StreamableFile } from '@nestjs/common';
import type { Response } from 'express';
import { AuditAssignReportService } from '../services/audit-assign-report.service';
import { AuditDetailReportService } from '../services/audit-detail-report.service';
import type { AuditDetailFilters } from '../services/audit-detail-report.service';
import { AuditReportFileService } from '../services/audit-report-file.service';
import { AuditReportExcelService } from '../services/audit-report-excel.service';
import { AuditReportPdfService } from '../services/audit-report-pdf.service';
import { AuditAssistantService } from '../services/audit-assistant.service';
import { PreviousNcService } from '../../previous-nc/services/previous-nc.service';
export declare class AuditReportController {
    private readonly assignReport;
    private readonly detailReport;
    private readonly fileService;
    private readonly excelService;
    private readonly pdfService;
    private readonly assistant;
    private readonly previousNc;
    private readonly logger;
    constructor(assignReport: AuditAssignReportService, detailReport: AuditDetailReportService, fileService: AuditReportFileService, excelService: AuditReportExcelService, pdfService: AuditReportPdfService, assistant: AuditAssistantService, previousNc: PreviousNcService);
    getAssign(): Promise<import("../services/audit-assign-report.service").AuditAssignReportResponse>;
    getDetail(q: AuditDetailFilters, req: any): Promise<{
        can_manage: boolean;
        rows: import("../services/audit-detail-report.service").AuditDetailRow[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
        summary: {
            total_audits: number;
            stage1_missing: number;
            stage2_missing: number;
            total_assigned: number;
            conducted_count: number;
            scheduled_count: number;
            total_completed: number;
            stage1_uploaded: number;
            stage2_uploaded: number;
            initial_count: number;
            initial_completed: number;
            surveillance_count: number;
            surveillance_completed: number;
            recert_count: number;
            recert_completed: number;
        };
        aging: {
            bucket_0_30: number;
            bucket_31_60: number;
            bucket_61_90: number;
            bucket_90_plus: number;
        };
    }>;
    transferAudit(body: {
        source: 'QRS' | 'TQS' | 'QRS & TQS';
        table?: string;
        record_id: number;
        from_auditor_id: number;
        to_user_id: number;
    }, req: any): Promise<{
        ok: boolean;
    }>;
    listAuditors(req: any): Promise<{
        user_id: number;
        name: string;
        email: string;
    }[]>;
    askAssistant(body: {
        message: string;
        history?: {
            role: 'user' | 'assistant';
            content: string;
        }[];
    }, req: any): Promise<{
        answer: string;
        download?: {
            format: "excel" | "pdf";
            filters: AuditDetailFilters;
        };
    }>;
    exportExcel(q: AuditDetailFilters, res: Response): Promise<StreamableFile>;
    exportPdf(q: AuditDetailFilters, res: Response): Promise<StreamableFile>;
    private filterSubtitle;
    getFileUrl(source: string, table: string, id: number, stage: number): Promise<{
        url: string;
        filename: string;
    }>;
    streamFile(source: string, table: string, id: number, stage: number, res: Response): Promise<StreamableFile>;
    private validSource;
    private validTable;
    private validStage;
}
