"use strict"; const { contextBridge, ipcRenderer } = require("electron"); const invoke = (channel) => (...args) => ipcRenderer.invoke(channel, ...args); contextBridge.exposeInMainWorld("api", { listDirectory: invoke("directory:list"), createOwner: (data) => ipcRenderer.invoke("owner:create", data), createAnimal: (ownerId, data) => ipcRenderer.invoke("animal:create", { ownerId, data }), getAnimalBundle: (animalId) => ipcRenderer.invoke("animal:bundle", animalId), updateAnimalField: (animalId, field, value) => ipcRenderer.invoke("animal:updateField", { animalId, field, value }), updateOwnerField: (ownerId, field, value) => ipcRenderer.invoke("owner:updateField", { ownerId, field, value }), deleteAnimal: (animalId) => ipcRenderer.invoke("animal:delete", animalId), deleteOwner: (ownerId) => ipcRenderer.invoke("owner:delete", ownerId), addNote: (animalId, text) => ipcRenderer.invoke("note:add", { animalId, text }), addHistoryEntry: (animalId, title, text) => ipcRenderer.invoke("history:add", { animalId, title, text }), addLabResult: (animalId, name) => ipcRenderer.invoke("lab:addResult", { animalId, name }), addLabValue: (labResultId, parameter, value, reference) => ipcRenderer.invoke("lab:addValue", { labResultId, parameter, value, reference }), deleteLabResult: (labResultId) => ipcRenderer.invoke("lab:deleteResult", labResultId), addFinding: (animalId, finding) => ipcRenderer.invoke("finding:add", { animalId, ...finding }), updateFinding: (id, patch) => ipcRenderer.invoke("finding:update", { id, ...patch }), deleteFinding: (id) => ipcRenderer.invoke("finding:delete", id), addExam: (animalId, fields) => ipcRenderer.invoke("exam:add", { animalId, fields }), setConsent: (animalId, patch) => ipcRenderer.invoke("consent:set", { animalId, ...patch }), saveSignature: (animalId, dataUrl) => ipcRenderer.invoke("consent:saveSignature", { animalId, dataUrl }), setContract: (animalId, patch) => ipcRenderer.invoke("contract:set", { animalId, ...patch }), saveContractSignature: (animalId, dataUrl) => ipcRenderer.invoke("contract:saveSignature", { animalId, dataUrl }), generatePdf: (animalId, kind, content) => ipcRenderer.invoke("document:generatePdf", { animalId, kind, ...content }), generateTemplatePdf: (animalId, filenamePrefix, content) => ipcRenderer.invoke("document:generateTemplatePdf", { animalId, filenamePrefix, ...content }), sendDocumentEmail: (animalId, kind, file) => ipcRenderer.invoke("email:send", { animalId, kind, ...file }), listRemedies: (query) => ipcRenderer.invoke("remedy:list", query), addRemedy: (data) => ipcRenderer.invoke("remedy:add", data), updateRemedy: (id, data) => ipcRenderer.invoke("remedy:update", { id, data }), deleteRemedy: (id) => ipcRenderer.invoke("remedy:delete", id), listAppointments: (fromDate, toDate) => ipcRenderer.invoke("appointment:list", { fromDate, toDate }), addAppointment: (data) => ipcRenderer.invoke("appointment:add", data), updateAppointment: (id, data) => ipcRenderer.invoke("appointment:update", { id, data }), deleteAppointment: (id) => ipcRenderer.invoke("appointment:delete", id), getLexwarePath: invoke("lexware:getPath"), setLexwarePath: (value) => ipcRenderer.invoke("lexware:setPath", value), openLexware: invoke("lexware:open"), getSmtpSettings: invoke("settings:getSmtp"), setSmtpSettings: (smtp) => ipcRenderer.invoke("settings:setSmtp", smtp), testSmtpSettings: (smtp) => ipcRenderer.invoke("settings:testSmtp", smtp), getReminderLead: invoke("settings:getReminderLead"), setReminderLead: (minutes) => ipcRenderer.invoke("settings:setReminderLead", minutes), backupNow: invoke("backup:now"), getBackupInfo: invoke("backup:info"), listBackups: invoke("backup:list"), openBackupFolder: invoke("backup:openFolder"), restoreBackup: (name) => ipcRenderer.invoke("backup:restore", name), searchNotes: (query) => ipcRenderer.invoke("search:notes", query), startWebPairing: invoke("webaccess:startPairing"), getWebPairingStatus: invoke("webaccess:pairingStatus"), listWebDevices: invoke("webaccess:listDevices"), revokeWebDevice: (id) => ipcRenderer.invoke("webaccess:revokeDevice", id), addDocument: (animalId, kind) => ipcRenderer.invoke("document:add", { animalId, kind }), openDocument: (documentId) => ipcRenderer.invoke("document:open", documentId), documentAbsPath: (documentId) => ipcRenderer.invoke("document:absPath", documentId), dataFolder: invoke("app:dataFolder"), });