import { Repository } from "typeorm";
import { VehiculosService } from "../vehiculos/vehiculos.service";
import { CreateDanoDto } from "./dto/create-dano.dto";
import { CreateFirmaDto } from "./dto/create-firma.dto";
import { CreateFotoDto } from "./dto/create-foto.dto";
import { CreateOtDto } from "./dto/create-ot.dto";
import { SearchOtDto } from "./dto/search-ot.dto";
import { UpdateOtDto } from "./dto/update-ot.dto";
import { EstadoOT, OrdenTrabajo } from "./entities/orden-trabajo.entity";
import { OtCosaTrae } from "./entities/ot-cosa-trae.entity";
import { OtDano } from "./entities/ot-dano.entity";
import { OtFirma } from "./entities/ot-firma.entity";
import { OtFoto } from "./entities/ot-foto.entity";
export declare class OtsService {
    private otRepository;
    private cosaTraeRepository;
    private danoRepository;
    private fotoRepository;
    private firmaRepository;
    private vehiculosService;
    constructor(otRepository: Repository<OrdenTrabajo>, cosaTraeRepository: Repository<OtCosaTrae>, danoRepository: Repository<OtDano>, fotoRepository: Repository<OtFoto>, firmaRepository: Repository<OtFirma>, vehiculosService: VehiculosService);
    findAll(query: SearchOtDto): Promise<{
        data: OrdenTrabajo[];
        total: number;
        page: number;
        totalPages: number;
        byEstado: {
            borrador: number;
            en_proceso: number;
            cotizada: number;
            aprobada: number;
            terminada: number;
            entregada: number;
        };
    }>;
    findById(id: number): Promise<OrdenTrabajo>;
    findByNumero(numeroOt: string): Promise<OrdenTrabajo>;
    create(dto: CreateOtDto, userId?: number): Promise<OrdenTrabajo>;
    update(id: number, dto: UpdateOtDto, userId?: number): Promise<OrdenTrabajo>;
    changeEstado(id: number, estado: EstadoOT, fechaSalida?: string, userId?: number): Promise<OrdenTrabajo>;
    addDano(otId: number, dto: CreateDanoDto): Promise<OtDano>;
    removeDano(otId: number, danoId: number): Promise<void>;
    addFoto(otId: number, dto: CreateFotoDto): Promise<OtFoto>;
    removeFoto(otId: number, fotoId: number): Promise<void>;
    saveFirmas(otId: number, dto: CreateFirmaDto): Promise<OtFirma>;
    savePdfEscaner(otId: number, pdfUrl: string, userId?: number): Promise<OrdenTrabajo>;
    private generateNumeroOt;
    private ensureEditable;
}
