interface Header {
    centerX?: number;
    centerY?: number;
    centerZ?: number;
    minHeight?: number;
    maxHeight?: number;
    boundingSphereCenterX?: number;
    boundingSphereCenterY?: number;
    boundingSphereCenterZ?: number;
    boundingSphereRadius?: number;
    horizonOcclusionPointX?: number;
    horizonOcclusionPointY?: number;
    horizonOcclusionPointZ?: number;
}
type HeaderKeys = keyof Header;
declare const QUANTIZED_MESH_HEADER: Map<keyof Header, number>;
type TileDataView = DataView<ArrayBufferLike>;
declare function decodeZigZag(value: number): number;
declare function decodeHeader(dataView: TileDataView): {
    header: Header;
    headerEndPosition: number;
};
declare function decodeVertexData(dataView: TileDataView, headerEndPosition: number): {
    vertexData: Uint16Array<ArrayBuffer>;
    vertexDataEndPosition: number;
};
declare function decodeIndex(buffer: ArrayBufferLike, position: number, indicesCount: number, bytesPerIndex: number, encoded?: boolean): Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
declare function decodeTriangleIndices(dataView: TileDataView, vertexData: Uint16Array<ArrayBuffer>, vertexDataEndPosition: number): {
    triangleIndicesEndPosition: number;
    triangleIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
};
declare function decodeEdgeIndices(dataView: TileDataView, vertexData: Uint16Array<ArrayBuffer>, triangleIndicesEndPosition: number): {
    edgeIndicesEndPosition: number;
    westIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    southIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    eastIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    northIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
};
declare function decodeVertexNormalsExtension(extensionDataView: TileDataView): Uint8Array<ArrayBufferLike>;
declare function decodeWaterMaskExtension(extensionDataView: TileDataView): ArrayBuffer;
declare function decodeMetadataExtension(extensionDataView: TileDataView): any;
declare function decodeExtensions(dataView: TileDataView, indicesEndPosition: number): {
    extensions: {
        [key: string]: any;
    };
    extensionsEndPosition: number;
};
declare const DECODING_STEPS: {
    header: number;
    vertices: number;
    triangleIndices: number;
    edgeIndices: number;
    extensions: number;
};
declare function decode(data: ArrayBufferLike, userOptions?: {
    maxDecodingStep?: number;
}): {
    header: Header;
    vertexData?: undefined;
    triangleIndices?: undefined;
    westIndices?: undefined;
    northIndices?: undefined;
    eastIndices?: undefined;
    southIndices?: undefined;
    extensions?: undefined;
} | {
    header: Header;
    vertexData: Uint16Array<ArrayBuffer>;
    triangleIndices?: undefined;
    westIndices?: undefined;
    northIndices?: undefined;
    eastIndices?: undefined;
    southIndices?: undefined;
    extensions?: undefined;
} | {
    header: Header;
    vertexData: Uint16Array<ArrayBuffer>;
    triangleIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    westIndices?: undefined;
    northIndices?: undefined;
    eastIndices?: undefined;
    southIndices?: undefined;
    extensions?: undefined;
} | {
    header: Header;
    vertexData: Uint16Array<ArrayBuffer>;
    triangleIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    westIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    northIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    eastIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    southIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    extensions?: undefined;
} | {
    header: Header;
    vertexData: Uint16Array<ArrayBuffer>;
    triangleIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    westIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    northIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    eastIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    southIndices: Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    extensions: {
        [key: string]: any;
    };
};

export { DECODING_STEPS, QUANTIZED_MESH_HEADER, decode, decodeEdgeIndices, decodeExtensions, decodeHeader, decodeIndex, decodeMetadataExtension, decodeTriangleIndices, decodeVertexData, decodeVertexNormalsExtension, decodeWaterMaskExtension, decodeZigZag };
export type { Header, HeaderKeys, TileDataView };
