import { Repository } from 'typeorm';
import { TrainingCertificate } from './entities/training-certificate.entity';
import { Standard } from '../standards/entities/standard.entity';
import { CreateTrainingCertificateDto } from './dto/create-training-certificate.dto';
import { UpdateTrainingCertificateDto } from './dto/update-training-certificate.dto';
import { BatchCreateTrainingCertificatesDto } from './dto/batch-create-training-certificates.dto';
import { CertificatesService } from '../certificates/certificates.service';
export declare class TrainingCertificatesService {
    private readonly trainingRepo;
    private readonly standardRepo;
    private readonly companyCertsService;
    constructor(trainingRepo: Repository<TrainingCertificate>, standardRepo: Repository<Standard>, companyCertsService: CertificatesService);
    buildVerificationUrl(certificate: TrainingCertificate): string;
    generateQrCode(token: string, fingerprint?: string, domain?: 'local' | 'international'): Promise<string>;
    private generateUniqueToken;
    private generateFingerprint;
    private static readonly CERT_LETTERS;
    private static readonly CERT_DIGITS;
    private static readonly CERT_SUFFIX_LENGTH;
    private buildRandomSuffix;
    private generateCertificateNo;
    create(dto: CreateTrainingCertificateDto): Promise<{
        certificate: TrainingCertificate;
        qrCode: string;
        verification_url: string;
    }>;
    batchCreate(dto: BatchCreateTrainingCertificatesDto): Promise<{
        batch_ref: string;
        count: number;
        certificates: Array<{
            certificate: TrainingCertificate;
            qrCode: string;
            verification_url: string;
        }>;
    }>;
    findAll(page?: number, search?: string): Promise<{
        data: TrainingCertificate[];
        total: number;
        page: number;
        lastPage: number;
    }>;
    findOne(id: number): Promise<TrainingCertificate>;
    findByCertificateNo(certificateNo: string): Promise<TrainingCertificate | null>;
    updatePartial(id: number, dto: Partial<UpdateTrainingCertificateDto>): Promise<TrainingCertificate>;
    update(id: number, dto: UpdateTrainingCertificateDto): Promise<TrainingCertificate>;
    remove(id: number): Promise<{
        message: string;
    }>;
    attachScan(id: number, fileUrl: string, uploadedBy?: number): Promise<{
        message: string;
        certificate: TrainingCertificate;
    }>;
    verify(token: string, fingerprint?: string): Promise<any>;
    verifyManual(certNo: string, participantName: string): Promise<any>;
    private normName;
    private nameMatches;
    private isExpired;
    private buildTrainingVerifyResponse;
}
