import { DataSource, EntityManager } from 'typeorm';
import { AuditRequest } from '../entities/audit-request.entity';
import { CreateAuditRequestDto } from '../dto/create-audit-request.dto';
import { UpdateAuditRequestDto } from '../dto/update-audit-request.dto';
import { ScheduleAuditRequestDto } from '../dto/schedule-audit-request.dto';
import { RejectAuditRequestDto } from '../dto/reject-audit-request.dto';
import { CancelAuditRequestDto } from '../dto/cancel-audit-request.dto';
import { ListAuditRequestsQueryDto } from '../dto/list-audit-requests.dto';
import { AuditCodeGeneratorService } from '../../audit-schedules/services/audit-code-generator.service';
import { NotificationsService } from '../../notifications/notifications.service';
import { MailsService } from '../../mails/mails.service';
import { CreateBatchAuditRequestDto } from '../dto/create-batch-audit-request.dto';
import { InquiriesService } from '../../inquiries/inquiries.service';
import { CompanyResolverService } from '../../companies/services/company-resolver.service';
import { CompanySyncService } from '../../companies/services/company-sync.service';
export declare class AuditRequestsService {
    private readonly dataSource;
    private readonly companyResolver;
    private readonly companySyncService;
    private readonly codeGenerator;
    private readonly notifications;
    private readonly mailsService;
    private readonly inquiriesService;
    private readonly logger;
    constructor(dataSource: DataSource, companyResolver: CompanyResolverService, companySyncService: CompanySyncService, codeGenerator: AuditCodeGeneratorService, notifications: NotificationsService, mailsService: MailsService, inquiriesService: InquiriesService);
    private generateCompanyCodeInTx;
    private sendAsUserSafe;
    private enrichCompanyFromRequest;
    private buildAttachments;
    private getEmailsByRoleIds;
    private userCanViewAll;
    private prettyRowStatus;
    private notifyRequestProceededToInquiry;
    create(dto: CreateAuditRequestDto, currentUserId: number): Promise<AuditRequest>;
    createBatch(dto: CreateBatchAuditRequestDto, currentUserId: number): Promise<{
        ok: true;
        created: Array<{
            index: number;
            id: number;
            company_name: string;
        }>;
        count: number;
    }>;
    searchCompanies(query: string, currentUserId: number): Promise<any[]>;
    findOne(id: number, manager?: EntityManager): Promise<AuditRequest>;
    findAll(q: ListAuditRequestsQueryDto, currentUserId?: number): Promise<{
        data: AuditRequest[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    update(id: number, dto: UpdateAuditRequestDto, currentUserId: number): Promise<AuditRequest>;
    markUnderReview(id: number, currentUserId: number): Promise<AuditRequest>;
    schedule(id: number, dto: ScheduleAuditRequestDto, currentUserId: number): Promise<AuditRequest>;
    private mapCertTypeToInquiryType;
    proceedToInquiry(id: number, dto: any, currentUserId: number): Promise<{
        request: any;
        inquiry: any;
    }>;
    proceedBatchToInquiry(dto: any, currentUserId: number): Promise<{
        ok: true;
        results: any[];
    }>;
    reject(id: number, dto: RejectAuditRequestDto, currentUserId: number): Promise<AuditRequest>;
    cancel(id: number, dto: CancelAuditRequestDto, currentUserId: number): Promise<AuditRequest>;
    getAnalytics(currentUserId?: number): Promise<{
        submitted: number;
        under_review: number;
        scheduled: number;
        completed: number;
        rejected: number;
        cancelled: number;
        total: number;
    }>;
    private defaultScheduleTitle;
    private fullName;
    private getStandardNames;
    private formatAuditDateTime;
    private formatCertificationType;
    private prettyAuditMode;
    private qrsSender;
    private readonly submitEmailSent;
    private notifyRequestSubmitted;
    private notifyRequestScheduled;
    private loadAuditorDayGrid;
    private notifyRequestRejected;
    private buildSubmittedHtml;
    private buildScheduledHtml;
    private buildRejectedHtml;
    private qrsShell;
    remove(id: number, currentUserId: number): Promise<{
        message: string;
        id: number;
    }>;
    private userCanDelete;
    uploadDocuments(requestId: number, files: {
        trade_license?: Express.Multer.File[];
        previous_certificate?: Express.Multer.File[];
        files?: Express.Multer.File[];
    }, uploadedBy: number): Promise<AuditRequest>;
    private validateSlotAvailability;
    getAvailableSlots(): Promise<{
        window_start: string;
        window_end: string;
        max_per_day: number;
        dates: {
            date: string;
            booked: number;
            available: number;
            status: string;
        }[];
    }>;
    private formatDateStr;
}
