import type { Response } from 'express';
import { CertificatesService } from './certificates.service';
import { CreateCertificateDto } from './dto/create-certificate.dto';
import { UpdateCertificateDto } from './dto/update-certificate.dto';
import { NewCertificate } from './entities/new-certificate.entity';
import { CertificateDraftGeneratorService } from './certificate-draft-generator.service';
export declare class CertificatesController {
    private readonly service;
    private readonly certDraftGenerator;
    constructor(service: CertificatesService, certDraftGenerator: CertificateDraftGeneratorService);
    create(dto: CreateCertificateDto): Promise<{
        summary: {
            total: number;
            reused: number;
            generated: number;
        };
        certificates: {
            certificate: NewCertificate;
            qrCode: string;
            verification_url: string;
            action: string;
            source: string;
        }[];
        certificate?: undefined;
        qrCode?: undefined;
        verification_url?: undefined;
        action?: undefined;
        source?: undefined;
    } | {
        certificate: NewCertificate;
        qrCode: string;
        verification_url: string;
        action: string;
        source: string;
        summary?: undefined;
        certificates?: undefined;
    }>;
    updatePartial(id: number, dto: Partial<UpdateCertificateDto>): Promise<NewCertificate>;
    update(id: number, dto: UpdateCertificateDto): Promise<NewCertificate>;
    findAll(page?: number, search?: string): Promise<{
        data: {
            verification_url: string;
            qrCode: string;
            id: number;
            company: import("../companies/entities/company.entity").Company;
            standard: import("../standards/entities/standard.entity").Standard;
            previous_certificate: NewCertificate;
            company_name_snapshot: string;
            address_snapshot: string;
            city: string;
            country: string;
            standard_name: string;
            standard_short: string;
            scope_of_work: string;
            certificate_no: string;
            ea_codes: string;
            surveillance_audit_due: Date | null;
            recertification_due: Date | null;
            cert_type: string;
            originally_registered: Date;
            issue_date: Date;
            expire_date: Date;
            qrcode_token: string;
            fingerprint: string;
            verification_domain: string;
            scan_pdf_url: string;
            scan_uploaded_at: Date;
            scan_uploaded_by: number;
            status: string;
            created_by: number;
            updated_by: number;
            created_at: Date;
            updated_at: Date;
        }[];
        total: number;
        page: number;
        lastPage: number;
    }>;
    verifyCertificate(token: string, fingerprint?: string): Promise<any>;
    resolveToken(token: string, fp?: string): Promise<{
        id: number;
        certificate_no: string;
        company_name: string;
        standard: string;
        status: string;
        expire_date: Date;
        scan_pdf_url: string;
    }>;
    findOne(id: number): Promise<{
        certificate: any;
        verification_url: string;
        qrCode: string;
    }>;
    remove(id: number): Promise<{
        message: string;
    }>;
    uploadDigitalCopy(id: number, file: Express.Multer.File): Promise<NewCertificate>;
    downloadCertPdf(id: number, draft: string, res: Response): Promise<Response<any, Record<string, any>>>;
    downloadCertDocx(id: number, res: Response): Promise<Response<any, Record<string, any>>>;
    previewCertPdf(id: number, draft: string, res: Response): Promise<Response<any, Record<string, any>>>;
}
