type LogEntry = { id: number; message: string; kind: 'info' | 'warn' | 'error'; at: number; }; type AppState = { /** Which top-level screen is showing. */ view: 'status' | 'picker' | 'ready'; /** Shown while `view` is 'status'. */ message?: string; config?: import('web-gphoto2').Config; supportedOps?: import('web-gphoto2').SupportedOps; prefs: import('./settings.js').Prefs; seq: import('./intervalometer.js').SequenceState; log: LogEntry[]; settingsOpen: boolean; singleShotStatus: 'idle' | 'busy'; };