/** * postMessage protocol shared between the main thread and decode-worker. * * Direction is encoded by message kind. Typed arrays are always carried * in transferable buffers so we don't double-allocate. */ import type { DecodedPointChunk, PointCloudBBox } from '../types.js'; import type { PointSourceInfo } from './types.js'; export type WorkerSourceFormat = 'las' | 'laz' | 'ply' | 'pcd' | 'e57' | 'pts' | 'xyz'; /** main → worker */ export type WorkerRequest = { kind: 'open'; requestId: number; format: WorkerSourceFormat; blob: Blob; label?: string; stride: number; } | { kind: 'next'; requestId: number; sourceId: number; maxPoints: number; } | { kind: 'close'; sourceId: number; } | { kind: 'abort'; sourceId: number; }; /** worker → main */ export type WorkerResponse = { kind: 'opened'; requestId: number; sourceId: number; info: PointSourceInfo; } | { kind: 'chunk'; requestId: number; sourceId: number; chunk: SerializedChunk | null; } | { kind: 'error'; requestId: number; message: string; }; /** Wire-friendly chunk: typed-array views replaced by their underlying buffers. */ export interface SerializedChunk { positions: ArrayBuffer; colors?: ArrayBuffer; classifications?: ArrayBuffer; intensities?: ArrayBuffer; pointCount: number; bbox: PointCloudBBox; } /** Convert a chunk into a transferable wire payload + transfer list. */ export declare function chunkToWire(chunk: DecodedPointChunk): { payload: SerializedChunk; transfer: ArrayBuffer[]; }; /** Inverse of `chunkToWire`. */ export declare function chunkFromWire(payload: SerializedChunk): DecodedPointChunk; //# sourceMappingURL=protocol.d.ts.map