import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'

declare global {
  interface Window {
    electron?: {
      createView: (name: string, url: string, imageUrl: string, zoom: number, useProxy: boolean) => void
      confirm: (text: string, funcName: string) => void
      removeView: (name?: string) => void
      hideView: () => void
      showView: (name: string) => void
      adjustView: (expanded: boolean) => void
      on: (channel: string, func: (...args: any[]) => void) => () => void
      getCurrentPage: () => Promise<{ name: string; url: string; imageUrl: string } | null>
      handleAction: (action: string) => void
      setProxy: (host: string, port: string) => void
      expandWithHeader: () => void
      collapseWithHeader: () => void
      backwardPage: () => void
      forwardPage: () => void
      refreshPage: () => void
      readConfig: () => Promise<any>
      writeConfig: (data: any) => void
      searchMovies: (query: string, sites: any[]) => Promise<any[]>
      searchTmdb: (query: string, apiKey: string) => Promise<{ results: any[]; error?: string }>
      discoverTmdb: (params: any) => Promise<{ results: any[]; totalPages: number; error?: string }>
      getPageMeta: () => Promise<{ poster: string; title: string; url: string } | null>
      installUpdate: () => Promise<boolean>
      checkUpdateNow: () => Promise<boolean>
      toggleKiosk: () => Promise<boolean>
      isKiosk: () => Promise<boolean>
    }
  }
}

ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
)
