import { contextBridge, ipcRenderer } from 'electron'; import type { CharacterSheet, SystemDefinition } from '../shared/types.ts'; const api = { listSystems: () => ipcRenderer.invoke('systems:list') as Promise< Array<{ id: string; name: string; revision: number; schemaVersion: number }> >, getSystem: (id: string) => ipcRenderer.invoke('systems:get', id) as Promise, upsertSystem: (system: SystemDefinition) => ipcRenderer.invoke('systems:upsert', system) as Promise, deleteSystem: (id: string) => ipcRenderer.invoke('systems:delete', id) as Promise, exportSystem: (id: string) => ipcRenderer.invoke('systems:export', id) as Promise, importSystem: () => ipcRenderer.invoke('systems:import') as Promise, listPresets: () => ipcRenderer.invoke('presets:list') as Promise, loadPreset: (filePath: string) => ipcRenderer.invoke('presets:load', filePath) as Promise, seedPresets: () => ipcRenderer.invoke('presets:seed') as Promise, listCharacters: (systemId?: string) => ipcRenderer.invoke('characters:list', systemId) as Promise< Array<{ id: string; name: string; systemId: string }> >, getCharacter: (id: string) => ipcRenderer.invoke('characters:get', id) as Promise, upsertCharacter: (character: CharacterSheet) => ipcRenderer.invoke('characters:upsert', character) as Promise, deleteCharacter: (id: string) => ipcRenderer.invoke('characters:delete', id) as Promise, }; contextBridge.exposeInMainWorld('ttrpgBuilder', api); export type TtrpgBuilderApi = typeof api;