import type { PbfReader } from 'pbf-ts';
import type { BBox, BBox3D, VectorGeometryType, VectorMultiLineOffset, VectorMultiLineString, VectorMultiPoint, VectorMultiPolygon, VectorMultiPolygonOffset } from 's2json-spec';
import type { MapboxProperties, MapboxValue, MapboxVectorFeatureType, VectorGeometry } from '../vectorTile.spec.js';
/**
 * Mapbox Vector Feature types are all bundled in one class
 * to make it easier to read. Primarily contains an id, properties, and geometry.
 * The now deprecated S2 model extends this class to include indices and tessellation data.
 */
export default class MapboxVectorFeature {
    #private;
    id?: number;
    version: number;
    properties: MapboxProperties;
    extent: number;
    type: MapboxVectorFeatureType;
    isS2: boolean;
    /**
     * @param pbf - the pbf protocol we are reading from
     * @param end - the position to stop at
     * @param isS2 - whether the layer is a deprecated S2 layer or Mapbox layer.
     * @param extent - the extent of the vector tile
     * @param version - the version of the vector tile. S2 is 5, Mapbox is 1
     * @param keys - the keys in the vector layer to pull from
     * @param values - the values in the vector layer to pull from
     */
    constructor(pbf: PbfReader, end: number, isS2: boolean, extent: number, version: number, keys: string[], values: MapboxValue[]);
    /** @returns - the geometry type of the feature */
    geoType(): VectorGeometryType;
    /** @returns - true if the type of the feature is points */
    isPoints(): boolean;
    /** @returns - true if the type of the feature is lines */
    isLines(): boolean;
    /** @returns - true if the type of the feature is polygons */
    isPolygons(): boolean;
    /** @returns - true if the type of the feature is points 3D */
    isPoints3D(): boolean;
    /** @returns - true if the type of the feature is lines 3D */
    isLines3D(): boolean;
    /** @returns - true if the type of the feature is polygons 3D */
    isPolygons3D(): boolean;
    /** @returns - MapboxVectorTile's do not support m-values so we return false */
    get hasMValues(): boolean;
    /**
     * @returns - a default bbox. Since no bbox is present, the default is [0, 0, 0, 0]
     * also MapboxVectorTile's do not support 3D, so we only return a 2D bbox
     */
    bbox(): BBox | BBox3D;
    /** @returns - regardless of the type, we return a flattend point array */
    loadPoints(): VectorMultiPoint | undefined;
    /** @returns - an array of lines. The offsets will be set to 0 */
    loadLines(): [VectorMultiLineString, VectorMultiLineOffset] | undefined;
    /** @returns - an array of polys. The offsets will be set to 0 */
    loadPolys(): [VectorMultiPolygon, VectorMultiPolygonOffset] | undefined;
    /** @returns - [flattened geometry & tesslation if applicable, indices] */
    loadGeometryFlat(): [geometry: number[], indices: number[]];
    /** @returns - vector geometry relative to feature type. */
    loadGeometry(): VectorGeometry;
    /** @returns - an array of indices for the geometry */
    readIndices(): number[];
    /**
     * Add tessellation data to the geometry
     * @param geometry - the geometry to add the tessellation data to
     * @param multiplier - the multiplier to apply the extent shift
     */
    addTessellation(geometry: number[], multiplier: number): void;
}
//# sourceMappingURL=vectorFeature.d.ts.map