import { Repository } from "typeorm";
import { CosaTrae } from "../catalogos/entities/cosa-trae.entity";
import { TipoDano } from "../catalogos/entities/tipo-dano.entity";
import { TipoVehiculo } from "../catalogos/entities/tipo-vehiculo.entity";
import { CatalogosService } from "../catalogos/catalogos.service";
import { ClienteLocal } from "../clientes/entities/cliente-local.entity";
import { ClientesService } from "../clientes/clientes.service";
import { OrdenTrabajo } from "../ots/entities/orden-trabajo.entity";
import { OtsService } from "../ots/ots.service";
import { Vehiculo } from "../vehiculos/entities/vehiculo.entity";
import { VehiculosService } from "../vehiculos/vehiculos.service";
export interface SyncEvent {
    eventId: string;
    eventType: string;
    entityType: string;
    localId: string;
    payload: any;
    timestamp: number;
}
export interface SyncResult {
    success: boolean;
    processed: number;
    failed: number;
    errors: any[];
    mappings: Record<string, any>;
}
export declare class SyncService {
    private clientesService;
    private vehiculosService;
    private otsService;
    private catalogosService;
    private otRepository;
    private vehiculoRepository;
    private clienteLocalRepository;
    private tipoVehiculoRepository;
    private tipoDanoRepository;
    private cosaTraeRepository;
    private readonly logger;
    constructor(clientesService: ClientesService, vehiculosService: VehiculosService, otsService: OtsService, catalogosService: CatalogosService, otRepository: Repository<OrdenTrabajo>, vehiculoRepository: Repository<Vehiculo>, clienteLocalRepository: Repository<ClienteLocal>, tipoVehiculoRepository: Repository<TipoVehiculo>, tipoDanoRepository: Repository<TipoDano>, cosaTraeRepository: Repository<CosaTrae>);
    processPushEvents(events: SyncEvent[], userId?: number): Promise<SyncResult>;
    private processEvent;
    private handleCreateClient;
    private handleUpdateClient;
    private handleCreateVehiculo;
    private handleCreateOT;
    private handleUpdateOT;
    private handleAddOTPhoto;
    private handleAddOTDamage;
    private handleSetOTFirmas;
    private handleChangeOTEstado;
    private handleUploadPdf;
    private handleCreateTipoVehiculo;
    private handleUpdateTipoVehiculo;
    private handleInactivateTipoVehiculo;
    private handleCreateCosaTrae;
    private handleUpdateCosaTrae;
    private handleInactivateCosaTrae;
    private handleCreateTipoDano;
    private handleUpdateTipoDano;
    private handleInactivateTipoDano;
    private resolveMappedOtId;
    private resolveCatalogId;
    pullChanges(since: number): Promise<any>;
}
