import { type LatLngLike, type Point } from "../geo.js"; import { InteractiveLayer } from "../interactive-layer.js"; import { type LayerOptions, type QueryHit, type ResolvedQueryOptions } from "../layer.js"; import type { Orihon } from "../map.js"; import type { ObjectIconAtlas } from "../services/object-icon-atlas.js"; export interface WebGLSymbolInstance { id?: string | number; lat: number; lng: number; icon: string; size: number; rotation: number; opacity: number; tint: readonly [number, number, number, number]; /** Motion: previous mercator */ prevLat?: number; prevLng?: number; /** Motion start on the performance.now() clock, in milliseconds. */ startTimeMs?: number; /** Motion duration in milliseconds; zero uses the destination immediately. */ durationMs?: number; } export interface WebGLSymbolLayerOptions extends LayerOptions { maxDpr?: number; interactive?: boolean; hitTolerance?: number; fallbackCanvas?: boolean; } type Resolved = Required; /** * Instanced icon quads from an ObjectIconAtlas. * Supports per-instance size, rotation (degrees), tint, and GPU motion mix. */ export interface WebGLSymbolEventMap { click: { originalEvent: MouseEvent; index: number; latlng: LatLngLike; data: WebGLSymbolInstance; }; } export declare class WebGLSymbolLayer extends InteractiveLayer { #private; canvas: HTMLCanvasElement | null; gl: WebGLRenderingContext | null; renderer: "webgl" | "canvas" | "none"; private program; private locs; private quadBuffer; private instanceBuffer; private texture; private atlas; private atlasVersion; private instances; private instanceData; private count; private dirty; private _interactionUnsub; private fallbackIcon; constructor(options?: WebGLSymbolLayerOptions); setAtlas(atlas: ObjectIconAtlas | null): this; setInstances(instances: Iterable): this; patchInstance(index: number, patch: Partial): this; patchById(id: string | number, patch: Partial): boolean; getCount(): number; onAdd(map: Orihon): void; onRemove(): void; queryHit(point: Point, options: ResolvedQueryOptions): QueryHit | null; render(): void; } export declare function webglSymbolLayer(options?: WebGLSymbolLayerOptions): WebGLSymbolLayer; export {}; //# sourceMappingURL=webgl-symbol-layer.d.ts.map