const { contextBridge, ipcRenderer } = require('electron');

// Exposer des APIs sécurisées au renderer process
contextBridge.exposeInMainWorld('electron', {
  platform: process.platform,

  // Token management
  getToken: () => ipcRenderer.invoke('get-token'),
  setToken: (token: string) => ipcRenderer.invoke('set-token', token),
  removeToken: () => ipcRenderer.invoke('remove-token'),

  // Auth events
  loginSuccess: (token: string) => ipcRenderer.send('login-success', token),
  logout: () => ipcRenderer.send('logout'),

  // Database operations
  generateEncryptionKey: (userId: string) => ipcRenderer.invoke('generate-encryption-key', userId),
  getUserEncryptionKey: (userId: string) => ipcRenderer.invoke('get-user-encryption-key', userId),
  setUserEncryptionKey: (userId: string, encryptionKey: string) => ipcRenderer.invoke('set-user-encryption-key', userId, encryptionKey),
  dbInitialize: (userId: string, encryptionKey: string) => ipcRenderer.invoke('db-initialize', userId, encryptionKey),
  dbGetBooks: () => ipcRenderer.invoke('db-get-books'),
  dbGetBook: (bookId: string) => ipcRenderer.invoke('db-get-book', bookId),
  dbSaveBook: (book: any, authorId?: string) => ipcRenderer.invoke('db-save-book', book, authorId),
  dbDeleteBook: (bookId: string) => ipcRenderer.invoke('db-delete-book', bookId),
  dbSaveChapter: (chapter: any, bookId: string, contentId?: string) => ipcRenderer.invoke('db-save-chapter', chapter, bookId, contentId),
  dbGetCharacters: (bookId: string) => ipcRenderer.invoke('db-get-characters', bookId),
  dbSaveCharacter: (character: any, bookId: string) => ipcRenderer.invoke('db-save-character', character, bookId),
  dbGetConversations: (bookId: string) => ipcRenderer.invoke('db-get-conversations', bookId),
  dbSaveConversation: (conversation: any, bookId: string) => ipcRenderer.invoke('db-save-conversation', conversation, bookId),
  dbGetSyncStatus: () => ipcRenderer.invoke('db-get-sync-status'),
  dbGetPendingChanges: (limit?: number) => ipcRenderer.invoke('db-get-pending-changes', limit),
});
