/// declare namespace NodeJS { interface ProcessEnv { /** * The built directory structure * * ```tree * ├─┬─┬ dist * │ │ └── index.html * │ │ * │ ├─┬ dist-electron * │ │ ├── main.js * │ │ └── preload.js * │ * ``` */ APP_ROOT: string /** /dist/ or /public/ */ VITE_PUBLIC: string } } // Used in Renderer process, expose in `preload.ts` interface Window { electronAPI: { getSources: (opts: Electron.SourcesOptions) => Promise switchToEditor: () => Promise openSourceSelector: () => Promise selectSource: (source: any) => Promise getSelectedSource: () => Promise startMouseTracking: () => Promise stopMouseTracking: () => Promise storeRecordedVideo: (videoData: ArrayBuffer, fileName: string) => Promise<{ success: boolean; path?: string; message?: string }> storeMouseTrackingData: (fileName: string) => Promise<{ success: boolean; path?: string; eventCount?: number; message?: string }> getRecordedVideoPath: () => Promise<{ success: boolean; path?: string; message?: string }> setRecordingState: (recording: boolean) => Promise onStopRecordingFromTray: (callback: () => void) => () => void } } interface ProcessedDesktopSource { id: string name: string display_id: string thumbnail: string | null appIcon: string | null }