import type { GeoJSONFeature } from "./geojson.js"; import type { VectorTileCoordinates, VectorTileProvider } from "./vector-tile-layer.js"; type PbfValue = string | number | boolean | null; export interface MVTDecodeOptions { layer?: string | string[]; idProperty?: string; /** Skip decode when the buffer is larger than this. Default 2 MiB. */ maxBytes?: number; /** Stop after this many features. Default 16384. */ maxFeatures?: number; /** Drop protobuf strings longer than this. Default 8192. */ maxStringLength?: number; } export interface PackedMVTLayer { name: string; extent: number; keys: string[]; values: PbfValue[]; /** Interleaved tile-local x,y (extent units). */ xy: Int32Array; types: Uint8Array; ids: Array; /** Vertex index start per feature; length = featureCount + 1. */ vertexOffsets: Uint32Array; /** Index into `partEnds` per feature; length = featureCount + 1. */ partOffsets: Uint32Array; /** Exclusive vertex index for each ring / line. */ partEnds: Uint32Array; /** Index into `tags` per feature; length = featureCount + 1. */ tagOffsets: Uint32Array; tags: Uint32Array; } export interface PackedVectorTile { x: number; y: number; z: number; layers: PackedMVTLayer[]; } /** Internal parser primitives reused by the feature-level WASM fallback. */ export declare const packedMvtInternals: { PbfReader: { new (bytes: Uint8Array, end: number, maxLength: number, maxString: number, position?: number): { position: number; view: DataView; readonly bytes: Uint8Array; readonly end: number; readonly maxLength: number; readonly maxString: number; get done(): boolean; fork(start: number, end: number): /*elided*/ any; tag(): { field: number; wire: number; }; varint(): number; svarint(): number; readRange(): { start: number; end: number; }; packedVarints(): Uint32Array; string(): string; float(): number; double(): number; skip(wire: number): void; }; }; readValue: (reader: { position: number; view: DataView; readonly bytes: Uint8Array; readonly end: number; readonly maxLength: number; readonly maxString: number; get done(): boolean; fork(start: number, end: number): /*elided*/ any; tag(): { field: number; wire: number; }; varint(): number; svarint(): number; readRange(): { start: number; end: number; }; packedVarints(): Uint32Array; string(): string; float(): number; double(): number; skip(wire: number): void; }) => PbfValue; growInt32: (buffer: Int32Array, min: number) => Int32Array; growUint32: (buffer: Uint32Array, min: number) => Uint32Array; }; export type PackedTileDecoder = (data: ArrayBuffer | Uint8Array, tile: Pick, options?: MVTDecodeOptions) => PackedVectorTile | null; /** Optional `orihon/mlt` (and Advanced `orihon`) registers a sniffer so `decodePackedMVT` / `createMVTProvider` accept MLT. */ export declare function registerPackedTileSniffer(sniff: PackedTileDecoder): void; /** Optional `orihon/mvt-wasm` (and Advanced `orihon`) registers a WASM packed decoder used before the JS MVT path. */ export declare function registerPackedMvtWasm(decoder: PackedTileDecoder | null): void; /** JS protobuf path — WASM/MLT fallbacks must call this, not `decodePackedMVT`. */ export declare function decodePackedMVTJs(data: ArrayBuffer | Uint8Array, tile: Pick, options?: MVTDecodeOptions): PackedVectorTile; export declare function decodePackedMVT(data: ArrayBuffer | Uint8Array, tile: Pick, options?: MVTDecodeOptions): PackedVectorTile; export declare function packedToGeoJSON(packed: PackedVectorTile, options?: MVTDecodeOptions): GeoJSONFeature[]; export declare function decodeMVT(data: ArrayBuffer | Uint8Array, tile: Pick, options?: MVTDecodeOptions): GeoJSONFeature[]; export declare function createMVTProvider(urlTemplate: string | ((tile: VectorTileCoordinates) => string), options?: MVTDecodeOptions): VectorTileProvider; export declare function packedMvtWorkerSource(): string; export declare function decodePackedMVTAsync(data: ArrayBuffer | Uint8Array, tile: Pick, options?: MVTDecodeOptions): Promise; export {}; //# sourceMappingURL=mvt.d.ts.map