import type { ExecutionBackend, LayaQuestion, LoadProgress, ModelId, Precision, SystemOneResult } from "./shared/types"; export type WorkerRequest = | { id: number; type: "ping" } | { id: number; type: "load"; model: ModelId; manifestUrl: string; precision: Precision; backend: ExecutionBackend } | { id: number; type: "infer"; state: unknown; questions: Array<{ id: string; question: LayaQuestion }> } | { id: number; type: "close" }; export type WorkerRequestWithoutId = WorkerRequest extends infer Request ? Request extends { id: number } ? Omit : never : never; export type WorkerResponse = | { id: number; type: "ready" } | { id: number; type: "progress"; progress: LoadProgress } | { id: number; type: "loaded" } | { id: number; type: "result"; result: SystemOneResult } | { id: number; type: "closed" } | { id: number; type: "error"; code: "LOAD_FAILED" | "INFERENCE_FAILED"; stage: string; message: string };