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

// Expose protected methods that allow the renderer process to use
// the ipcRenderer without exposing the entire object
contextBridge.exposeInMainWorld('electronAPI', {
  login: (credentials) => ipcRenderer.invoke('api-login', credentials),
  getDevices: (params) => ipcRenderer.invoke('api-get-devices', params),
  getAuthInfo: (params) => ipcRenderer.invoke('api-get-auth-info', params),
  
  // Profile management
  loadProfiles: () => ipcRenderer.invoke('profiles-load'),
  saveProfile: (profile) => ipcRenderer.invoke('profiles-save', profile),
  getProfile: (profileId) => ipcRenderer.invoke('profiles-get', { profileId }),
  deleteProfile: (profileId) => ipcRenderer.invoke('profiles-delete', { profileId }),
  updateProfile: (profileId, profile) => ipcRenderer.invoke('profiles-update', { profileId, ...profile }),
  
  // Camera proxy functionality
  launchCameraProxy: (params) => ipcRenderer.invoke('camera-proxy-launch', params),
  launchCookieCameraProxy: (params) => ipcRenderer.invoke('camera-proxy-cookie-launch', params),
  stopCameraProxy: (processId) => ipcRenderer.invoke('camera-proxy-stop', { processId }),
  checkCameraProxy: () => ipcRenderer.invoke('camera-proxy-check'),
  getCameraProxyVersion: () => ipcRenderer.invoke('camera-proxy-version'),
  listActiveCameraProxies: () => ipcRenderer.invoke('camera-proxy-list-active'),

  // Extension cookie bridge (push from main process)
  onExtensionCookie: (callback) => {
    ipcRenderer.on('extension-cookie-received', (event, data) => {
      try {
        callback(data);
      } catch (error) {
        console.error('Extension cookie handler error:', error);
      }
    });
  }
});