import type { GraphDocument2d, PackedSceneGeometry, PolylineLayer, RenderScene2d, Viewport } from './types'; import type { SpatialResourceKey } from './tiles'; export type BuildMetrics = { queueMs: number; buildMs: number; packingMs?: number; reusedLayerCount: number; reusedParseCount: number; reusedAnalysisCount: number; reusedCompiledCount: number; cachedLayerEntryCount: number; }; export type SceneBuildRequest = { kind: 'scene'; id: number; document: GraphDocument2d; receivedAt: number; }; export type SpatialTileBuildRequest = { kind: 'spatial-tile'; id: number; document: GraphDocument2d; expressionId: string; viewport: Viewport; resource: SpatialResourceKey; receivedAt: number; }; export type WorkerBuildRequest = SceneBuildRequest | SpatialTileBuildRequest; export type WorkerBuildResponse = | { kind: 'scene'; id: number; scene: RenderScene2d; geometry?: PackedSceneGeometry; metrics: BuildMetrics; } | { kind: 'spatial-tile'; id: number; resource: SpatialResourceKey; scene: RenderScene2d; mask?: InequalityTileMask; polylines?: PackedTilePolyline[]; metrics: BuildMetrics; } | { kind: 'error'; id: number; error: string } | { kind: 'superseded'; id: number }; export interface SpatialTileResult { resource: SpatialResourceKey; scene: RenderScene2d; mask?: InequalityTileMask; polylines?: PackedTilePolyline[]; } export interface InequalityTileMask { width: number; height: number; alpha: Uint8Array; color: string; } export interface PackedTilePolyline { /** Interleaved math-space x/y coordinates. */ coordinates: Float64Array; /** Exclusive vertex indexes at which disconnected paths end. */ breaks: Uint32Array; layer: Omit; }