import { DataSource } from 'typeorm';
import { ChecklistTemplate } from '../entities/checklist-template.entity';
import { AuditChecklist } from '../entities/audit-checklist.entity';
import { AuditChecklistItem } from '../entities/audit-checklist-item.entity';
import { ChecklistStorageService } from './checklist-storage.service';
import { ChecklistPdfService } from './checklist-pdf.service';
import { NotificationsService } from '../../notifications/notifications.service';
import { MailsService } from '../../mails/mails.service';
import { NotifyClientDto } from '../dto/notify-client.dto';
export declare class ChecklistsService {
    private readonly dataSource;
    private readonly storage;
    private readonly pdf;
    private readonly notifications;
    private readonly mailsService;
    private readonly logger;
    constructor(dataSource: DataSource, storage: ChecklistStorageService, pdf: ChecklistPdfService, notifications: NotificationsService, mailsService: MailsService);
    listTemplates(userId?: number, onlyMine?: boolean): Promise<ChecklistTemplate[]>;
    createTemplate(dto: {
        name: string;
        is_generic: boolean;
        standard_id: number | null;
        standard_ids?: number[] | null;
        items: {
            item_text: string;
            sort_order: number;
        }[];
    }, userId?: number): Promise<ChecklistTemplate>;
    updateTemplate(templateId: number, dto: {
        name: string;
        is_generic: boolean;
        standard_id: number | null;
        standard_ids?: number[] | null;
        items: {
            id?: number;
            item_text: string;
            sort_order: number;
        }[];
    }): Promise<ChecklistTemplate>;
    deleteTemplate(templateId: number): Promise<void>;
    getAvailableTemplates(auditScheduleRowId: number): Promise<ChecklistTemplate[]>;
    buildChecklist(auditScheduleRowId: number, standardId: number, selectedTemplateItemIds: number[], builtByUserId: number): Promise<AuditChecklist>;
    deleteDraft(checklistId: number): Promise<void>;
    submitChecklist(auditChecklistId: number, submittedByUserId: number): Promise<AuditChecklist>;
    notifyClient(auditChecklistId: number, dto: NotifyClientDto, triggeredByUserId: number): Promise<AuditChecklist>;
    getChecklistsForClientByRequest(auditRequestId: number, companyId: number): Promise<AuditChecklist[]>;
    getChecklistsForClient(auditScheduleRowId: number, companyId: number): Promise<AuditChecklist[]>;
    uploadClientDocument(itemId: number, companyId: number, uploadedByUserId: number, file: {
        originalname: string;
        mimetype: string;
        buffer: Buffer;
        size: number;
    }): Promise<AuditChecklistItem>;
    clientSubmitChecklist(auditChecklistId: number, companyId: number): Promise<void>;
    reviewItem(itemId: number, decision: 'approve' | 'reject', note: string | null, reviewedByUserId: number): Promise<AuditChecklistItem>;
    notifyClientOfReview(auditChecklistId: number, triggeredByUserId?: number | null): Promise<void>;
    getChecklistsForAuditor(auditScheduleRowId: number): Promise<AuditChecklist[]>;
    getChecklistForAuditor(auditScheduleRowId: number): Promise<AuditChecklistItem[]>;
    openItemDocument(itemId: number): Promise<{
        stream: import("stream").Readable;
        size: number;
        mimeType: string;
        filename: string;
    }>;
    openItemDocumentForCompany(itemId: number, companyId: number): Promise<{
        stream: import("stream").Readable;
        size: number;
        mimeType: string;
        filename: string;
    }>;
    getChecklistPdf(checklistId: number): Promise<{
        buffer: Buffer;
        filename: string;
    }>;
    getChecklistPdfForCompany(checklistId: number, companyId: number): Promise<{
        buffer: Buffer;
        filename: string;
    }>;
    private loadChecklists;
    private getChecklistWithRelations;
    private resolveClientUserIds;
    private safeNotify;
    private sendEmail;
    private parseNotifyEmails;
    private clientPortalLink;
    private internalLink;
    private esc;
    private checklistEmailHtml;
}
