import { Evented } from '../util/evented';
import TileBounds from './tile_bounds';
import type { Source } from './source';
import type { OverscaledTileID } from './tile_id';
import type Map from '../ui/map';
import type Dispatcher from '../util/dispatcher';
import type Tile from './tile';
import type { Callback } from '../types/callback';
import type { Cancelable } from '../types/cancelable';
import type { VectorSourceSpecification, PromoteIdSpecification } from '../style-spec/types';
/**
 * A source containing vector tiles in [Mapbox Vector Tile format](https://docs.mapbox.com/vector-tiles/reference/).
 * (See the [Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/#vector) for detailed documentation of options.)
 *
 * @example
 * map.addSource('some id', {
 *     type: 'vector',
 *     url: 'mapbox://mapbox.mapbox-streets-v6'
 * });
 *
 * @example
 * map.addSource('some id', {
 *     type: 'vector',
 *     tiles: ['https://d25uarhxywzl1j.cloudfront.net/v0.1/{z}/{x}/{y}.mvt'],
 *     minzoom: 6,
 *     maxzoom: 14
 * });
 *
 * @example
 * map.getSource('some id').setUrl("mapbox://mapbox.mapbox-streets-v6");
 *
 * @example
 * map.getSource('some id').setTiles(['https://d25uarhxywzl1j.cloudfront.net/v0.1/{z}/{x}/{y}.mvt']);
 * @see [Add a vector tile source](https://maplibre.org/maplibre-gl-js-docs/example/vector-source/)
 * @see [Add a third party vector tile source](https://maplibre.org/maplibre-gl-js-docs/example/third-party/)
 */
declare class VectorTileSource extends Evented implements Source {
    type: 'vector';
    id: string;
    minzoom: number;
    maxzoom: number;
    url: string;
    scheme: string;
    tileSize: number;
    promoteId: PromoteIdSpecification | undefined | null;
    _options: VectorSourceSpecification;
    _collectResourceTiming: boolean;
    dispatcher: Dispatcher;
    map: Map;
    bounds: [number, number, number, number] | undefined | null;
    tiles: Array<string>;
    tileBounds: TileBounds;
    reparseOverscaled: boolean;
    isTileClipped: boolean;
    _tileJSONRequest: Cancelable | undefined | null;
    _loaded: boolean;
    constructor(id: string, options: VectorSourceSpecification & {
        collectResourceTiming: boolean;
    }, dispatcher: Dispatcher, eventedParent: Evented);
    load(): void;
    loaded(): boolean;
    hasTile(tileID: OverscaledTileID): boolean;
    onAdd(map: Map): void;
    setSourceProperty(callback: Function): void;
    /**
     * Sets the source `tiles` property and re-renders the map.
     *
     * @param {string[]} tiles An array of one or more tile source URLs, as in the TileJSON spec.
     * @returns {VectorTileSource} this
     */
    setTiles(tiles: Array<string>): this;
    /**
     * Sets the source `url` property and re-renders the map.
     *
     * @param {string} url A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://<Tileset ID>`.
     * @returns {VectorTileSource} this
     */
    setUrl(url: string): this;
    onRemove(): void;
    serialize(): any;
    loadTile(tile: Tile, callback: Callback<void>): void;
    abortTile(tile: Tile): void;
    unloadTile(tile: Tile): void;
    hasTransition(): boolean;
}
export default VectorTileSource;
//# sourceMappingURL=vector_tile_source.d.ts.map