mapbox-gl
Version:
A WebGL interactive maps library
1,474 lines (1,473 loc) • 790 kB
TypeScript
import Point from '@mapbox/point-geometry';
import TinySDF from '@mapbox/tiny-sdf';
import { VectorTile, VectorTileFeature, VectorTileLayer } from '@mapbox/vector-tile';
import { mat2, mat4, quat, vec2, vec3, vec4 } from 'gl-matrix';
import KDBush from 'kdbush';
import Pbf from 'pbf';
import { PotpackBox } from 'potpack';
type Callback<T> = (error?: Error | null, result?: T | null) => void;
type Cancelable = {
cancel: () => void;
};
declare const ResourceType: {
readonly Unknown: "Unknown";
readonly Style: "Style";
readonly Source: "Source";
readonly Tile: "Tile";
readonly Glyphs: "Glyphs";
readonly SpriteImage: "SpriteImage";
readonly SpriteJSON: "SpriteJSON";
readonly Iconset: "Iconset";
readonly Image: "Image";
readonly Model: "Model";
};
/**
* A `RequestParameters` object to be returned from Map.options.transformRequest callbacks.
* @typedef {Object} RequestParameters
* @property {string} url The URL to be requested.
* @property {Object} headers The headers to be sent with the request.
* @property {string} method Request method `'GET' | 'POST' | 'PUT'`.
* @property {string} body Request body.
* @property {string} type Response body type to be returned `'string' | 'json' | 'arrayBuffer'`.
* @property {string} credentials `'same-origin'|'include'` Use 'include' to send cookies with cross-origin requests.
* @property {boolean} collectResourceTiming If true, Resource Timing API information will be collected for these transformed requests and returned in a resourceTiming property of relevant data events.
* @property {string} referrerPolicy A string representing the request's referrerPolicy. For more information and possible values, see the [Referrer-Policy HTTP header page](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy).
* @example
* // use transformRequest to modify requests that begin with `http://myHost`
* const map = new Map({
* container: 'map',
* style: 'mapbox://styles/mapbox/streets-v11',
* transformRequest: (url, resourceType) => {
* if (resourceType === 'Source' && url.indexOf('http://myHost') > -1) {
* return {
* url: url.replace('http', 'https'),
* headers: {'my-custom-header': true},
* credentials: 'include' // Include cookies for cross-origin requests
* };
* }
* }
* });
*
*/
export type RequestParameters = {
url: string;
headers?: Record<string, string>;
method?: "GET" | "POST" | "PUT";
body?: string;
type?: "string" | "json" | "arrayBuffer";
credentials?: "same-origin" | "include";
collectResourceTiming?: boolean;
referrerPolicy?: ReferrerPolicy;
};
type ResponseCallback<T> = (error?: Error | DOMException | AJAXError | null, data?: T | null, cacheControl?: string | null, expires?: string | null) => void;
declare class AJAXError extends Error {
status: number;
url: string;
constructor(message: string, status: number, url: string);
toString(): string;
}
declare class CanonicalTileID {
z: number;
x: number;
y: number;
key: number;
constructor(z: number, x: number, y: number);
equals(id: CanonicalTileID): boolean;
url(urls: Array<string>, scheme?: string | null): string;
toString(): string;
}
declare class UnwrappedTileID {
wrap: number;
canonical: CanonicalTileID;
key: number;
constructor(wrap: number, canonical: CanonicalTileID);
}
declare class OverscaledTileID {
overscaledZ: number;
wrap: number;
canonical: CanonicalTileID;
key: number;
projMatrix: mat4;
expandedProjMatrix: mat4;
visibleQuadrants?: number;
constructor(overscaledZ: number, wrap: number, z: number, x: number, y: number);
equals(id: OverscaledTileID): boolean;
scaledTo(targetZ: number): OverscaledTileID;
calculateScaledKey(targetZ: number, withWrap?: boolean): number;
isChildOf(parent: OverscaledTileID): boolean;
children(sourceMaxZoom: number): Array<OverscaledTileID>;
isLessThan(rhs: OverscaledTileID): boolean;
wrapped(): OverscaledTileID;
unwrapTo(wrap: number): OverscaledTileID;
overscaleFactor(): number;
toUnwrapped(): UnwrappedTileID;
toString(): string;
}
type LUT = {
image: {
width: number;
height: number;
data: Uint8Array;
};
};
declare class Color {
r: number;
g: number;
b: number;
a: number;
constructor(r: number, g: number, b: number, a?: number);
static black: Color;
static white: Color;
static transparent: Color;
static red: Color;
static blue: Color;
/**
* Parses valid CSS color strings and returns a `Color` instance.
* @returns A `Color` instance, or `undefined` if the input is not a valid color string.
*/
static parse(input?: string | Color | null): Color | undefined;
/**
* Returns an RGBA string representing the color value.
*
* @returns An RGBA string.
* @example
* var purple = new Color.parse('purple');
* purple.toString; // = "rgba(128,0,128,1)"
* var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');
* translucentGreen.toString(); // = "rgba(26,207,26,0.73)"
*/
toString(): string;
toNonPremultipliedRenderColor(lut: LUT | null): NonPremultipliedRenderColor;
toPremultipliedRenderColor(lut: LUT | null): NonPremultipliedRenderColor;
clone(): Color;
}
declare abstract class RenderColor {
premultiplied: boolean;
r: number;
g: number;
b: number;
a: number;
constructor(lut: LUT | null, r: number, g: number, b: number, a: number, premultiplied?: boolean);
/**
* Returns an RGBA array of values representing the color.
* @returns An array of RGBA color values in the range [0, 255].
*/
toArray(): [
number,
number,
number,
number
];
/**
* Returns an HSLA array of values representing the color, unpremultiplied by A.
* @returns An array of HSLA color values.
*/
toHslaArray(): [
number,
number,
number,
number
];
/**
* Returns a RGBA array of float values representing the color.
*
* @returns An array of RGBA color values in the range [0, 1].
*/
toArray01(): [
number,
number,
number,
number
];
/**
* Returns an RGB array of values representing the color, unpremultiplied by A and multiplied by a scalar.
*
* @param {number} scale A scale to apply to the unpremultiplied-alpha values.
* @returns An array of RGB color values in the range [0, 1].
*/
toArray01Scaled(scale: number): [
number,
number,
number
];
/**
* Returns an RGBA array of values representing the color converted to linear color space.
* The color is defined by sRGB primaries, but the sRGB transfer function
* is reversed to obtain linear energy.
* @returns An array of RGBA color values in the range [0, 1].
*/
toArray01Linear(): [
number,
number,
number,
number
];
}
declare class NonPremultipliedRenderColor extends RenderColor {
constructor(lut: LUT | null, r: number, g: number, b: number, a: number);
}
declare class PremultipliedRenderColor extends RenderColor {
constructor(lut: LUT | null, r: number, g: number, b: number, a: number);
}
declare class Collator {
locale: string | null;
sensitivity: "base" | "accent" | "case" | "variant";
collator: Intl.Collator;
constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null);
compare(lhs: string, rhs: string): number;
resolvedLocale(): string;
}
type Brand<T, U> = T & {
__brand: U;
};
type ImageIdSpec = {
name: string;
iconsetId?: string;
};
type StringifiedImageId = Brand<string, "ImageId">;
declare class ImageId {
name: string;
iconsetId?: string;
constructor(id: string | ImageId | ImageIdSpec);
static from(id: string | ImageId | ImageIdSpec): ImageId;
static toString(id: ImageId | ImageIdSpec): StringifiedImageId;
static parse(str: StringifiedImageId): ImageId | null;
static isEqual(a: ImageId | ImageIdSpec, b: ImageId | ImageIdSpec): boolean;
toString(): StringifiedImageId;
serialize(): ImageIdSpec;
}
type StringifiedImageVariant = Brand<string, "ImageVariant">;
type RasterizationOptions = {
params?: Record<string, Color>;
transform?: DOMMatrix;
};
declare class ImageVariant {
id: ImageId;
options: RasterizationOptions;
constructor(id: string | ImageIdSpec, options?: RasterizationOptions);
toString(): StringifiedImageVariant;
static parse(str: StringifiedImageVariant): ImageVariant | null;
scaleSelf(factor: number, yFactor?: number): this;
}
declare class ResolvedImage {
primaryId: ImageId;
primaryOptions?: RasterizationOptions;
secondaryId?: ImageId;
secondaryOptions?: RasterizationOptions;
available: boolean;
constructor(primaryId: string | ImageIdSpec, primaryOptions?: RasterizationOptions, secondaryId?: string | ImageIdSpec, secondaryOptions?: RasterizationOptions, available?: boolean);
toString(): string;
hasPrimary(): boolean;
getPrimary(): ImageVariant;
hasSecondary(): boolean;
getSecondary(): ImageVariant | null;
static from(image: string | ResolvedImage): ResolvedImage;
static build(primaryId: string | ImageIdSpec, secondaryId?: string | ImageIdSpec, primaryOptions?: RasterizationOptions, secondaryOptions?: RasterizationOptions): ResolvedImage | null;
}
declare class FormattedSection {
text: string;
image: ResolvedImage | null;
scale: number | null;
fontStack: string | null;
textColor: Color | null;
constructor(text: string, image: ResolvedImage | null, scale: number | null, fontStack: string | null, textColor: Color | null);
}
declare class Formatted {
sections: Array<FormattedSection>;
constructor(sections: Array<FormattedSection>);
static fromString(unformatted: string): Formatted;
isEmpty(): boolean;
static factory(text: Formatted | string): Formatted;
toString(): string;
serialize(): Array<unknown>;
}
type NullTypeT = {
kind: "null";
};
type NumberTypeT = {
kind: "number";
};
type StringTypeT = {
kind: "string";
};
type BooleanTypeT = {
kind: "boolean";
};
type ColorTypeT = {
kind: "color";
};
type ObjectTypeT = {
kind: "object";
};
type ValueTypeT = {
kind: "value";
};
type ErrorTypeT = {
kind: "error";
};
type CollatorTypeT = {
kind: "collator";
};
type FormattedTypeT = {
kind: "formatted";
};
type ResolvedImageTypeT = {
kind: "resolvedImage";
};
type Type = NullTypeT | NumberTypeT | StringTypeT | BooleanTypeT | ColorTypeT | ObjectTypeT | ValueTypeT | ArrayType | ErrorTypeT | CollatorTypeT | FormattedTypeT | ResolvedImageTypeT;
type ArrayType = {
kind: "array";
itemType: Type;
N: number | null | undefined;
};
type Value = null | string | boolean | number | Color | Collator | Formatted | ResolvedImage | ReadonlyArray<Value> | {
readonly [key: string]: Value;
};
type CanonicalTileID$1 = {
z: number;
x: number;
y: number;
};
type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? {
[K in keyof I]: I[K];
} : never;
export type ColorSpecification = string;
export type FormattedSpecification = string;
export type ResolvedImageSpecification = string;
export type PromoteIdSpecification = {
[_: string]: string | ExpressionSpecification;
} | string | ExpressionSpecification;
export type FilterSpecification = ExpressionSpecification | [
"has",
string
] | [
"!has",
string
] | [
"==",
string,
string | number | boolean
] | [
"!=",
string,
string | number | boolean
] | [
">",
string,
string | number | boolean
] | [
">=",
string,
string | number | boolean
] | [
"<",
string,
string | number | boolean
] | [
"<=",
string,
string | number | boolean
] | Array<string | FilterSpecification>;
export type TransitionSpecification = {
duration?: number;
delay?: number;
};
export type PropertyFunctionStop<T> = [
number,
T
];
export type ZoomAndPropertyFunctionStop<T> = [
{
zoom: number;
value: string | number | boolean;
},
T
];
/**
* @deprecated Use [Expressions](https://docs.mapbox.com/style-spec/reference/expressions/) syntax instead.
*/
export type FunctionSpecification<T> = {
stops: Array<PropertyFunctionStop<T> | ZoomAndPropertyFunctionStop<T>>;
base?: number;
property?: string;
type?: "identity" | "exponential" | "interval" | "categorical";
colorSpace?: "rgb" | "lab" | "hcl";
default?: T;
};
export type CameraFunctionSpecification<T> = {
type: "exponential";
stops: Array<[
number,
T
]>;
} | {
type: "interval";
stops: Array<[
number,
T
]>;
};
export type SourceFunctionSpecification<T> = {
type: "exponential";
stops: Array<[
number,
T
]>;
property: string;
default?: T;
} | {
type: "interval";
stops: Array<[
number,
T
]>;
property: string;
default?: T;
} | {
type: "categorical";
stops: Array<[
string | number | boolean,
T
]>;
property: string;
default?: T;
} | {
type: "identity";
property: string;
default?: T;
};
export type CompositeFunctionSpecification<T> = {
type: "exponential";
stops: Array<[
{
zoom: number;
value: number;
},
T
]>;
property: string;
default?: T;
} | {
type: "interval";
stops: Array<[
{
zoom: number;
value: number;
},
T
]>;
property: string;
default?: T;
} | {
type: "categorical";
stops: Array<[
{
zoom: number;
value: string | number | boolean;
},
T
]>;
property: string;
default?: T;
};
export type ExpressionSpecification = [
string,
...any[]
];
export type PropertyValueSpecification<T> = T | CameraFunctionSpecification<T> | ExpressionSpecification;
export type DataDrivenPropertyValueSpecification<T> = T | FunctionSpecification<T> | CameraFunctionSpecification<T> | SourceFunctionSpecification<T> | CompositeFunctionSpecification<T> | ExpressionSpecification | (T extends Array<infer U> ? Array<U | ExpressionSpecification> : never);
export type StyleSpecification = {
"version": 8;
"fragment"?: boolean;
"name"?: string;
"metadata"?: unknown;
"center"?: Array<number>;
"zoom"?: number;
"bearing"?: number;
"pitch"?: number;
"light"?: LightSpecification;
"lights"?: Array<LightsSpecification>;
"terrain"?: TerrainSpecification | null | undefined;
"fog"?: FogSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"snow"?: SnowSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"rain"?: RainSpecification;
"camera"?: CameraSpecification;
"color-theme"?: ColorThemeSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"indoor"?: IndoorSpecification;
"imports"?: Array<ImportSpecification>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"iconsets"?: IconsetsSpecification;
"schema"?: SchemaSpecification;
"sources": SourcesSpecification;
"sprite"?: string;
"glyphs"?: string;
"transition"?: TransitionSpecification;
"projection"?: ProjectionSpecification;
"layers": Array<LayerSpecification>;
"models"?: ModelsSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"featuresets"?: FeaturesetsSpecification;
};
export type SourcesSpecification = {
[_: string]: SourceSpecification;
};
export type ModelsSpecification = {
[_: string]: ModelSpecification;
};
export type IconsetsSpecification = {
[_: string]: IconsetSpecification;
};
export type LightSpecification = {
"anchor"?: PropertyValueSpecification<"map" | "viewport">;
"position"?: PropertyValueSpecification<[
number,
number,
number
]>;
"position-transition"?: TransitionSpecification;
"color"?: PropertyValueSpecification<ColorSpecification>;
"color-transition"?: TransitionSpecification;
"color-use-theme"?: PropertyValueSpecification<string>;
"intensity"?: PropertyValueSpecification<number>;
"intensity-transition"?: TransitionSpecification;
};
export type TerrainSpecification = {
"source": string;
"exaggeration"?: PropertyValueSpecification<number>;
"exaggeration-transition"?: TransitionSpecification;
};
export type FogSpecification = {
"range"?: PropertyValueSpecification<[
number,
number
]>;
"range-transition"?: TransitionSpecification;
"color"?: PropertyValueSpecification<ColorSpecification>;
"color-transition"?: TransitionSpecification;
"color-use-theme"?: PropertyValueSpecification<string>;
"high-color"?: PropertyValueSpecification<ColorSpecification>;
"high-color-transition"?: TransitionSpecification;
"high-color-use-theme"?: PropertyValueSpecification<string>;
"space-color"?: PropertyValueSpecification<ColorSpecification>;
"space-color-transition"?: TransitionSpecification;
"space-color-use-theme"?: PropertyValueSpecification<string>;
"horizon-blend"?: PropertyValueSpecification<number>;
"horizon-blend-transition"?: TransitionSpecification;
"star-intensity"?: PropertyValueSpecification<number>;
"star-intensity-transition"?: TransitionSpecification;
"vertical-range"?: PropertyValueSpecification<[
number,
number
]>;
"vertical-range-transition"?: TransitionSpecification;
};
export type SnowSpecification = {
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"density"?: PropertyValueSpecification<number>;
"density-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"intensity"?: PropertyValueSpecification<number>;
"intensity-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"color"?: PropertyValueSpecification<ColorSpecification>;
"color-transition"?: TransitionSpecification;
"color-use-theme"?: PropertyValueSpecification<string>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"opacity"?: PropertyValueSpecification<number>;
"opacity-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"vignette"?: PropertyValueSpecification<number>;
"vignette-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"vignette-color"?: PropertyValueSpecification<ColorSpecification>;
"vignette-color-transition"?: TransitionSpecification;
"vignette-color-use-theme"?: PropertyValueSpecification<string>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"center-thinning"?: PropertyValueSpecification<number>;
"center-thinning-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"direction"?: PropertyValueSpecification<[
number,
number
]>;
"direction-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"flake-size"?: PropertyValueSpecification<number>;
"flake-size-transition"?: TransitionSpecification;
};
export type RainSpecification = {
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"density"?: PropertyValueSpecification<number>;
"density-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"intensity"?: PropertyValueSpecification<number>;
"intensity-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"color"?: PropertyValueSpecification<ColorSpecification>;
"color-transition"?: TransitionSpecification;
"color-use-theme"?: PropertyValueSpecification<string>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"opacity"?: PropertyValueSpecification<number>;
"opacity-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"vignette"?: PropertyValueSpecification<number>;
"vignette-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"vignette-color"?: PropertyValueSpecification<ColorSpecification>;
"vignette-color-transition"?: TransitionSpecification;
"vignette-color-use-theme"?: PropertyValueSpecification<string>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"center-thinning"?: PropertyValueSpecification<number>;
"center-thinning-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"direction"?: PropertyValueSpecification<[
number,
number
]>;
"direction-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"droplet-size"?: PropertyValueSpecification<[
number,
number
]>;
"droplet-size-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"distortion-strength"?: PropertyValueSpecification<number>;
"distortion-strength-transition"?: TransitionSpecification;
};
export type CameraSpecification = {
"camera-projection"?: PropertyValueSpecification<"perspective" | "orthographic">;
"camera-projection-transition"?: TransitionSpecification;
};
export type ColorThemeSpecification = {
"data"?: ExpressionSpecification;
};
export type ProjectionSpecification = {
"name": "albers" | "equalEarth" | "equirectangular" | "lambertConformalConic" | "mercator" | "naturalEarth" | "winkelTripel" | "globe";
"center"?: [
number,
number
];
"parallels"?: [
number,
number
];
};
export type ImportSpecification = {
"id": string;
"url": string;
"config"?: ConfigSpecification;
"data"?: StyleSpecification;
"color-theme"?: ColorThemeSpecification | null | undefined;
};
export type IndoorSpecification = {
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"floorplanFeaturesetId"?: ExpressionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"buildingFeaturesetId"?: ExpressionSpecification;
};
export type ConfigSpecification = {
[_: string]: unknown;
};
export type SchemaSpecification = {
[_: string]: OptionSpecification;
};
export type OptionSpecification = {
"default": ExpressionSpecification;
"type"?: "string" | "number" | "boolean" | "color";
"array"?: boolean;
"minValue"?: number;
"maxValue"?: number;
"stepValue"?: number;
"values"?: Array<unknown>;
"metadata"?: unknown;
};
/**
* @experimental This is experimental and subject to change in future versions.
*/
export type FeaturesetsSpecification = {
[_: string]: FeaturesetSpecification;
};
/**
* @experimental This is experimental and subject to change in future versions.
*/
export type FeaturesetSpecification = {
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"metadata"?: unknown;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"selectors"?: Array<SelectorSpecification>;
};
/**
* @experimental This is experimental and subject to change in future versions.
*/
export type SelectorSpecification = {
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"layer": string;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"properties"?: SelectorPropertySpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"featureNamespace"?: string;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"_uniqueFeatureID"?: boolean;
};
/**
* @experimental This is experimental and subject to change in future versions.
*/
export type SelectorPropertySpecification = {
/**
* @experimental This property is experimental and subject to change in future versions.
*/
[_: string]: unknown;
};
export type VectorSourceSpecification = {
"type": "vector";
"url"?: string;
"tiles"?: Array<string>;
"bounds"?: [
number,
number,
number,
number
];
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"extra_bounds"?: Array<[
number,
number,
number,
number
]>;
"scheme"?: "xyz" | "tms";
"minzoom"?: number;
"maxzoom"?: number;
"attribution"?: string;
"promoteId"?: PromoteIdSpecification;
"volatile"?: boolean;
[_: string]: unknown;
};
export type RasterSourceSpecification = {
"type": "raster";
"url"?: string;
"tiles"?: Array<string>;
"bounds"?: [
number,
number,
number,
number
];
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"extra_bounds"?: Array<[
number,
number,
number,
number
]>;
"minzoom"?: number;
"maxzoom"?: number;
"tileSize"?: number;
"scheme"?: "xyz" | "tms";
"attribution"?: string;
"volatile"?: boolean;
[_: string]: unknown;
};
export type RasterDEMSourceSpecification = {
"type": "raster-dem";
"url"?: string;
"tiles"?: Array<string>;
"bounds"?: [
number,
number,
number,
number
];
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"extra_bounds"?: Array<[
number,
number,
number,
number
]>;
"minzoom"?: number;
"maxzoom"?: number;
"tileSize"?: number;
"attribution"?: string;
"encoding"?: "terrarium" | "mapbox";
"volatile"?: boolean;
[_: string]: unknown;
};
/**
* @experimental This is experimental and subject to change in future versions.
*/
export type RasterArraySourceSpecification = {
"type": "raster-array";
"url"?: string;
"tiles"?: Array<string>;
"bounds"?: [
number,
number,
number,
number
];
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"extra_bounds"?: Array<[
number,
number,
number,
number
]>;
"minzoom"?: number;
"maxzoom"?: number;
"tileSize"?: number;
"attribution"?: string;
"rasterLayers"?: unknown;
"volatile"?: boolean;
[_: string]: unknown;
};
export type GeoJSONSourceSpecification = {
"type": "geojson";
"data"?: GeoJSON.GeoJSON | string;
"maxzoom"?: number;
"minzoom"?: number;
"attribution"?: string;
"buffer"?: number;
"filter"?: unknown;
"tolerance"?: number;
"cluster"?: boolean;
"clusterRadius"?: number;
"clusterMaxZoom"?: number;
"clusterMinPoints"?: number;
"clusterProperties"?: unknown;
"lineMetrics"?: boolean;
"generateId"?: boolean;
"promoteId"?: PromoteIdSpecification;
"dynamic"?: boolean;
};
export type VideoSourceSpecification = {
"type": "video";
"urls": Array<string>;
"coordinates": [
[
number,
number
],
[
number,
number
],
[
number,
number
],
[
number,
number
]
];
};
export type ImageSourceSpecification = {
"type": "image";
"url"?: string;
"coordinates": [
[
number,
number
],
[
number,
number
],
[
number,
number
],
[
number,
number
]
];
};
export type ModelSourceSpecification = {
"type": "model" | "batched-model";
"maxzoom"?: number;
"minzoom"?: number;
"tiles"?: Array<string>;
};
export type SourceSpecification = VectorSourceSpecification | RasterSourceSpecification | RasterDEMSourceSpecification | RasterArraySourceSpecification | GeoJSONSourceSpecification | VideoSourceSpecification | ImageSourceSpecification | ModelSourceSpecification;
export type IconsetSpecification = {
"type": "sprite";
"url": string;
} | {
"type": "source";
"source": string;
};
export type ModelSpecification = string;
export type AmbientLightSpecification = {
"id": string;
"properties"?: {
"color"?: PropertyValueSpecification<ColorSpecification>;
"color-transition"?: TransitionSpecification;
"color-use-theme"?: PropertyValueSpecification<string>;
"intensity"?: PropertyValueSpecification<number>;
"intensity-transition"?: TransitionSpecification;
};
"type": "ambient";
};
export type DirectionalLightSpecification = {
"id": string;
"properties"?: {
"direction"?: PropertyValueSpecification<[
number,
number
]>;
"direction-transition"?: TransitionSpecification;
"color"?: PropertyValueSpecification<ColorSpecification>;
"color-transition"?: TransitionSpecification;
"color-use-theme"?: PropertyValueSpecification<string>;
"intensity"?: PropertyValueSpecification<number>;
"intensity-transition"?: TransitionSpecification;
"cast-shadows"?: boolean;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"shadow-quality"?: PropertyValueSpecification<number>;
"shadow-intensity"?: PropertyValueSpecification<number>;
"shadow-intensity-transition"?: TransitionSpecification;
};
"type": "directional";
};
export type FlatLightSpecification = {
"id": string;
"properties"?: {
"anchor"?: PropertyValueSpecification<"map" | "viewport">;
"position"?: PropertyValueSpecification<[
number,
number,
number
]>;
"position-transition"?: TransitionSpecification;
"color"?: PropertyValueSpecification<ColorSpecification>;
"color-transition"?: TransitionSpecification;
"color-use-theme"?: PropertyValueSpecification<string>;
"intensity"?: PropertyValueSpecification<number>;
"intensity-transition"?: TransitionSpecification;
};
"type": "flat";
};
export type LightsSpecification = AmbientLightSpecification | DirectionalLightSpecification | FlatLightSpecification;
export type FillLayerSpecification = {
"id": string;
"type": "fill";
"metadata"?: unknown;
"source": string;
"source-layer"?: string;
"slot"?: string;
"minzoom"?: number;
"maxzoom"?: number;
"filter"?: FilterSpecification;
"layout"?: {
"fill-sort-key"?: DataDrivenPropertyValueSpecification<number>;
"visibility"?: "visible" | "none" | ExpressionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"fill-elevation-reference"?: "none" | "hd-road-base" | "hd-road-markup" | ExpressionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"fill-construct-bridge-guard-rail"?: DataDrivenPropertyValueSpecification<boolean>;
};
"paint"?: {
"fill-antialias"?: PropertyValueSpecification<boolean>;
"fill-opacity"?: DataDrivenPropertyValueSpecification<number>;
"fill-opacity-transition"?: TransitionSpecification;
"fill-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"fill-color-transition"?: TransitionSpecification;
"fill-color-use-theme"?: PropertyValueSpecification<string>;
"fill-outline-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"fill-outline-color-transition"?: TransitionSpecification;
"fill-outline-color-use-theme"?: PropertyValueSpecification<string>;
"fill-translate"?: PropertyValueSpecification<[
number,
number
]>;
"fill-translate-transition"?: TransitionSpecification;
"fill-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">;
"fill-pattern"?: DataDrivenPropertyValueSpecification<ResolvedImageSpecification>;
"fill-pattern-cross-fade"?: PropertyValueSpecification<number>;
"fill-emissive-strength"?: PropertyValueSpecification<number>;
"fill-emissive-strength-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"fill-z-offset"?: DataDrivenPropertyValueSpecification<number>;
"fill-z-offset-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"fill-bridge-guard-rail-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"fill-bridge-guard-rail-color-transition"?: TransitionSpecification;
"fill-bridge-guard-rail-color-use-theme"?: PropertyValueSpecification<string>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"fill-tunnel-structure-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"fill-tunnel-structure-color-transition"?: TransitionSpecification;
"fill-tunnel-structure-color-use-theme"?: PropertyValueSpecification<string>;
};
};
/**
* @deprecated Use `FillLayerSpecification['layout']` instead.
*/
export type FillLayout = FillLayerSpecification["layout"];
/**
* @deprecated Use `FillLayerSpecification['paint']` instead.
*/
export type FillPaint = FillLayerSpecification["paint"];
export type LineLayerSpecification = {
"id": string;
"type": "line";
"metadata"?: unknown;
"source": string;
"source-layer"?: string;
"slot"?: string;
"minzoom"?: number;
"maxzoom"?: number;
"filter"?: FilterSpecification;
"layout"?: {
"line-cap"?: DataDrivenPropertyValueSpecification<"butt" | "round" | "square">;
"line-join"?: DataDrivenPropertyValueSpecification<"bevel" | "round" | "miter" | "none">;
"line-miter-limit"?: PropertyValueSpecification<number>;
"line-round-limit"?: PropertyValueSpecification<number>;
"line-sort-key"?: DataDrivenPropertyValueSpecification<number>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"line-z-offset"?: DataDrivenPropertyValueSpecification<number>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"line-elevation-reference"?: "none" | "sea" | "ground" | "hd-road-markup" | ExpressionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"line-cross-slope"?: ExpressionSpecification;
"visibility"?: "visible" | "none" | ExpressionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"line-width-unit"?: PropertyValueSpecification<"pixels" | "meters">;
};
"paint"?: {
"line-opacity"?: DataDrivenPropertyValueSpecification<number>;
"line-opacity-transition"?: TransitionSpecification;
"line-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"line-color-transition"?: TransitionSpecification;
"line-color-use-theme"?: PropertyValueSpecification<string>;
"line-translate"?: PropertyValueSpecification<[
number,
number
]>;
"line-translate-transition"?: TransitionSpecification;
"line-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">;
"line-width"?: DataDrivenPropertyValueSpecification<number>;
"line-width-transition"?: TransitionSpecification;
"line-gap-width"?: DataDrivenPropertyValueSpecification<number>;
"line-gap-width-transition"?: TransitionSpecification;
"line-offset"?: DataDrivenPropertyValueSpecification<number>;
"line-offset-transition"?: TransitionSpecification;
"line-blur"?: DataDrivenPropertyValueSpecification<number>;
"line-blur-transition"?: TransitionSpecification;
"line-dasharray"?: DataDrivenPropertyValueSpecification<Array<number>>;
"line-pattern"?: DataDrivenPropertyValueSpecification<ResolvedImageSpecification>;
"line-pattern-cross-fade"?: PropertyValueSpecification<number>;
"line-gradient"?: ExpressionSpecification;
"line-gradient-use-theme"?: PropertyValueSpecification<string>;
"line-trim-offset"?: [
number,
number
];
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"line-trim-fade-range"?: PropertyValueSpecification<[
number,
number
]>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"line-trim-color"?: PropertyValueSpecification<ColorSpecification>;
"line-trim-color-transition"?: TransitionSpecification;
"line-trim-color-use-theme"?: PropertyValueSpecification<string>;
"line-emissive-strength"?: PropertyValueSpecification<number>;
"line-emissive-strength-transition"?: TransitionSpecification;
"line-border-width"?: DataDrivenPropertyValueSpecification<number>;
"line-border-width-transition"?: TransitionSpecification;
"line-border-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"line-border-color-transition"?: TransitionSpecification;
"line-border-color-use-theme"?: PropertyValueSpecification<string>;
"line-occlusion-opacity"?: PropertyValueSpecification<number>;
"line-occlusion-opacity-transition"?: TransitionSpecification;
};
};
/**
* @deprecated Use `LineLayerSpecification['layout']` instead.
*/
export type LineLayout = LineLayerSpecification["layout"];
/**
* @deprecated Use `LineLayerSpecification['paint']` instead.
*/
export type LinePaint = LineLayerSpecification["paint"];
export type SymbolLayerSpecification = {
"id": string;
"type": "symbol";
"metadata"?: unknown;
"source": string;
"source-layer"?: string;
"slot"?: string;
"minzoom"?: number;
"maxzoom"?: number;
"filter"?: FilterSpecification;
"layout"?: {
"symbol-placement"?: PropertyValueSpecification<"point" | "line" | "line-center">;
"symbol-spacing"?: PropertyValueSpecification<number>;
"symbol-avoid-edges"?: PropertyValueSpecification<boolean>;
"symbol-sort-key"?: DataDrivenPropertyValueSpecification<number>;
"symbol-z-order"?: PropertyValueSpecification<"auto" | "viewport-y" | "source">;
"symbol-z-elevate"?: PropertyValueSpecification<boolean>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"symbol-elevation-reference"?: PropertyValueSpecification<"sea" | "ground" | "hd-road-markup">;
"icon-allow-overlap"?: PropertyValueSpecification<boolean>;
"icon-ignore-placement"?: PropertyValueSpecification<boolean>;
"icon-optional"?: PropertyValueSpecification<boolean>;
"icon-rotation-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">;
"icon-size"?: DataDrivenPropertyValueSpecification<number>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"icon-size-scale-range"?: ExpressionSpecification;
"icon-text-fit"?: DataDrivenPropertyValueSpecification<"none" | "width" | "height" | "both">;
"icon-text-fit-padding"?: DataDrivenPropertyValueSpecification<[
number,
number,
number,
number
]>;
"icon-image"?: DataDrivenPropertyValueSpecification<ResolvedImageSpecification>;
"icon-rotate"?: DataDrivenPropertyValueSpecification<number>;
"icon-padding"?: PropertyValueSpecification<number>;
"icon-keep-upright"?: PropertyValueSpecification<boolean>;
"icon-offset"?: DataDrivenPropertyValueSpecification<[
number,
number
]>;
"icon-anchor"?: DataDrivenPropertyValueSpecification<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">;
"icon-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">;
"text-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">;
"text-rotation-alignment"?: PropertyValueSpecification<"map" | "viewport" | "auto">;
"text-field"?: DataDrivenPropertyValueSpecification<FormattedSpecification>;
"text-font"?: DataDrivenPropertyValueSpecification<Array<string>>;
"text-size"?: DataDrivenPropertyValueSpecification<number>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"text-size-scale-range"?: ExpressionSpecification;
"text-max-width"?: DataDrivenPropertyValueSpecification<number>;
"text-line-height"?: DataDrivenPropertyValueSpecification<number>;
"text-letter-spacing"?: DataDrivenPropertyValueSpecification<number>;
"text-justify"?: DataDrivenPropertyValueSpecification<"auto" | "left" | "center" | "right">;
"text-radial-offset"?: DataDrivenPropertyValueSpecification<number>;
"text-variable-anchor"?: PropertyValueSpecification<Array<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">>;
"text-anchor"?: DataDrivenPropertyValueSpecification<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">;
"text-max-angle"?: PropertyValueSpecification<number>;
"text-writing-mode"?: PropertyValueSpecification<Array<"horizontal" | "vertical">>;
"text-rotate"?: DataDrivenPropertyValueSpecification<number>;
"text-padding"?: PropertyValueSpecification<number>;
"text-keep-upright"?: PropertyValueSpecification<boolean>;
"text-transform"?: DataDrivenPropertyValueSpecification<"none" | "uppercase" | "lowercase">;
"text-offset"?: DataDrivenPropertyValueSpecification<[
number,
number
]>;
"text-allow-overlap"?: PropertyValueSpecification<boolean>;
"text-ignore-placement"?: PropertyValueSpecification<boolean>;
"text-optional"?: PropertyValueSpecification<boolean>;
"visibility"?: "visible" | "none" | ExpressionSpecification;
};
"paint"?: {
"icon-opacity"?: DataDrivenPropertyValueSpecification<number>;
"icon-opacity-transition"?: TransitionSpecification;
"icon-occlusion-opacity"?: DataDrivenPropertyValueSpecification<number>;
"icon-occlusion-opacity-transition"?: TransitionSpecification;
"icon-emissive-strength"?: DataDrivenPropertyValueSpecification<number>;
"icon-emissive-strength-transition"?: TransitionSpecification;
"text-emissive-strength"?: DataDrivenPropertyValueSpecification<number>;
"text-emissive-strength-transition"?: TransitionSpecification;
"icon-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"icon-color-transition"?: TransitionSpecification;
"icon-color-use-theme"?: PropertyValueSpecification<string>;
"icon-halo-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"icon-halo-color-transition"?: TransitionSpecification;
"icon-halo-color-use-theme"?: PropertyValueSpecification<string>;
"icon-halo-width"?: DataDrivenPropertyValueSpecification<number>;
"icon-halo-width-transition"?: TransitionSpecification;
"icon-halo-blur"?: DataDrivenPropertyValueSpecification<number>;
"icon-halo-blur-transition"?: TransitionSpecification;
"icon-translate"?: PropertyValueSpecification<[
number,
number
]>;
"icon-translate-transition"?: TransitionSpecification;
"icon-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">;
"icon-image-cross-fade"?: PropertyValueSpecification<number>;
"text-opacity"?: DataDrivenPropertyValueSpecification<number>;
"text-opacity-transition"?: TransitionSpecification;
"text-occlusion-opacity"?: DataDrivenPropertyValueSpecification<number>;
"text-occlusion-opacity-transition"?: TransitionSpecification;
"text-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"text-color-transition"?: TransitionSpecification;
"text-color-use-theme"?: PropertyValueSpecification<string>;
"text-halo-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"text-halo-color-transition"?: TransitionSpecification;
"text-halo-color-use-theme"?: PropertyValueSpecification<string>;
"text-halo-width"?: DataDrivenPropertyValueSpecification<number>;
"text-halo-width-transition"?: TransitionSpecification;
"text-halo-blur"?: DataDrivenPropertyValueSpecification<number>;
"text-halo-blur-transition"?: TransitionSpecification;
"text-translate"?: PropertyValueSpecification<[
number,
number
]>;
"text-translate-transition"?: TransitionSpecification;
"text-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">;
"icon-color-saturation"?: ExpressionSpecification;
"icon-color-contrast"?: ExpressionSpecification;
"icon-color-brightness-min"?: ExpressionSpecification;
"icon-color-brightness-max"?: ExpressionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"symbol-z-offset"?: DataDrivenPropertyValueSpecification<number>;
"symbol-z-offset-transition"?: TransitionSpecification;
};
};
/**
* @deprecated Use `SymbolLayerSpecification['layout']` instead.
*/
export type SymbolLayout = SymbolLayerSpecification["layout"];
/**
* @deprecated Use `SymbolLayerSpecification['paint']` instead.
*/
export type SymbolPaint = SymbolLayerSpecification["paint"];
export type CircleLayerSpecification = {
"id": string;
"type": "circle";
"metadata"?: unknown;
"source": string;
"source-layer"?: string;
"slot"?: string;
"minzoom"?: number;
"maxzoom"?: number;
"filter"?: FilterSpecification;
"layout"?: {
"circle-sort-key"?: DataDrivenPropertyValueSpecification<number>;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"circle-elevation-reference"?: "none" | "hd-road-markup" | ExpressionSpecification;
"visibility"?: "visible" | "none" | ExpressionSpecification;
};
"paint"?: {
"circle-radius"?: DataDrivenPropertyValueSpecification<number>;
"circle-radius-transition"?: TransitionSpecification;
"circle-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"circle-color-transition"?: TransitionSpecification;
"circle-color-use-theme"?: PropertyValueSpecification<string>;
"circle-blur"?: DataDrivenPropertyValueSpecification<number>;
"circle-blur-transition"?: TransitionSpecification;
"circle-opacity"?: DataDrivenPropertyValueSpecification<number>;
"circle-opacity-transition"?: TransitionSpecification;
"circle-translate"?: PropertyValueSpecification<[
number,
number
]>;
"circle-translate-transition"?: TransitionSpecification;
"circle-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">;
"circle-pitch-scale"?: PropertyValueSpecification<"map" | "viewport">;
"circle-pitch-alignment"?: PropertyValueSpecification<"map" | "viewport">;
"circle-stroke-width"?: DataDrivenPropertyValueSpecification<number>;
"circle-stroke-width-transition"?: TransitionSpecification;
"circle-stroke-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"circle-stroke-color-transition"?: TransitionSpecification;
"circle-stroke-color-use-theme"?: PropertyValueSpecification<string>;
"circle-stroke-opacity"?: DataDrivenPropertyValueSpecification<number>;
"circle-stroke-opacity-transition"?: TransitionSpecification;
"circle-emissive-strength"?: PropertyValueSpecification<number>;
"circle-emissive-strength-transition"?: TransitionSpecification;
};
};
/**
* @deprecated Use `CircleLayerSpecification['layout']` instead.
*/
export type CircleLayout = CircleLayerSpecification["layout"];
/**
* @deprecated Use `CircleLayerSpecification['paint']` instead.
*/
export type CirclePaint = CircleLayerSpecification["paint"];
export type HeatmapLayerSpecification = {
"id": string;
"type": "heatmap";
"metadata"?: unknown;
"source": string;
"source-layer"?: string;
"slot"?: string;
"minzoom"?: number;
"maxzoom"?: number;
"filter"?: FilterSpecification;
"layout"?: {
"visibility"?: "visible" | "none" | ExpressionSpecification;
};
"paint"?: {
"heatmap-radius"?: DataDrivenPropertyValueSpecification<number>;
"heatmap-radius-transition"?: TransitionSpecification;
"heatmap-weight"?: DataDrivenPropertyValueSpecification<number>;
"heatmap-intensity"?: PropertyValueSpecification<number>;
"heatmap-intensity-transition"?: TransitionSpecification;
"heatmap-color"?: ExpressionSpecification;
"heatmap-color-use-theme"?: PropertyValueSpecification<string>;
"heatmap-opacity"?: PropertyValueSpecification<number>;
"heatmap-opacity-transition"?: TransitionSpecification;
};
};
/**
* @deprecated Use `HeatmapLayerSpecification['layout']` instead.
*/
export type HeatmapLayout = HeatmapLayerSpecification["layout"];
/**
* @deprecated Use `HeatmapLayerSpecification['paint']` instead.
*/
export type HeatmapPaint = HeatmapLayerSpecification["paint"];
export type FillExtrusionLayerSpecification = {
"id": string;
"type": "fill-extrusion";
"metadata"?: unknown;
"source": string;
"source-layer"?: string;
"slot"?: string;
"minzoom"?: number;
"maxzoom"?: number;
"filter"?: FilterSpecification;
"layout"?: {
"visibility"?: "visible" | "none" | ExpressionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"fill-extrusion-edge-radius"?: ExpressionSpecification;
};
"paint"?: {
"fill-extrusion-opacity"?: PropertyValueSpecification<number>;
"fill-extrusion-opacity-transition"?: TransitionSpecification;
"fill-extrusion-color"?: DataDrivenPropertyValueSpecification<ColorSpecification>;
"fill-extrusion-color-transition"?: TransitionSpecification;
"fill-extrusion-color-use-theme"?: PropertyValueSpecification<string>;
"fill-extrusion-translate"?: PropertyValueSpecification<[
number,
number
]>;
"fill-extrusion-translate-transition"?: TransitionSpecification;
"fill-extrusion-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">;
"fill-extrusion-pattern"?: DataDrivenPropertyValueSpecification<ResolvedImageSpecification>;
"fill-extrusion-pattern-cross-fade"?: PropertyValueSpecification<number>;
"fill-extrusion-height"?: DataDrivenPropertyValueSpecification<number>;
"fill-extrusion-height-transition"?: TransitionSpecification;
"fill-extrusion-base"?: DataDrivenPropertyValueSpecification<number>;
"fill-extrusion-base-transition"?: TransitionSpecification;
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"fill-extrusion-height-alignment"?: "terrain" | "flat";
/**
* @experimental This property is experimental and subject to change in future versions.
*/
"fill-extrusion-base-alignment"?: "terrain" | "flat";
"fill-extrusion-vertical-gradient"?: PropertyValueSpecification<boolean>;
"fill-extrusion-ambient-occlusion-intensity"?: PropertyValueSpecification<number>;
"fill-extrusion-ambient-occlusion-intensity-transition"?: TransitionSpecification;
"fill-extrusion-ambient-occlusion-radius"?: PropertyValueSpecification<number>;
"fill-extrusion-ambient-occlusion-radius-transition"?: Tra