UNPKG

maplibre-gl

Version:

BSD licensed community fork of mapbox-gl, a WebGL interactive maps library

1,354 lines (1,352 loc) 417 kB
// Generated by dts-bundle-generator v8.1.2 import Point from '@mapbox/point-geometry'; import TinySDF from '@mapbox/tiny-sdf'; import { VectorTileFeature, VectorTileLayer } from '@mapbox/vector-tile'; import { Color, CompositeExpression, Feature, FeatureFilter, FeatureState, FilterSpecification, Formatted, FormattedSection, GeoJSONSourceSpecification, GlobalProperties, ICanonicalTileID, IMercatorCoordinate, ImageSourceSpecification, InterpolationType, LayerSpecification, LightSpecification, Padding, PromoteIdSpecification, PropertyValueSpecification, RasterDEMSourceSpecification, RasterSourceSpecification, ResolvedImage, SourceExpression, SourceSpecification, SpriteSpecification, StylePropertyExpression, StylePropertySpecification, StyleSpecification, TerrainSpecification, TransitionSpecification, VariableAnchorOffsetCollection, VectorSourceSpecification, VideoSourceSpecification } from '@maplibre/maplibre-gl-style-spec'; import { mat2, mat4, vec4 } from 'gl-matrix'; import KDBush from 'kdbush'; import { PotpackBox } from 'potpack'; import { ClusterProperties, Options } from 'supercluster'; /** * A request that can be cancelled */ export type Cancelable = { cancel: () => void; }; /** * A callback definition. * * @example * ```ts * asyncFunction((error, result) => { * if (error) { * // handle error * } else if (result) { * // handle success * } * }); * ``` */ export type Callback<T> = (error?: Error | null, result?: T | null) => void; /** * A `RequestParameters` object to be returned from Map.options.transformRequest callbacks. * @example * ```ts * // use transformRequest to modify requests that begin with `http://myHost` * transformRequest: function(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 = { /** * The URL to be requested. */ url: string; /** * The headers to be sent with the request. */ headers?: any; /** * Request method `'GET' | 'POST' | 'PUT'`. */ method?: "GET" | "POST" | "PUT"; /** * Request body. */ body?: string; /** * Response body type to be returned `'string' | 'json' | 'arrayBuffer'`. */ type?: "string" | "json" | "arrayBuffer" | "image"; /** * `'same-origin'|'include'` Use 'include' to send cookies with cross-origin requests. */ credentials?: "same-origin" | "include"; /** * If `true`, Resource Timing API information will be collected for these transformed requests and returned in a resourceTiming property of relevant data events. */ collectResourceTiming?: boolean; /** * Parameters supported only by browser fetch API. Property of the Request interface contains the cache mode of the request. It controls how the request will interact with the browser's HTTP cache. (https://developer.mozilla.org/en-US/docs/Web/API/Request/cache) */ cache?: RequestCache; }; /** * The response callback used in various places */ export type ResponseCallback<T> = (error?: Error | null, data?: T | null, cacheControl?: string | null, expires?: string | null) => void; export declare class AJAXError extends Error { /** * The response's HTTP status code. */ status: number; /** * The response's HTTP status text. */ statusText: string; /** * The request's URL. */ url: string; /** * The response's body. */ body: Blob; /** * @param status - The response's HTTP status code. * @param statusText - The response's HTTP status text. * @param url - The request's URL. * @param body - The response's body. */ constructor(status: number, statusText: string, url: string, body: Blob); } /** * A type used to store the tile's expiration date and cache control definition */ export type ExpiryData = { cacheControl?: string | null; expires?: Date | string | null; }; /** * The callback that is being called after an image was fetched */ export type GetImageCallback = (error?: Error | null, image?: HTMLImageElement | ImageBitmap | null, expiry?: ExpiryData | null) => void; /** * A type of MapLibre resource. */ export declare const enum ResourceType { Glyphs = "Glyphs", Image = "Image", Source = "Source", SpriteImage = "SpriteImage", SpriteJSON = "SpriteJSON", Style = "Style", Tile = "Tile", Unknown = "Unknown" } /** * This function is used to tranform a request. * It is used just before executing the relevant request. */ export type RequestTransformFunction = (url: string, resourceType?: ResourceType) => RequestParameters | undefined; export declare class RequestManager { _transformRequestFn: RequestTransformFunction; constructor(transformRequestFn?: RequestTransformFunction); transformRequest(url: string, type: ResourceType): RequestParameters; normalizeSpriteURL(url: string, format: string, extension: string): string; setTransformRequest(transformRequest: RequestTransformFunction): void; } /** * A listener method used as a callback to events */ export type Listener = (a: any) => any; export type Listeners = { [_: string]: Array<Listener>; }; export declare class Event { readonly type: string; constructor(type: string, data?: any); } export declare class Evented { _listeners: Listeners; _oneTimeListeners: Listeners; _eventedParent: Evented; _eventedParentData: any | (() => any); /** * Adds a listener to a specified event type. * * @param type - The event type to add a listen for. * @param listener - The function to be called when the event is fired. * The listener function is called with the data object passed to `fire`, * extended with `target` and `type` properties. * @returns `this` */ on(type: string, listener: Listener): this; /** * Removes a previously registered event listener. * * @param type - The event type to remove listeners for. * @param listener - The listener function to remove. * @returns `this` */ off(type: string, listener: Listener): this; /** * Adds a listener that will be called only once to a specified event type. * * The listener will be called first time the event fires after the listener is registered. * * @param type - The event type to listen for. * @param listener - The function to be called when the event is fired the first time. * @returns `this` or a promise if a listener is not provided */ once(type: string, listener?: Listener): this | Promise<any>; fire(event: Event | string, properties?: any): this; /** * Returns a true if this instance of Evented or any forwardeed instances of Evented have a listener for the specified type. * * @param type - The event type * @returns `true` if there is at least one registered listener for specified event type, `false` otherwise */ listens(type: string): boolean; /** * Bubble all events fired by this instance of Evented to this parent instance of Evented. * @returns `this` */ setEventedParent(parent?: Evented | null, data?: any | (() => any)): this; } export declare class ZoomHistory { lastZoom: number; lastFloorZoom: number; lastIntegerZoom: number; lastIntegerZoomTime: number; first: boolean; constructor(); update(z: number, now: number): boolean; } export type CrossfadeParameters = { fromScale: number; toScale: number; t: number; }; export declare class EvaluationParameters { zoom: number; now: number; fadeDuration: number; zoomHistory: ZoomHistory; transition: TransitionSpecification; constructor(zoom: number, options?: any); isSupportedScript(str: string): boolean; crossFadingFactor(): number; getCrossfadeParameters(): CrossfadeParameters; } /** * A {@link LngLat} object, an array of two numbers representing longitude and latitude, * or an object with `lng` and `lat` or `lon` and `lat` properties. * * @group Geography and Geometry * * @example * ```ts * let v1 = new maplibregl.LngLat(-122.420679, 37.772537); * let v2 = [-122.420679, 37.772537]; * let v3 = {lon: -122.420679, lat: 37.772537}; * ``` */ export type LngLatLike = LngLat | { lng: number; lat: number; } | { lon: number; lat: number; } | [ number, number ]; export declare class LngLat { lng: number; lat: number; /** * @param lng - Longitude, measured in degrees. * @param lat - Latitude, measured in degrees. */ constructor(lng: number, lat: number); /** * Returns a new `LngLat` object whose longitude is wrapped to the range (-180, 180). * * @returns The wrapped `LngLat` object. * @example * ```ts * let ll = new maplibregl.LngLat(286.0251, 40.7736); * let wrapped = ll.wrap(); * wrapped.lng; // = -73.9749 * ``` */ wrap(): LngLat; /** * Returns the coordinates represented as an array of two numbers. * * @returns The coordinates represented as an array of longitude and latitude. * @example * ```ts * let ll = new maplibregl.LngLat(-73.9749, 40.7736); * ll.toArray(); // = [-73.9749, 40.7736] * ``` */ toArray(): [ number, number ]; /** * Returns the coordinates represent as a string. * * @returns The coordinates represented as a string of the format `'LngLat(lng, lat)'`. * @example * ```ts * let ll = new maplibregl.LngLat(-73.9749, 40.7736); * ll.toString(); // = "LngLat(-73.9749, 40.7736)" * ``` */ toString(): string; /** * Returns the approximate distance between a pair of coordinates in meters * Uses the Haversine Formula (from R.W. Sinnott, "Virtues of the Haversine", Sky and Telescope, vol. 68, no. 2, 1984, p. 159) * * @param lngLat - coordinates to compute the distance to * @returns Distance in meters between the two coordinates. * @example * ```ts * let new_york = new maplibregl.LngLat(-74.0060, 40.7128); * let los_angeles = new maplibregl.LngLat(-118.2437, 34.0522); * new_york.distanceTo(los_angeles); // = 3935751.690893987, "true distance" using a non-spherical approximation is ~3966km * ``` */ distanceTo(lngLat: LngLat): number; /** * Converts an array of two numbers or an object with `lng` and `lat` or `lon` and `lat` properties * to a `LngLat` object. * * If a `LngLat` object is passed in, the function returns it unchanged. * * @param input - An array of two numbers or object to convert, or a `LngLat` object to return. * @returns A new `LngLat` object, if a conversion occurred, or the original `LngLat` object. * @example * ```ts * let arr = [-73.9749, 40.7736]; * let ll = maplibregl.LngLat.convert(arr); * ll; // = LngLat {lng: -73.9749, lat: 40.7736} * ``` */ static convert(input: LngLatLike): LngLat; } export declare class MercatorCoordinate implements IMercatorCoordinate { x: number; y: number; z: number; /** * @param x - The x component of the position. * @param y - The y component of the position. * @param z - The z component of the position. */ constructor(x: number, y: number, z?: number); /** * Project a `LngLat` to a `MercatorCoordinate`. * * @param lngLatLike - The location to project. * @param altitude - The altitude in meters of the position. * @returns The projected mercator coordinate. * @example * ```ts * let coord = maplibregl.MercatorCoordinate.fromLngLat({ lng: 0, lat: 0}, 0); * coord; // MercatorCoordinate(0.5, 0.5, 0) * ``` */ static fromLngLat(lngLatLike: LngLatLike, altitude?: number): MercatorCoordinate; /** * Returns the `LngLat` for the coordinate. * * @returns The `LngLat` object. * @example * ```ts * let coord = new maplibregl.MercatorCoordinate(0.5, 0.5, 0); * let lngLat = coord.toLngLat(); // LngLat(0, 0) * ``` */ toLngLat(): LngLat; /** * Returns the altitude in meters of the coordinate. * * @returns The altitude in meters. * @example * ```ts * let coord = new maplibregl.MercatorCoordinate(0, 0, 0.02); * coord.toAltitude(); // 6914.281956295339 * ``` */ toAltitude(): number; /** * Returns the distance of 1 meter in `MercatorCoordinate` units at this latitude. * * For coordinates in real world units using meters, this naturally provides the scale * to transform into `MercatorCoordinate`s. * * @returns Distance of 1 meter in `MercatorCoordinate` units. */ meterInMercatorCoordinateUnits(): number; } export declare class CanonicalTileID implements ICanonicalTileID { z: number; x: number; y: number; key: string; constructor(z: number, x: number, y: number); equals(id: ICanonicalTileID): boolean; url(urls: Array<string>, pixelRatio: number, scheme?: string | null): string; isChildOf(parent: ICanonicalTileID): boolean; getTilePoint(coord: IMercatorCoordinate): Point; toString(): string; } export declare class UnwrappedTileID { wrap: number; canonical: CanonicalTileID; key: string; constructor(wrap: number, canonical: CanonicalTileID); } export declare class OverscaledTileID { overscaledZ: number; wrap: number; canonical: CanonicalTileID; key: string; posMatrix: mat4; constructor(overscaledZ: number, wrap: number, z: number, x: number, y: number); clone(): OverscaledTileID; equals(id: OverscaledTileID): boolean; scaledTo(targetZ: number): OverscaledTileID; calculateScaledKey(targetZ: number, withWrap: boolean): string; isChildOf(parent: OverscaledTileID): boolean; children(sourceMaxZoom: number): OverscaledTileID[]; isLessThan(rhs: OverscaledTileID): boolean; wrapped(): OverscaledTileID; unwrapTo(wrap: number): OverscaledTileID; overscaleFactor(): number; toUnwrapped(): UnwrappedTileID; toString(): string; getTilePoint(coord: MercatorCoordinate): Point; } export type TimePoint = number; /** * A from-to type */ export type CrossFaded<T> = { to: T; from: T; }; /** * @internal * Implementations of the `Property` interface: * * * Hold metadata about a property that's independent of any specific value: stuff like the type of the value, * the default value, etc. This comes from the style specification JSON. * * Define behavior that needs to be polymorphic across different properties: "possibly evaluating" * an input value (see below), and interpolating between two possibly-evaluted values. * * The type `T` is the fully-evaluated value type (e.g. `number`, `string`, `Color`). * The type `R` is the intermediate "possibly evaluated" value type. See below. * * There are two main implementations of the interface -- one for properties that allow data-driven values, * and one for properties that don't. There are a few "special case" implementations as well: one for properties * which cross-fade between two values rather than interpolating, one for `heatmap-color` and `line-gradient`, * and one for `light-position`. */ export interface Property<T, R> { specification: StylePropertySpecification; possiblyEvaluate(value: PropertyValue<T, R>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): R; interpolate(a: R, b: R, t: number): R; } export declare class PropertyValue<T, R> { property: Property<T, R>; value: PropertyValueSpecification<T> | void; expression: StylePropertyExpression; constructor(property: Property<T, R>, value: PropertyValueSpecification<T> | void); isDataDriven(): boolean; possiblyEvaluate(parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): R; } export type TransitionParameters = { now: TimePoint; transition: TransitionSpecification; }; export declare class TransitionablePropertyValue<T, R> { property: Property<T, R>; value: PropertyValue<T, R>; transition: TransitionSpecification | void; constructor(property: Property<T, R>); transitioned(parameters: TransitionParameters, prior: TransitioningPropertyValue<T, R>): TransitioningPropertyValue<T, R>; untransitioned(): TransitioningPropertyValue<T, R>; } export declare class Transitionable<Props> { _properties: Properties<Props>; _values: { [K in keyof Props]: TransitionablePropertyValue<any, unknown>; }; constructor(properties: Properties<Props>); getValue<S extends keyof Props, T>(name: S): PropertyValueSpecification<T> | void; setValue<S extends keyof Props, T>(name: S, value: PropertyValueSpecification<T> | void): void; getTransition<S extends keyof Props>(name: S): TransitionSpecification | void; setTransition<S extends keyof Props>(name: S, value: TransitionSpecification | void): void; serialize(): any; transitioned(parameters: TransitionParameters, prior: Transitioning<Props>): Transitioning<Props>; untransitioned(): Transitioning<Props>; } export declare class TransitioningPropertyValue<T, R> { property: Property<T, R>; value: PropertyValue<T, R>; prior: TransitioningPropertyValue<T, R>; begin: TimePoint; end: TimePoint; constructor(property: Property<T, R>, value: PropertyValue<T, R>, prior: TransitioningPropertyValue<T, R>, transition: TransitionSpecification, now: TimePoint); possiblyEvaluate(parameters: EvaluationParameters, canonical: CanonicalTileID, availableImages: Array<string>): R; } export declare class Transitioning<Props> { _properties: Properties<Props>; _values: { [K in keyof Props]: PossiblyEvaluatedPropertyValue<unknown>; }; constructor(properties: Properties<Props>); possiblyEvaluate(parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): PossiblyEvaluated<Props, any>; hasTransition(): boolean; } export declare class Layout<Props> { _properties: Properties<Props>; _values: { [K in keyof Props]: PropertyValue<any, PossiblyEvaluatedPropertyValue<any>>; }; constructor(properties: Properties<Props>); hasValue<S extends keyof Props>(name: S): boolean; getValue<S extends keyof Props>(name: S): any; setValue<S extends keyof Props>(name: S, value: any): void; serialize(): any; possiblyEvaluate(parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): PossiblyEvaluated<Props, any>; } /** * "Possibly evaluated value" is an intermediate stage in the evaluation chain for both paint and layout property * values. The purpose of this stage is to optimize away unnecessary recalculations for data-driven properties. Code * which uses data-driven property values must assume that the value is dependent on feature data, and request that it * be evaluated for each feature. But when that property value is in fact a constant or camera function, the calculation * will not actually depend on the feature, and we can benefit from returning the prior result of having done the * evaluation once, ahead of time, in an intermediate step whose inputs are just the value and "global" parameters * such as current zoom level. * * `PossiblyEvaluatedValue` represents the three possible outcomes of this step: if the input value was a constant or * camera expression, then the "possibly evaluated" result is a constant value. Otherwise, the input value was either * a source or composite expression, and we must defer final evaluation until supplied a feature. We separate * the source and composite cases because they are handled differently when generating GL attributes, buffers, and * uniforms. * * Note that `PossiblyEvaluatedValue` (and `PossiblyEvaluatedPropertyValue`, below) are _not_ used for properties that * do not allow data-driven values. For such properties, we know that the "possibly evaluated" result is always a constant * scalar value. See below. */ export type PossiblyEvaluatedValue<T> = { kind: "constant"; value: T; } | SourceExpression | CompositeExpression; export declare class PossiblyEvaluatedPropertyValue<T> { property: DataDrivenProperty<T>; value: PossiblyEvaluatedValue<T>; parameters: EvaluationParameters; constructor(property: DataDrivenProperty<T>, value: PossiblyEvaluatedValue<T>, parameters: EvaluationParameters); isConstant(): boolean; constantOr(value: T): T; evaluate(feature: Feature, featureState: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>): T; } export declare class PossiblyEvaluated<Props, PossibleEvaluatedProps> { _properties: Properties<Props>; _values: PossibleEvaluatedProps; constructor(properties: Properties<Props>); get<S extends keyof PossibleEvaluatedProps>(name: S): PossibleEvaluatedProps[S]; } export declare class DataConstantProperty<T> implements Property<T, T> { specification: StylePropertySpecification; constructor(specification: StylePropertySpecification); possiblyEvaluate(value: PropertyValue<T, T>, parameters: EvaluationParameters): T; interpolate(a: T, b: T, t: number): T; } export declare class DataDrivenProperty<T> implements Property<T, PossiblyEvaluatedPropertyValue<T>> { specification: StylePropertySpecification; overrides: any; constructor(specification: StylePropertySpecification, overrides?: any); possiblyEvaluate(value: PropertyValue<T, PossiblyEvaluatedPropertyValue<T>>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): PossiblyEvaluatedPropertyValue<T>; interpolate(a: PossiblyEvaluatedPropertyValue<T>, b: PossiblyEvaluatedPropertyValue<T>, t: number): PossiblyEvaluatedPropertyValue<T>; evaluate(value: PossiblyEvaluatedValue<T>, parameters: EvaluationParameters, feature: Feature, featureState: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>): T; } export declare class CrossFadedDataDrivenProperty<T> extends DataDrivenProperty<CrossFaded<T>> { possiblyEvaluate(value: PropertyValue<CrossFaded<T>, PossiblyEvaluatedPropertyValue<CrossFaded<T>>>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): PossiblyEvaluatedPropertyValue<CrossFaded<T>>; evaluate(value: PossiblyEvaluatedValue<CrossFaded<T>>, globals: EvaluationParameters, feature: Feature, featureState: FeatureState, canonical?: CanonicalTileID, availableImages?: Array<string>): CrossFaded<T>; _calculate(min: T, mid: T, max: T, parameters: EvaluationParameters): CrossFaded<T>; interpolate(a: PossiblyEvaluatedPropertyValue<CrossFaded<T>>): PossiblyEvaluatedPropertyValue<CrossFaded<T>>; } export declare class CrossFadedProperty<T> implements Property<T, CrossFaded<T>> { specification: StylePropertySpecification; constructor(specification: StylePropertySpecification); possiblyEvaluate(value: PropertyValue<T, CrossFaded<T>>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): CrossFaded<T>; _calculate(min: T, mid: T, max: T, parameters: EvaluationParameters): CrossFaded<T>; interpolate(a?: CrossFaded<T> | null): CrossFaded<T>; } export declare class ColorRampProperty implements Property<Color, boolean> { specification: StylePropertySpecification; constructor(specification: StylePropertySpecification); possiblyEvaluate(value: PropertyValue<Color, boolean>, parameters: EvaluationParameters, canonical?: CanonicalTileID, availableImages?: Array<string>): boolean; interpolate(): boolean; } export declare class Properties<Props> { properties: Props; defaultPropertyValues: { [K in keyof Props]: PropertyValue<unknown, any>; }; defaultTransitionablePropertyValues: { [K in keyof Props]: TransitionablePropertyValue<unknown, unknown>; }; defaultTransitioningPropertyValues: { [K in keyof Props]: TransitioningPropertyValue<unknown, unknown>; }; defaultPossiblyEvaluatedValues: { [K in keyof Props]: PossiblyEvaluatedPropertyValue<unknown>; }; overridableProperties: Array<string>; constructor(properties: Props); } /** * An object with is transferable between main and worker thread */ export type Transferable = ArrayBuffer | MessagePort | ImageBitmap; declare const viewTypes: { Int8: Int8ArrayConstructor; Uint8: Uint8ArrayConstructor; Int16: Int16ArrayConstructor; Uint16: Uint16ArrayConstructor; Int32: Int32ArrayConstructor; Uint32: Uint32ArrayConstructor; Float32: Float32ArrayConstructor; }; /** * @internal * A view type size */ export type ViewType = keyof typeof viewTypes; export declare class Struct { _pos1: number; _pos2: number; _pos4: number; _pos8: number; readonly _structArray: StructArray; size: number; /** * @param structArray - The StructArray the struct is stored in * @param index - The index of the struct in the StructArray. */ constructor(structArray: StructArray, index: number); } /** * @internal * A struct array memeber */ export type StructArrayMember = { name: string; type: ViewType; components: number; offset: number; }; /** * An array that can be desialized */ export type SerializedStructArray = { length: number; arrayBuffer: ArrayBuffer; }; declare abstract class StructArray { capacity: number; length: number; isTransferred: boolean; arrayBuffer: ArrayBuffer; uint8: Uint8Array; members: Array<StructArrayMember>; bytesPerElement: number; abstract emplaceBack(...v: number[]): any; abstract emplace(i: number, ...v: number[]): any; constructor(); /** * Serialize a StructArray instance. Serializes both the raw data and the * metadata needed to reconstruct the StructArray base class during * deserialization. */ static serialize(array: StructArray, transferables?: Array<Transferable>): SerializedStructArray; static deserialize(input: SerializedStructArray): any; /** * Resize the array to discard unused capacity. */ _trim(): void; /** * Resets the length of the array to 0 without de-allocating capcacity. */ clear(): void; /** * Resize the array. * If `n` is greater than the current length then additional elements with undefined values are added. * If `n` is less than the current length then the array will be reduced to the first `n` elements. * @param n - The new size of the array. */ resize(n: number): void; /** * Indicate a planned increase in size, so that any necessary allocation may * be done once, ahead of time. * @param n - The expected size of the array. */ reserve(n: number): void; /** * Create TypedArray views for the current ArrayBuffer. */ _refreshViews(): void; } export declare class StructArrayLayout2i4 extends StructArray { uint8: Uint8Array; int16: Int16Array; _refreshViews(): void; emplaceBack(v0: number, v1: number): number; emplace(i: number, v0: number, v1: number): number; } export declare class StructArrayLayout3i6 extends StructArray { uint8: Uint8Array; int16: Int16Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number): number; emplace(i: number, v0: number, v1: number, v2: number): number; } export declare class StructArrayLayout4i8 extends StructArray { uint8: Uint8Array; int16: Int16Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number, v3: number): number; emplace(i: number, v0: number, v1: number, v2: number, v3: number): number; } export declare class StructArrayLayout2i4i12 extends StructArray { uint8: Uint8Array; int16: Int16Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number): number; emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number): number; } export declare class StructArrayLayout2i4ub8 extends StructArray { uint8: Uint8Array; int16: Int16Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number): number; emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number): number; } export declare class StructArrayLayout2f8 extends StructArray { uint8: Uint8Array; float32: Float32Array; _refreshViews(): void; emplaceBack(v0: number, v1: number): number; emplace(i: number, v0: number, v1: number): number; } export declare class StructArrayLayout4i4ui4i24 extends StructArray { uint8: Uint8Array; int16: Int16Array; uint16: Uint16Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number): number; emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number): number; } export declare class StructArrayLayout3f12 extends StructArray { uint8: Uint8Array; float32: Float32Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number): number; emplace(i: number, v0: number, v1: number, v2: number): number; } export declare class StructArrayLayout1ul4 extends StructArray { uint8: Uint8Array; uint32: Uint32Array; _refreshViews(): void; emplaceBack(v0: number): number; emplace(i: number, v0: number): number; } export declare class StructArrayLayout6i1ul2ui20 extends StructArray { uint8: Uint8Array; int16: Int16Array; uint32: Uint32Array; uint16: Uint16Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number): number; emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number): number; } export declare class StructArrayLayout2ub2f12 extends StructArray { uint8: Uint8Array; float32: Float32Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number, v3: number): number; emplace(i: number, v0: number, v1: number, v2: number, v3: number): number; } export declare class StructArrayLayout3ui6 extends StructArray { uint8: Uint8Array; uint16: Uint16Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number): number; emplace(i: number, v0: number, v1: number, v2: number): number; } export declare class StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48 extends StructArray { uint8: Uint8Array; int16: Int16Array; uint16: Uint16Array; uint32: Uint32Array; float32: Float32Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number): number; emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number): number; } export declare class StructArrayLayout8i15ui1ul2f2ui64 extends StructArray { uint8: Uint8Array; int16: Int16Array; uint16: Uint16Array; uint32: Uint32Array; float32: Float32Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number): number; emplace(i: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, v16: number, v17: number, v18: number, v19: number, v20: number, v21: number, v22: number, v23: number, v24: number, v25: number, v26: number, v27: number): number; } export declare class StructArrayLayout1f4 extends StructArray { uint8: Uint8Array; float32: Float32Array; _refreshViews(): void; emplaceBack(v0: number): number; emplace(i: number, v0: number): number; } export declare class StructArrayLayout1ui2f12 extends StructArray { uint8: Uint8Array; uint16: Uint16Array; float32: Float32Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number): number; emplace(i: number, v0: number, v1: number, v2: number): number; } export declare class StructArrayLayout1ul2ui8 extends StructArray { uint8: Uint8Array; uint32: Uint32Array; uint16: Uint16Array; _refreshViews(): void; emplaceBack(v0: number, v1: number, v2: number): number; emplace(i: number, v0: number, v1: number, v2: number): number; } export declare class StructArrayLayout2ui4 extends StructArray { uint8: Uint8Array; uint16: Uint16Array; _refreshViews(): void; emplaceBack(v0: number, v1: number): number; emplace(i: number, v0: number, v1: number): number; } export declare class StructArrayLayout1ui2 extends StructArray { uint8: Uint8Array; uint16: Uint16Array; _refreshViews(): void; emplaceBack(v0: number): number; emplace(i: number, v0: number): number; } export declare class CollisionBoxStruct extends Struct { _structArray: CollisionBoxArray; get anchorPointX(): number; get anchorPointY(): number; get x1(): number; get y1(): number; get x2(): number; get y2(): number; get featureIndex(): number; get sourceLayerIndex(): number; get bucketIndex(): number; get anchorPoint(): Point; } export declare class CollisionBoxArray extends StructArrayLayout6i1ul2ui20 { /** * Return the CollisionBoxStruct at the given location in the array. * @param index The index of the element. */ get(index: number): CollisionBoxStruct; } export declare class PlacedSymbolStruct extends Struct { _structArray: PlacedSymbolArray; get anchorX(): number; get anchorY(): number; get glyphStartIndex(): number; get numGlyphs(): number; get vertexStartIndex(): number; get lineStartIndex(): number; get lineLength(): number; get segment(): number; get lowerSize(): number; get upperSize(): number; get lineOffsetX(): number; get lineOffsetY(): number; get writingMode(): number; get placedOrientation(): number; set placedOrientation(x: number); get hidden(): number; set hidden(x: number); get crossTileID(): number; set crossTileID(x: number); get associatedIconIndex(): number; } export declare class PlacedSymbolArray extends StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48 { /** * Return the PlacedSymbolStruct at the given location in the array. * @param index The index of the element. */ get(index: number): PlacedSymbolStruct; } export declare class SymbolInstanceStruct extends Struct { _structArray: SymbolInstanceArray; get anchorX(): number; get anchorY(): number; get rightJustifiedTextSymbolIndex(): number; get centerJustifiedTextSymbolIndex(): number; get leftJustifiedTextSymbolIndex(): number; get verticalPlacedTextSymbolIndex(): number; get placedIconSymbolIndex(): number; get verticalPlacedIconSymbolIndex(): number; get key(): number; get textBoxStartIndex(): number; get textBoxEndIndex(): number; get verticalTextBoxStartIndex(): number; get verticalTextBoxEndIndex(): number; get iconBoxStartIndex(): number; get iconBoxEndIndex(): number; get verticalIconBoxStartIndex(): number; get verticalIconBoxEndIndex(): number; get featureIndex(): number; get numHorizontalGlyphVertices(): number; get numVerticalGlyphVertices(): number; get numIconVertices(): number; get numVerticalIconVertices(): number; get useRuntimeCollisionCircles(): number; get crossTileID(): number; set crossTileID(x: number); get textBoxScale(): number; get collisionCircleDiameter(): number; get textAnchorOffsetStartIndex(): number; get textAnchorOffsetEndIndex(): number; } export type SymbolInstance = SymbolInstanceStruct; export declare class SymbolInstanceArray extends StructArrayLayout8i15ui1ul2f2ui64 { /** * Return the SymbolInstanceStruct at the given location in the array. * @param index The index of the element. */ get(index: number): SymbolInstanceStruct; } export declare class GlyphOffsetArray extends StructArrayLayout1f4 { getoffsetX(index: number): number; } export declare class SymbolLineVertexArray extends StructArrayLayout3i6 { getx(index: number): number; gety(index: number): number; gettileUnitDistanceFromAnchor(index: number): number; } export declare class TextAnchorOffsetStruct extends Struct { _structArray: TextAnchorOffsetArray; get textAnchor(): number; get textOffset0(): number; get textOffset1(): number; } export type TextAnchorOffset = TextAnchorOffsetStruct; export declare class TextAnchorOffsetArray extends StructArrayLayout1ui2f12 { /** * Return the TextAnchorOffsetStruct at the given location in the array. * @param index The index of the element. */ get(index: number): TextAnchorOffsetStruct; } export declare class FeatureIndexStruct extends Struct { _structArray: FeatureIndexArray; get featureIndex(): number; get sourceLayerIndex(): number; get bucketIndex(): number; } export declare class FeatureIndexArray extends StructArrayLayout1ul2ui8 { /** * Return the FeatureIndexStruct at the given location in the array. * @param index The index of the element. */ get(index: number): FeatureIndexStruct; } export declare class PosArray extends StructArrayLayout2i4 { } export declare class RasterBoundsArray extends StructArrayLayout4i8 { } export declare class CircleLayoutArray extends StructArrayLayout2i4 { } export declare class FillLayoutArray extends StructArrayLayout2i4 { } export declare class FillExtrusionLayoutArray extends StructArrayLayout2i4i12 { } export declare class LineLayoutArray extends StructArrayLayout2i4ub8 { } export declare class LineExtLayoutArray extends StructArrayLayout2f8 { } export declare class SymbolLayoutArray extends StructArrayLayout4i4ui4i24 { } export declare class SymbolDynamicLayoutArray extends StructArrayLayout3f12 { } export declare class SymbolOpacityArray extends StructArrayLayout1ul4 { } export declare class CollisionVertexArray extends StructArrayLayout2ub2f12 { } export declare class TriangleIndexArray extends StructArrayLayout3ui6 { } export declare class LineIndexArray extends StructArrayLayout2ui4 { } export declare class LineStripIndexArray extends StructArrayLayout1ui2 { } export type SerializedFeaturePositionMap = { ids: Float64Array; positions: Uint32Array; }; export type FeaturePosition = { index: number; start: number; end: number; }; export declare class FeaturePositionMap { ids: Array<number>; positions: Array<number>; indexed: boolean; constructor(); add(id: unknown, index: number, start: number, end: number): void; getPositions(id: unknown): Array<FeaturePosition>; static serialize(map: FeaturePositionMap, transferables: Array<ArrayBuffer>): SerializedFeaturePositionMap; static deserialize(obj: SerializedFeaturePositionMap): FeaturePositionMap; } export declare class IndexBuffer { context: Context; buffer: WebGLBuffer; dynamicDraw: boolean; constructor(context: Context, array: TriangleIndexArray | LineIndexArray | LineStripIndexArray, dynamicDraw?: boolean); bind(): void; updateData(array: StructArray): void; destroy(): void; } export declare class VertexBuffer { length: number; attributes: ReadonlyArray<StructArrayMember>; itemSize: number; dynamicDraw: boolean; context: Context; buffer: WebGLBuffer; /** * @param dynamicDraw - Whether this buffer will be repeatedly updated. */ constructor(context: Context, array: StructArray, attributes: ReadonlyArray<StructArrayMember>, dynamicDraw?: boolean); bind(): void; updateData(array: StructArray): void; enableAttributes(gl: WebGLRenderingContext | WebGL2RenderingContext, program: Program<any>): void; /** * Set the attribute pointers in a WebGL context * @param gl - The WebGL context * @param program - The active WebGL program * @param vertexOffset - Index of the starting vertex of the segment */ setVertexAttribPointers(gl: WebGLRenderingContext | WebGL2RenderingContext, program: Program<any>, vertexOffset?: number | null): void; /** * Destroy the GL buffer bound to the given WebGL context */ destroy(): void; } export type BlendFuncConstant = WebGLRenderingContextBase["ZERO"] | WebGLRenderingContextBase["ONE"] | WebGLRenderingContextBase["SRC_COLOR"] | WebGLRenderingContextBase["ONE_MINUS_SRC_COLOR"] | WebGLRenderingContextBase["DST_COLOR"] | WebGLRenderingContextBase["ONE_MINUS_DST_COLOR"] | WebGLRenderingContextBase["SRC_ALPHA"] | WebGLRenderingContextBase["ONE_MINUS_SRC_ALPHA"] | WebGLRenderingContextBase["DST_ALPHA"] | WebGLRenderingContextBase["ONE_MINUS_DST_ALPHA"] | WebGLRenderingContextBase["CONSTANT_COLOR"] | WebGLRenderingContextBase["ONE_MINUS_CONSTANT_COLOR"] | WebGLRenderingContextBase["CONSTANT_ALPHA"] | WebGLRenderingContextBase["ONE_MINUS_CONSTANT_ALPHA"] | WebGLRenderingContextBase["BLEND_COLOR"]; export type BlendFuncType = [ BlendFuncConstant, BlendFuncConstant ]; export type BlendEquationType = WebGLRenderingContextBase["FUNC_ADD"] | WebGLRenderingContextBase["FUNC_SUBTRACT"] | WebGLRenderingContextBase["FUNC_REVERSE_SUBTRACT"]; export type ColorMaskType = [ boolean, boolean, boolean, boolean ]; export type CompareFuncType = WebGLRenderingContextBase["NEVER"] | WebGLRenderingContextBase["LESS"] | WebGLRenderingContextBase["EQUAL"] | WebGLRenderingContextBase["LEQUAL"] | WebGLRenderingContextBase["GREATER"] | WebGLRenderingContextBase["NOTEQUAL"] | WebGLRenderingContextBase["GEQUAL"] | WebGLRenderingContextBase["ALWAYS"]; export type DepthMaskType = boolean; export type DepthRangeType = [ number, number ]; export type DepthFuncType = CompareFuncType; export type StencilFuncType = { func: CompareFuncType; ref: number; mask: number; }; export type StencilOpConstant = WebGLRenderingContextBase["KEEP"] | WebGLRenderingContextBase["ZERO"] | WebGLRenderingContextBase["REPLACE"] | WebGLRenderingContextBase["INCR"] | WebGLRenderingContextBase["INCR_WRAP"] | WebGLRenderingContextBase["DECR"] | WebGLRenderingContextBase["DECR_WRAP"] | WebGLRenderingContextBase["INVERT"]; export type StencilOpType = [ StencilOpConstant, StencilOpConstant, StencilOpConstant ]; export type TextureUnitType = number; export type ViewportType = [ number, number, number, number ]; export type StencilTestGL = { func: WebGLRenderingContextBase["NEVER"]; mask: 0; } | { func: WebGLRenderingContextBase["LESS"]; mask: number; } | { func: WebGLRenderingContextBase["EQUAL"]; mask: number; } | { func: WebGLRenderingContextBase["LEQUAL"]; mask: number; } | { func: WebGLRenderingContextBase["GREATER"]; mask: number; } | { func: WebGLRenderingContextBase["NOTEQUAL"]; mask: number; } | { func: WebGLRenderingContextBase["GEQUAL"]; mask: number; } | { func: WebGLRenderingContextBase["ALWAYS"]; mask: 0; }; export type CullFaceModeType = WebGLRenderingContextBase["FRONT"] | WebGLRenderingContextBase["BACK"] | WebGLRenderingContextBase["FRONT_AND_BACK"]; export type FrontFaceType = WebGLRenderingContextBase["CW"] | WebGLRenderingContextBase["CCW"]; export interface IValue<T> { current: T; default: T; dirty: boolean; get(): T; setDefault(): void; set(value: T): void; } export declare class BaseValue<T> implements IValue<T> { gl: WebGLRenderingContext | WebGL2RenderingContext; current: T; default: T; dirty: boolean; constructor(context: Context); get(): T; set(value: T): void; getDefault(): T; setDefault(): void; } export declare class ClearColor extends BaseValue<Color> { getDefault(): Color; set(v: Color): void; } export declare class ClearDepth extends BaseValue<number> { getDefault(): number; set(v: number): void; } export declare class ClearStencil extends BaseValue<number> { getDefault(): number; set(v: number): void; } export declare class ColorMask extends BaseValue<ColorMaskType> { getDefault(): ColorMaskType; set(v: ColorMaskType): void; } export declare class DepthMask extends BaseValue<DepthMaskType> { getDefault(): DepthMaskType; set(v: DepthMaskType): void; } export declare class StencilMask extends BaseValue<number> { getDefault(): number; set(v: number): void; } export declare class StencilFunc extends BaseValue<StencilFuncType> { getDefault(): StencilFuncType; set(v: StencilFuncType): void; } export declare class StencilOp extends BaseValue<StencilOpType> { getDefault(): StencilOpType; set(v: StencilOpType): void; } export declare class StencilTest extends BaseValue<boolean> { getDefault(): boolean; set(v: boolean): void; } export declare class DepthRange extends BaseValue<DepthRangeType> { getDefault(): DepthRangeType; set(v: DepthRangeType): void; } export declare class DepthTest extends BaseValue<boolean> { getDefault(): boolean; set(v: boolean): void; } export declare class DepthFunc extends BaseValue<DepthFuncType> { getDefault(): DepthFuncType; set(v: DepthFuncType): void; } export declare class Blend extends BaseValue<boolean> { getDefault(): boolean; set(v: boolean): void; } export declare class BlendFunc extends BaseValue<BlendFuncType> { getDefault(): BlendFuncType; set(v: BlendFuncType): void; } export declare class BlendColor extends BaseValue<Color> { getDefault(): Color; set(v: Color): void; } export declare class BlendEquation extends BaseValue<BlendEquationType> { getDefault(): BlendEquationType; set(v: BlendEquationType): void; } export declare class CullFace extends BaseValue<boolean> { getDefault(): boolean; set(v: boolean): void; } export declare class CullFaceSide extends BaseValue<CullFaceModeType> { getDefault(): CullFaceModeType; set(v: CullFaceModeType): void; } export declare class FrontFace extends BaseValue<FrontFaceType> { getDefault(): FrontFaceType; set(v: FrontFaceType): void; } export declare class ProgramValue extends BaseValue<WebGLProgram> { getDefault(): WebGLProgram; set(v?: WebGLProgram | null): void; } export declare class ActiveTextureUnit extends BaseValue<TextureUnitType> { getDefault(): TextureUnitType; set(v: TextureUnitType): void; } export declare class Viewport extends BaseValue<ViewportType> { getDefault(): ViewportType; set(v: ViewportType): void; } export declare class BindFramebuffer extends BaseValue<WebGLFramebuffer> { getDefault(): WebGLFramebuffer; set(v?: WebGLFramebuffer | null): void; } export declare class BindRenderbuffer extends BaseValue<WebGLRenderbuffer> { getDefault(): WebGLRenderbuffer; set(v?: WebGLRenderbuffer | null): void; } export declare class BindTexture extends BaseValue<WebGLTexture> { getDefault(): WebGLTexture; set(v?: WebGLTexture | null): void; } export declare class BindVertexBuffer extends BaseValue<WebGLBuffer> { getDefault(): WebGLBuffer; set(v?: WebGLBuffer | null): void; } export declare class BindElementBuffer extends BaseValue<WebGLBuffer> { getDefault(): WebGLBuffer; set(v?: WebGLBuffer | null): void; } export declare class BindVertexArray extends BaseValue<WebGLVertexArrayObject | null> { getDefault(): WebGLVertexArrayObject | null; set(v: WebGLVertexArrayObject | null): void; } export declare class PixelStoreUnpack extends BaseValue<number> { getDefault(): number; set(v: number): void; } export declare class PixelStoreUnpackPremultiplyAlpha extends BaseValue<boolean> { getDefault(): boolean; set(v: boolean): void; } export declare class PixelStoreUnpackFlipY extends BaseValue<boolean> { getDefault(): boolean; set(v: boolean): void; } export declare class FramebufferAttachment<T> extends BaseValue<T> { parent: WebGLFramebuffer; context: Context; constructor(context: Context, parent: WebGLFramebuffer); getDefault(): any; } export declare class ColorAttachment extends FramebufferAttachment<WebGLTexture> { setDirty(): void; set(v?: WebGLTexture | null): void; } export declare class DepthAttachment extends FramebufferAttachment<WebGLRenderbuffer> { set(v?: WebGLRenderbuffer | null): void; } export declare class Framebuffer { context: Context; width: number; height: number; framebuffer: WebGLFramebuffer; colorAttachment: ColorAttachment; depthAttachment: DepthAttachment; constructor(context: Context, width: number, height: number, hasDepth: boolean, hasStencil: boolean); destroy(): void; } export declare class DepthMode { func: DepthFuncType; mask: DepthMaskType; range: DepthRangeType; static ReadOnly: boolean; static ReadWrite: boolean; constructor(depthFunc: DepthFuncType, depthMask: DepthMaskType, depthRange: DepthRangeType); static disabled: Readonly<DepthMode>; } export declare class StencilMode { test: StencilTestGL; ref: number; mask: number; fail: StencilOpConstant; depthFail: StencilOpConstant; pass: StencilOpConstant; constructor(test: StencilTestGL, ref: number, mask: number, fail: StencilOpConstant, depthFail: StencilOpConstant, pass: StencilOpConstant); static disabled: Readonly<StencilMode>; } export declare class ColorMode { blendFunction: BlendFuncType; blendColor: Color; mask: ColorMaskType; constructor(blendFunction: BlendFuncType, blendColor: Color, mask: ColorMaskType); static Replace: BlendFuncType; static disabled: Readonly<ColorMode>; static unblended: Readonly<ColorMode>; static alphaBlended: Readonly<ColorMode>; } export declare class CullFaceMode { enable: boolean; mode: CullFaceModeType; frontFace: FrontFaceType; constructor(enable: boolean, mode: CullFaceModeType, frontFace: FrontFaceType); static disabled: Readonly<CullFaceMode>; static backCCW: Readonly<CullFaceMode>; } export type ClearArgs = { color?: Color; depth?: number; stencil?: number; }; export declare class Context { gl: WebGLRenderingContext | WebGL2RenderingContext; currentNumAttributes: number; maxTextureSize: number; clearColor: ClearColor; clearDepth: ClearDepth; clearStencil: ClearStencil; colorMask: ColorMask; depthMask: DepthMask; stencilMask: StencilMask; stencilFunc: StencilFunc; stencilOp: StencilOp; stencilTest: StencilTest; depthRange: DepthRange; depthTest: DepthTest; depthFunc: DepthFunc; blend: Blend; blendFunc: BlendFunc; blendColor: BlendColor; blendEquation: BlendEquation; cullFace: CullFace; cullFaceSide: CullFaceSide; frontFace: FrontFace; program: ProgramValue; activeTexture: ActiveTextureUnit; viewport: Viewport; bindFramebuffer: BindFramebuffer; bindRenderbuffer: BindRenderbuffer; bindTexture: BindTexture; bindVertexBuffer: BindVertexBuffer; bindElementBuffer: BindElementBuffer; bindVertexArray: BindVertexArray; pixelStoreUnpack: PixelStoreUnpack; pixelStoreUnpackPremultiplyAlpha: PixelStoreU