/**
 * InspectionService - Servicio de inspecciones de calidad
 *
 * Gestión de inspecciones con checklists y resultados.
 *
 * @module Quality
 */
import { Repository } from 'typeorm';
import { Inspection, InspectionStatus } from '../entities/inspection.entity';
import { InspectionResult } from '../entities/inspection-result.entity';
import { NonConformity } from '../entities/non-conformity.entity';
import { Checklist } from '../entities/checklist.entity';
import { ServiceContext, PaginatedResult } from '../../../shared/services/base.service';
export interface CreateInspectionDto {
    checklistId: string;
    loteId: string;
    inspectionDate: Date;
    inspectorId: string;
    notes?: string;
}
export interface RecordResultDto {
    checklistItemId: string;
    result: 'passed' | 'failed' | 'not_applicable';
    observations?: string;
    photoUrl?: string;
}
export interface InspectionFilters {
    checklistId?: string;
    loteId?: string;
    inspectorId?: string;
    status?: InspectionStatus;
    dateFrom?: Date;
    dateTo?: Date;
}
export declare class InspectionService {
    private readonly inspectionRepository;
    private readonly resultRepository;
    private readonly nonConformityRepository;
    private readonly checklistRepository;
    constructor(inspectionRepository: Repository<Inspection>, resultRepository: Repository<InspectionResult>, nonConformityRepository: Repository<NonConformity>, checklistRepository: Repository<Checklist>);
    private generateInspectionNumber;
    private generateNCNumber;
    findWithFilters(ctx: ServiceContext, filters?: InspectionFilters, page?: number, limit?: number): Promise<PaginatedResult<Inspection>>;
    findById(ctx: ServiceContext, id: string): Promise<Inspection | null>;
    findWithDetails(ctx: ServiceContext, id: string): Promise<Inspection | null>;
    create(ctx: ServiceContext, dto: CreateInspectionDto): Promise<Inspection>;
    startInspection(ctx: ServiceContext, id: string): Promise<Inspection | null>;
    recordResult(ctx: ServiceContext, inspectionId: string, dto: RecordResultDto): Promise<InspectionResult>;
    completeInspection(ctx: ServiceContext, id: string): Promise<Inspection | null>;
    approveInspection(ctx: ServiceContext, id: string): Promise<Inspection | null>;
    rejectInspection(ctx: ServiceContext, id: string, reason: string): Promise<Inspection | null>;
}
//# sourceMappingURL=inspection.service.d.ts.map