// // Generated by scripts/generate-rts-bindings.mjs from the RTS IPC surface contract. const { contextBridge, ipcRenderer } = require("electron"); const channels = { mapViewport: "aetheria-rts:map-viewport", objectsViewport: "aetheria-rts:objects-viewport", gravityViewport: "aetheria-rts:gravity-viewport", renderSplatsViewport: "aetheria-rts:render-splats-viewport", viewportFeed: "aetheria-rts:viewport-feed", viewportFeedStop: "aetheria-rts:viewport-feed-stop", viewportFeedUpdate: "aetheria-rts:viewport-feed-update", selectedObject: "aetheria-rts:selected-object", inventory: "aetheria-rts:inventory", daemonHealth: "aetheria-rts:daemon-health", authorityStatus: "aetheria-rts:authority-status", starbridgeSession: "aetheria-rts:starbridge-session", assetManifest: "aetheria-rts:asset-manifest", setMoveVector: "aetheria-rts:set-move-vector", setTarget: "aetheria-rts:set-target", surfaceCatalog: "aetheria-rts:surface-catalog", surfaceCatalogIndex: "aetheria-rts:surface-catalog-index", eveSurface: "aetheria-rts:eve-surface", submitEveCommand: "aetheria-rts:submit-eve-command", mainMenuSurface: "aetheria-rts:main-menu-surface", debugSurface: "aetheria-rts:debug-surface", debugSurfaceWatch: "aetheria-rts:debug-surface-watch", debugSurfaceWatchStop: "aetheria-rts:debug-surface-watch-stop", debugSurfaceChanged: "aetheria-rts:debug-surface-changed", windowControl: "aetheria-rts:window-control", health: "aetheria-rts:health", }; contextBridge.exposeInMainWorld("aetheriaRts", { mapViewport: request => ipcRenderer.invoke(channels.mapViewport, request), objectsViewport: request => ipcRenderer.invoke(channels.objectsViewport, request), gravityViewport: request => ipcRenderer.invoke(channels.gravityViewport, request), renderSplatsViewport: request => ipcRenderer.invoke(channels.renderSplatsViewport, request), watchViewportFeed: (request, callback) => { const subscriptionId = `viewport-feed-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`; const listener = (_event, message) => { if (message?.subscriptionId === subscriptionId) { callback(message.snapshot); } }; ipcRenderer.on(channels.viewportFeedUpdate, listener); void ipcRenderer.invoke(channels.viewportFeed, { subscriptionId, feed: request }); return () => { ipcRenderer.off(channels.viewportFeedUpdate, listener); void ipcRenderer.invoke(channels.viewportFeedStop, subscriptionId); }; }, selectedObject: request => ipcRenderer.invoke(channels.selectedObject, request), inventory: request => ipcRenderer.invoke(channels.inventory, request), daemonHealth: () => ipcRenderer.invoke(channels.daemonHealth), authorityStatus: () => ipcRenderer.invoke(channels.authorityStatus), starbridgeSession: () => ipcRenderer.invoke(channels.starbridgeSession), assetManifest: () => ipcRenderer.invoke(channels.assetManifest), setMoveVector: request => ipcRenderer.invoke(channels.setMoveVector, request), setTarget: request => ipcRenderer.invoke(channels.setTarget, request), surfaceCatalog: () => ipcRenderer.invoke(channels.surfaceCatalog), surfaceCatalogIndex: () => ipcRenderer.invoke(channels.surfaceCatalogIndex), eveSurface: request => ipcRenderer.invoke(channels.eveSurface, request), submitEveCommand: request => ipcRenderer.invoke(channels.submitEveCommand, request), mainMenuSurface: request => ipcRenderer.invoke(channels.mainMenuSurface, request), debugSurface: () => ipcRenderer.invoke(channels.debugSurface), watchDebugSurface: callback => { const subscriptionId = `debug-surface-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`; const listener = (_event, message) => { if (message?.subscriptionId === subscriptionId) { callback(message.surface); } }; ipcRenderer.on(channels.debugSurfaceChanged, listener); void ipcRenderer.invoke(channels.debugSurfaceWatch, subscriptionId); return () => { ipcRenderer.off(channels.debugSurfaceChanged, listener); void ipcRenderer.invoke(channels.debugSurfaceWatchStop, subscriptionId); }; }, windowControl: request => ipcRenderer.invoke(channels.windowControl, request), health: () => ipcRenderer.invoke(channels.health), });