export type OutputFormat = 'file' | 'file-jpg' export type ImageStatus = 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled' export interface ImageFileItem { id: string path: string name: string size: number width: number | null height: number | null status: ImageStatus outputPath?: string error?: string } export interface ProcessOptions { paths: string[] useSourceDirectory: boolean outputDirectory?: string outputFormat: OutputFormat junkSizeMb: number } export interface ProcessProgress { current: number total: number percent: number item: ImageFileItem cancelled: boolean } export interface ProcessSummary { total: number completed: number failed: number cancelled: boolean } export interface VersionInfo { updateAvailable: boolean latestVersion?: string releaseNotes?: string downloadUrl?: string enforce: boolean } export interface LicenseSession { token?: string licenseCodeMask: string deviceMask: string expiresAt?: string maxDevices: number version?: VersionInfo } export type LicenseStatus = 'checking' | 'unlicensed' | 'active' | 'invalid' | 'network-error' export interface LicenseViewState { status: LicenseStatus message: string offline: boolean session?: LicenseSession version?: VersionInfo } export interface AppInfo { name: string version: string platform: string deviceName: string } export interface DesktopBridge { getAppInfo(): Promise getLicenseState(): Promise activate(activationCode: string): Promise validateLicense(): Promise clearLicense(): Promise checkVersion(): Promise downloadUpdate(downloadUrl: string, latestVersion?: string): Promise selectImages(): Promise selectFolder(): Promise selectOutputDirectory(): Promise pathsForFiles(files: File[]): string[] inspectImages(paths: string[]): Promise processImages(options: ProcessOptions): Promise cancelProcessing(): Promise revealItem(filePath: string): Promise onProcessProgress(callback: (progress: ProcessProgress) => void): () => void }