import { DataSource } from 'typeorm';
import { AuditType } from '../shared/audit-query.helper';
export interface AuditDetailFilters {
    source?: 'QRS' | 'TQS' | 'QRS & TQS' | 'all';
    audit_type?: AuditType | 'all';
    year?: string;
    month?: string;
    report_status?: 's1_missing' | 's2_missing' | 's1_uploaded' | 's2_uploaded' | 'all';
    phase?: 'conducted' | 'upcoming' | 'all';
    auditor?: string;
    search?: string;
    sort?: 'audit_date' | 'client' | 'auditor' | 'type';
    dir?: 'asc' | 'desc';
    page?: number;
    limit?: number;
    viewerUserId?: number;
}
export interface AuditDetailRow {
    record_id: number;
    source: 'QRS' | 'TQS' | 'QRS & TQS';
    table: string;
    client_name: string | null;
    audit_date: string | null;
    year: string | null;
    month: string | null;
    audit_type: AuditType;
    stage1_uploaded: boolean;
    stage1_path: string | null;
    stage2_uploaded: boolean;
    stage2_path: string | null;
    attendance_uploaded: boolean;
    attendance_path: string | null;
    support_uploaded: boolean;
    support_path: string | null;
    auditor_id: number;
    auditor: string;
    age_days: number | null;
    conducted: boolean;
}
export interface AuditDetailResponse {
    rows: 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;
    };
}
export declare class AuditDetailReportService {
    private readonly qrs;
    private readonly tqs;
    private readonly scheme;
    private readonly logger;
    constructor(qrs: DataSource, tqs: DataSource, scheme: DataSource);
    private resolveLegacyId;
    transferAudit(p: {
        source: 'QRS' | 'TQS' | 'QRS & TQS';
        table?: string;
        record_id: number;
        from_auditor_id: number;
        to_user_id: number;
    }): Promise<{
        ok: boolean;
    }>;
    listAuditors(): Promise<{
        user_id: number;
        name: string;
        email: string;
    }[]>;
    build(f: AuditDetailFilters): Promise<AuditDetailResponse>;
    private queryNewAudits;
    private queryDb;
}
