/** * Worker Manager for @moicad/sdk * * Manages the CSG Web Worker lifecycle and provides a clean API for the GUI. * Handles worker creation, message passing, progress callbacks, and error recovery. * Falls back to main thread evaluation if Web Workers aren't supported. */ import type { EvaluateResult, RenderProgress } from '../types/geometry-types'; export interface WorkerManagerOptions { /** Timeout in milliseconds (default: 60000) */ timeout?: number; /** Detail level for progress updates */ progressDetail?: 'simple' | 'detailed'; /** Callback for progress updates */ onProgress?: (progress: RenderProgress) => void; /** Whether to use main thread fallback if workers aren't available */ allowMainThreadFallback?: boolean; } export interface EvaluationJob { id: string; code: string; language: 'javascript' | 'openscad'; timeout: number; t?: number; progressDetail: 'simple' | 'detailed'; resolve: (result: EvaluateResult) => void; reject: (error: Error) => void; onProgress?: (progress: RenderProgress) => void; } /** * Manages CSG Web Worker for non-blocking evaluation */ export declare class WorkerManager { private worker; private jobs; private isInitialized; private defaultTimeout; private defaultProgressDetail; private allowFallback; private workerUrl; constructor(options?: WorkerManagerOptions); /** * Initialize the worker */ initialize(): Promise; /** * Ping worker to check if it's alive */ private pingWorker; /** * Evaluate code using worker or main thread fallback */ evaluate(code: string, language: 'javascript' | 'openscad', options?: Partial & { t?: number; }): Promise; /** * Evaluate in main thread (fallback) */ private evaluateInMainThread; /** * Handle messages from worker */ private handleMessage; /** * Handle worker errors */ private handleWorkerError; /** * Cancel a specific job */ cancel(jobId?: string): void; /** * Terminate the worker */ terminate(): void; /** * Check if worker is available */ isWorkerAvailable(): boolean; /** * Get number of pending jobs */ getPendingJobCount(): number; } export declare const workerManager: WorkerManager; export declare function createWorkerManager(options?: WorkerManagerOptions): WorkerManager; //# sourceMappingURL=worker-manager.d.ts.map