// Standalone native script/session ABI v1 subset; do not replace application/web declarations with this file. declare module 'sqsmap' { export interface CustomEvent { readonly type:string; readonly target:Evented|NativeMap; [key:string]:unknown } export type EventedParentData=Record|(()=>Record); /** Bounded local Evented, released when the script session stops. */ export class Evented { constructor(); on(type:string,listener:(event:CustomEvent)=>unknown):NativeSubscription; off(type:string,listener:(event:CustomEvent)=>unknown):this; once(type:string,listener:(event:CustomEvent)=>unknown):this; once(type:string):Promise; listens(type:string):boolean; fire(type:string,data?:Record):this; fire(event:{type:string;[key:string]:unknown}):this; setEventedParent(parent?:Evented|NativeMap|null,data?:EventedParentData):this; /** Project extension: reject waits and detach parents and children. */ destroy():void; } /** Native retained-session only: host-pumped callbacks, not browser/global registrations. */ export interface NativeProtocolRequest {readonly url:string;readonly resourceType:ResourceType;readonly maxBytes:number;readonly method:string} export interface NativeProtocolSignal {readonly aborted:boolean;readonly reason:unknown;throwIfAborted():void;addEventListener(type:'abort',listener:(event:{readonly type:'abort';readonly target:NativeProtocolSignal})=>void):void;removeEventListener(type:'abort',listener:Function):void} export interface NativeProtocolController {readonly signal:NativeProtocolSignal;abort(reason?:unknown):void} export function addProtocol(scheme:string,handler:(request:NativeProtocolRequest,controller:NativeProtocolController)=>{data:ArrayBuffer|Uint8Array}|Promise<{data:ArrayBuffer|Uint8Array}>):void; export function removeProtocol(scheme:string):void; export interface TerrainSpecification {source:string;exaggeration?:number} export interface LightTransition {duration?:number;delay?:number} export interface LightSpecification {anchor?:'map'|'viewport';position?:readonly [number,number,number];color?:string;intensity?:number;'position-transition'?:LightTransition;'color-transition'?:LightTransition;'intensity-transition'?:LightTransition} export interface ResolvedLightSpecification {readonly anchor:'map'|'viewport';readonly position:readonly [number,number,number];readonly color:string;readonly intensity:number} export interface LightSetterOptions {validate?:boolean} export interface SceneLightingSettings {readonly mode:'default'|'fixed'|'sun';readonly azimuth:number;readonly elevation:number;readonly strength:number;readonly ambient:number;readonly sunTime:'now'|number;readonly utcOffsetMinutes:number;readonly mapLight:ResolvedLightSpecification|null} export interface SceneLightingState {readonly active:'globe'|'building'|null;readonly globe:SceneLightingSettings;readonly building:SceneLightingSettings} export interface SceneLightingOptions {view?:'globe'|'building';reset?:boolean;mode?:'default'|'fixed'|'sun';azimuth?:number;elevation?:number;strength?:number;ambient?:number;sunTime?:'now'|number;utcOffsetMinutes?:number} export interface MapImageLoadResult {readonly data:{readonly width:number;readonly height:number;readonly data:Uint8Array}} export interface MapImageData {width:number;height:number;data:Uint8Array|Uint8ClampedArray|readonly number[]} /** Synchronous CPU RGBA callbacks; available in retained native script sessions only. */ export interface StyleImageInterface extends MapImageData { onAdd?(map:NativeMap,id:string):void; render?():boolean|void; onRemove?():void; } export type MapImageTextFit = 'stretchOrShrink'|'stretchOnly'|'proportional'; export interface MapImageStretchMetadata {readonly stretchX?:readonly (readonly [number,number])[];readonly stretchY?:readonly (readonly [number,number])[];readonly content?:readonly [number,number,number,number];readonly textFitWidth?:MapImageTextFit;readonly textFitHeight?:MapImageTextFit} export interface MapImageOptions extends MapImageStretchMetadata {pixelRatio?:number;sdf?:boolean} export interface MapImageSnapshot extends MapImageStretchMetadata {readonly data:{readonly width:number;readonly height:number;readonly data:Uint8Array};readonly pixelRatio:number;readonly sdf:boolean} export type ResourceType='Style'|'Source'|'Tile'|'Glyphs'|'SpriteJSON'|'SpriteImage'|'Image'|'Unknown'; export interface ResourceFallback {prefix:string;replacements:string[];resourceTypes?:ResourceType[];attemptTimeoutMs?:number;forwardQuery?:boolean} export interface ResourcePolicy {maxConcurrentRequests?:number;attemptTimeoutMs?:number;retries?:number;retryDelayMs?:number;cache?:'default'|'no-store'|'reload'|'no-cache'|'force-cache';fallbacks?:ResourceFallback[]} export interface ResourceConfiguration {resourceTimeoutMs?:number;resourcePolicy?:ResourcePolicy} export interface ResourceQuery {url:string;resourceType:ResourceType;maxBytes:number;method?:string;forceNoStore?:boolean} export interface ResourcePlan {readonly version:1;readonly urls:readonly string[];readonly method:string;readonly resourceType:ResourceType;readonly maxBytes:number;readonly maxConcurrentRequests:number;readonly resourceTimeoutMs:number;readonly attemptTimeoutMs:number;readonly retries:number;readonly retryDelayMs:number;readonly cache?:ResourcePolicy['cache'];readonly retryOn:Readonly<{network:boolean;attemptTimeout:boolean;httpStatuses:readonly number[];serverErrors:boolean}>} export interface ResourcesAPI {configure(configuration:ResourceConfiguration):Promise>>;getConfiguration():Promise>>;plan(query:ResourceQuery):Promise} export interface MapImageInfo extends MapImageStretchMetadata {readonly id:string;readonly source:'runtime'|'sprite';readonly imageInstanceId:string;readonly revision:string;readonly width:number;readonly height:number;readonly byteLength:number;readonly pixelRatio:number;readonly sdf:boolean} export interface FeatureStateTarget {source:string;id:string|number;sourceLayer?:string;sqs?:{sourceInstanceId?:string;dataRevision?:string};[member:string]:unknown} export interface AttributionItem {readonly scope:'style'|'common'|'host';readonly kind:'style'|'vector'|'geojson'|'raster'|'terrain-rgb'|'raster-dem';readonly sourceId:string|null;readonly sourceInstanceId:string|null;readonly layerIds:readonly string[];readonly text:string;} export interface AttributionSnapshot {readonly text:string;readonly items:readonly AttributionItem[];} export interface GeoJSONLayerSpecification { id:string; type:'circle'|'line'|'fill'|'fill-extrusion'|'hillshade'|'color-relief'|'raster'|'heatmap'|'background'|'symbol'; 'source-layer'?:string; source?:string|CommonSourceOptions; minzoom?:number; maxzoom?:number; paint?:Record; layout?:{visibility?:'visible'|'none';'icon-image'?:string|unknown[];'icon-size'?:number|unknown[];'icon-rotate'?:number|unknown[];'icon-offset'?:[number,number]|unknown[];'icon-anchor'?:'center'|'top'|'bottom'|'left'|'right'|'top-left'|'top-right'|'bottom-left'|'bottom-right'|unknown[];'symbol-placement'?:'point';'icon-allow-overlap'?:boolean|unknown[];'icon-ignore-placement'?:boolean|unknown[];'icon-optional'?:boolean|unknown[];'text-optional'?:boolean|unknown[];'icon-padding'?:number|unknown[];'symbol-sort-key'?:number|unknown[];'symbol-z-order'?:'auto'|'source'|'viewport-y';'text-field'?:string|unknown[];'text-size'?:number|unknown[];'text-max-width'?:number|unknown[];'text-line-height'?:number|unknown[];'text-letter-spacing'?:number|unknown[];'text-justify'?:'auto'|'left'|'center'|'right'|unknown[];'text-transform'?:'none'|'uppercase'|'lowercase'|unknown[];'text-font'?:readonly string[];'text-anchor'?:'center'|'top'|'bottom'|'left'|'right'|'top-left'|'top-right'|'bottom-left'|'bottom-right'|unknown[];'text-offset'?:[number,number]|unknown[];'text-rotate'?:number|unknown[];'text-padding'?:number|unknown[];'text-allow-overlap'?:boolean|unknown[];'text-ignore-placement'?:boolean}; filter?:unknown[]; metadata?:Record; } export interface LayerIdentity {readonly id:string;readonly layerInstanceId:string} export interface GeoJSONLayerInfo extends LayerIdentity { id:string; name:string; layerInstanceId:string; source:{id:string;sourceInstanceId:string}|null; sourceRevision:string; cacheRevision:string; type:'circle'|'line'|'fill'|'fill-extrusion'|'hillshade'|'color-relief'|'raster'|'heatmap'|'background'|'symbol'; visible:boolean; featureCount:number; warningCount:number; specification:GeoJSONLayerSpecification; } export interface NativeMapState { readonly lightingState:SceneLightingState; mapInstanceId: string; sequence: string; submittedSequence: number; appliedSequence: number; frameSequence: number; width: number; height: number; readonly cameraState?:CameraState; nativeView: { focus: [number, number]; scale: number; bearing: number; crs: 'EPSG:4326' | 'EPSG:3857' }; sourceCount: number; layerCount: number; styleLayerCount:number; layers: { id: string; name: string; visible: boolean; featureCount: number }[]; software: boolean; feedPending: boolean; resources: {generation:string;pending:number;styleUrl:string|null;attribution:string;message:string;repaintAfterMs:number|null}; } export interface FlushOptions { render?: boolean; since?: number } export interface CommandReceipt { mapInstanceId: string; submittedSequence: number; appliedSequence: number; stage: 'applied' | 'rendered'; readonly cameraState?:CameraState; camera: { focus: [number, number]; scale: number; bearing: number; width: number; height: number; mercator: boolean }; frameSequence?: number; } export type CameraEventType = "movestart" | "move" | "moveend" | "zoomstart" | "zoom" | "zoomend" | "rotatestart" | "rotate" | "rotateend" | "pitchstart" | "pitch" | "pitchend" | "rollstart" | "roll" | "rollend"; export type PointerEventType = "click"|"dblclick"|"mousedown"|"mouseup"|"mousemove"|"mouseenter"|"mouseleave"|"contextmenu"; export type MapLayerSelector = string|readonly string[]; export type NativeEventType = "styledata" | "style.load" | "remove" | "load" | "render" | "idle" | PointerEventType | CameraEventType | 'sourcedataloading' | 'sourcedata' | 'sourcedataabort' | 'error' | 'sqs.viewchange' | 'sqs.layerschange' | 'sqs.resourceschange' | 'sqs.scenechange' | 'sqs.playbackchange' | 'sqs.lightingchange' | 'sqs.sourceschange' | 'sqs.imageschange' | 'styleimagemissing' | 'sqs.gestureschange' | 'sqs.attributionschange' | 'move'; export interface LifecycleWork {readonly pendingResources:number;readonly pendingSources:number;readonly animating:boolean;readonly pendingRender:boolean;readonly failed:boolean;} export interface LifecycleState {readonly initialized:boolean;readonly firstLoadCompleted:boolean;readonly frameSequence:number;readonly idle:boolean;readonly work:LifecycleWork;} export interface NativeSubscription { unsubscribe(): void } export interface NativeEvent { readonly lifecycle?:LifecycleState; readonly gestures?:GesturePolicy; readonly attributions?:AttributionSnapshot;readonly context?:"attributions"|"resourcePolicy";readonly resourceConfiguration?:Readonly>; readonly type: NativeEventType; readonly lightingState?:SceneLightingState;readonly reason?:string;readonly scene?:SceneSnapshot;readonly playback?:PlaybackSnapshot; readonly target: NativeMap; readonly mapInstanceId: string; /** Safe integer sequence; ordering may have gaps due to coalesced view events. */ readonly sequence: number; /** Present for sqs.sourceschange; same field in application script hosts. */ readonly sourceCount?: number; readonly styleGeneration?:string;readonly imageCount?:number;readonly runtimeByteLength?:number; readonly layerCount?:number; readonly method?:string; readonly id?:string; readonly state: NativeMapState; /** Present on move; common logical-pixel/WGS84 camera state. */ readonly cameraState?: CameraState; readonly animation?:CameraAnimationTag;readonly error?:{code:string;message:string}; readonly sqsLive?:LiveSourceState;readonly sqsLiveReceiver?:LiveReceiverState; readonly sourceId?:string;readonly sourceInstanceId?:string;readonly dataType?:'source';readonly sourceDataType?:'content'; readonly isSourceLoaded?:boolean;readonly loading?:boolean;readonly hasData?:boolean;readonly dataRevision?:string;readonly requestRevision?:string;readonly loadError?:SourceLoadError|null; } export interface NativeCameraEvent extends NativeEvent {readonly type:CameraEventType;readonly cameraState:CameraState} export interface MapStyleImageMissingEvent extends NativeEvent {readonly type:'styleimagemissing';readonly id:string;readonly styleGeneration:string;} export interface NativeImagesEvent extends NativeEvent {readonly type:'sqs.imageschange';readonly method:'addImage'|'updateImage'|'removeImage';readonly id:string;readonly imageCount:number;readonly runtimeByteLength:number;} export interface NativeMoveEvent extends NativeEvent {readonly type:'move';readonly cameraState:CameraState} export type NativeListener = (event: NativeEvent) => void | Promise; export type LngLatLike = [number,number] | {lng:number;lat:number}; export type PointLike = [number,number] | {x:number;y:number}; export interface Padding { top:number;right:number;bottom:number;left:number } export interface AnimationOptions {duration?:number;animate?:boolean;linear?:boolean;easing?:(t:number)=>number;essential?:boolean} export interface EaseToOptions extends CameraOptions,AnimationOptions {around?:LngLatLike;offset?:PointLike;sqsShortestWorldCopy?:boolean} export interface FlyToOptions extends CameraOptions,AnimationOptions {offset?:PointLike;curve?:number;speed?:number;screenSpeed?:number;minZoom?:number;maxDuration?:number;sqsShortestWorldCopy?:boolean} export interface CameraAnimationTag {readonly id:string;readonly status:'running'|'completed'|'cancelled'|'failed';readonly reason:string|null} export interface CameraAnimationState {readonly active:boolean;readonly animation:CameraAnimationTag|null;readonly reducedMotion:boolean;readonly elapsed?:number;readonly duration?:number;readonly target?:CameraState['camera']} export interface ImmediateNavigationOptions {around?:LngLatLike;offset?:PointLike;animate?:boolean;duration?:number;linear?:boolean;easing?:(t:number)=>number;essential?:boolean} export interface ImmediatePanOptions {offset?:PointLike;animate?:boolean;duration?:number;linear?:boolean;easing?:(t:number)=>number;essential?:boolean} export interface ImmediatePanByOptions {animate?:boolean;duration?:number;linear?:boolean;easing?:(t:number)=>number;essential?:boolean} export interface CameraOptions { center?:LngLatLike;zoom?:number;bearing?:number;pitch?:number;roll?:number;padding?:number|Partial } export interface FitBoundsOptions { padding?:number|Partial;offset?:PointLike;bearing?:number;minZoom?:number;maxZoom?:number;animate?:boolean;duration?:number;linear?:boolean;easing?:(t:number)=>number;essential?:boolean } export interface ScaleAtOptions {point?:PointLike;maxWidth?:number} export interface ScaleAtResult {point:{x:number;y:number};position:{lng:number;lat:number};projection:'geographic'|'mercator';metersPerPixel:number;distance:number;width:number;maxWidth:number;unit:'m';pixelUnit:'css';model:'sphere-local';earthRadius:6371008.8;approximate:true} export interface CameraState { camera:{center:[number,number];zoom:number;bearing:number;pitch:number;roll:number;padding:Padding};projection:'geographic'|'mercator'|'globe';viewport:{width:number;height:number;pixelRatio:1} } /** Inline WGS84 GeoJSON source subset, shared with native scripts. No source UI is created. */ export type FeatureId = string | number; export type Position = [number,number] | [number,number,number]; export type GeoJSONGeometry = | {type:'Point';coordinates:Position} | {type:'MultiPoint'|'LineString';coordinates:Position[]} | {type:'MultiLineString'|'Polygon';coordinates:Position[][]} | {type:'MultiPolygon';coordinates:Position[][][]} | {type:'GeometryCollection';geometries:GeoJSONGeometry[]}; export interface GeoJSONFeature {type:'Feature';id?:FeatureId;properties:Record|null;geometry:GeoJSONGeometry|null;[member:string]:unknown} export interface GeoJSONFeatureCollection {type:'FeatureCollection';features:GeoJSONFeature[];[member:string]:unknown} export type GeoJSON = GeoJSONGeometry | GeoJSONFeature | GeoJSONFeatureCollection; export type QueryPixel=[number,number]|{x:number;y:number}; export interface QueryRenderedFeatureOptions {layers?:string[];filter?:unknown[];validate?:true} export interface QueriedRenderedFeature extends QueriedSourceFeature {state:Record; layer:GeoJSONLayerSpecification; sqs:{sourceInstanceId:string;dataRevision:string;featureIndex:number;layerInstanceId:string;cacheRevision:string;stateRevision:string}; } export interface QuerySourceFeatureOptions { filter?:unknown[]; validate?:true; sourceLayer?:string; sqs?:{offset?:number;limit?:number;sourceInstanceId?:string;dataRevision?:string}; } export interface QueriedSourceFeature extends GeoJSONFeature { sourceLayer?:string; source:string; sqs:{sourceInstanceId:string;dataRevision:string;featureIndex:number}; } export type ClusterPropertySpecification = ['+'|'-'|'*'|'/'|'min'|'max'|'all'|'any'|'concat'|unknown[], unknown[]|number|boolean|string]; export interface GetClusterOptions {cluster:boolean;clusterRadius:number;clusterMaxZoom:number} export interface SetClusterOptions {cluster?:boolean;clusterRadius?:number;clusterMaxZoom?:number} export interface LiveSourceOptions {fields:Record;allowDelta?:boolean} export interface LivePoint {id:string;coordinate:[number,number];properties:Record} export type LiveUpdate = {kind:'snapshot';epoch:string;sequence:string;points:LivePoint[]} | {kind:'delta';epoch:string;baseSequence:string;sequence:string;upserts:LivePoint[];deletes:string[]}; export interface LiveSourceState {initialized:boolean;epoch:string|null;sequence:string|null;protocolRevision:string;pointCount:number;allowDelta:boolean;fields:Record} export interface LiveUpdateResult {applied:boolean;state:LiveSourceState;dataRevision:string} export interface LiveSourceSnapshot {source:SourceIdentity;state:LiveSourceState;data:GeoJSONFeatureCollection} export interface LiveReceiverOptions {owner?:SceneIdentity;protocol?:'gis-live-v1';transport:{type:'http-poll';url:string;intervalMs?:number}|{type:'websocket';url:string;reconnectDelayMs?:number}} export interface LiveReceiverIdentity extends SourceIdentity {receiverInstanceId:string} export interface LiveReceiverState {owner?:SceneIdentity;ownerState?:SceneStatus;source:SourceIdentity;receiverInstanceId:string;transport:'http-poll'|'websocket';connection?:'connecting'|'open'|'retrying'|'paused'|'stopped';status:'running'|'paused'|'stopped';loading:boolean;intervalMs:number;lastError:SourceLoadError|null;dataRevision:string} export interface LiveReceiver extends Readonly {getState():Promise;pause():Promise;resume():Promise;stop():Promise;attachSource(source:SourceIdentity):Promise;detachSource(source:SourceIdentity):Promise} export interface LiveSourceAPI {connectLive(options:LiveReceiverOptions):Promise;getLiveReceiver():Promise;applyLiveUpdate(frame:LiveUpdate):Promise;getLiveState():Promise;freezeLiveSnapshot():Promise} export type MediaCoordinates=[[number,number],[number,number],[number,number],[number,number]]; export interface MediaSourceOptions {type:'image'|'video';coordinates:MediaCoordinates;attribution?:string;url?:string;urls?:string[]} export interface ImageSourceUpdate {url:string;coordinates?:MediaCoordinates} export interface CanvasSourceOptions {type:'canvas';canvas:string;coordinates:MediaCoordinates;animate?:boolean;attribution?:string} export type CommonSourceOptions=GeoJSONSourceOptions|MediaSourceOptions|CanvasSourceOptions|TileSourceOptions; export interface MediaState {kind:'image'|'video'|'canvas';coordinates:MediaCoordinates;revision:number;frameSequence:number;paused:boolean;width:number;height:number;byteLength:number;duration?:number;currentTime?:number;canvas?:string} export interface MediaFrame {sequence:number;width:number;height:number;data:number[]} export interface MediaSource extends Readonly {readonly type:'image'|'video'|'canvas';readonly dataRevision:string;updateImage(options:ImageSourceUpdate):Promise;setCoordinates(coordinates:MediaCoordinates):Promise;play():Promise;pause():Promise;readonly sqs:{getState():Promise;fail(reason:{code:string;message:string}):Promise;submitFrame(frame:MediaFrame):Promise<{applied:boolean;state:SourceInfo}>}} export type CommonMapSource=GeoJSONSource|MediaSource|TileSource; export interface GeoJSONSourceOptions {sqsLive?:LiveSourceOptions;type:'geojson';lineMetrics?:boolean;data:GeoJSON|string;attribution?:string;promoteId?:string;generateId?:boolean;cluster?:boolean;clusterRadius?:number;clusterMaxZoom?:number;clusterMinPoints?:number;clusterProperties?:Record} export interface GeoJSONFeatureDiff {id:FeatureId;newGeometry?:GeoJSONGeometry|null;removeAllProperties?:boolean;removeProperties?:string[];addOrUpdateProperties?:{key:string;value:unknown}[]} export interface GeoJSONSourceDiff {removeAll?:boolean;remove?:FeatureId[];add?:GeoJSONFeature[];update?:GeoJSONFeatureDiff[]} export interface SourceIdentity {id:string;sourceInstanceId:string} export interface SourceLoadError {readonly code:string;readonly message:string} export interface SourceDataEvent { readonly sourceId:string;readonly sourceInstanceId:string;readonly dataType:'source';readonly sourceDataType:'content'|'metadata'; readonly isSourceLoaded:boolean;readonly loading:boolean;readonly hasData:boolean;readonly dataRevision:string;readonly requestRevision:string; readonly loadError:SourceLoadError|null;readonly error?:SourceLoadError; } export interface SourceInfo extends SourceIdentity {sqsLiveReceiver?:LiveReceiverState;sqsLive?:LiveSourceState;type:'geojson'|'image'|'video'|'canvas'|'vector'|'raster'|'raster-dem';mediaState?:MediaState;tileMetadata?:TileSourceMetadata;tileState?:TileSourceState;dataRevision:string;stateRevision:string;loaded:boolean;loading:boolean;hasData:boolean;requestRevision:string;loadError:SourceLoadError|null;featureCount:number;bounds:[number,number,number,number]|null;attribution:string;promoteId:string|Record|null;generateId:boolean;lineMetrics:boolean;cluster:boolean;supportsUpdateData:boolean;referenceCount:number} /** Bound to one map and one source generation; deleting/re-adding its id invalidates this handle. */ export interface GeoJSONSource extends Readonly { readonly sqs:LiveSourceAPI; readonly type:'geojson'; readonly dataRevision:string; getData():Promise; setData(data:GeoJSON|string):Promise; updateData(diff:GeoJSONSourceDiff):Promise; getClusterOptions():Promise; setClusterOptions(options:SetClusterOptions):Promise; getClusterChildren(clusterId:number):Promise; getClusterLeaves(clusterId:number,limit?:number,offset?:number):Promise; getClusterExpansionZoom(clusterId:number):Promise; } export interface NativePointerEvent extends NativeEvent { readonly type:PointerEventType;readonly point:Readonly<{x:number;y:number}>;readonly lngLat:Readonly<{lng:number;lat:number}>|null; readonly features:readonly QueriedRenderedFeature[];readonly cameraState:CameraState; readonly input:Readonly<{pointerType:'mouse'|'pen'|'touch';button:number;buttons:number;altKey:boolean;ctrlKey:boolean;metaKey:boolean;shiftKey:boolean}>; } export interface GesturePolicy {readonly dragPan:boolean;readonly scrollZoom:boolean;readonly doubleClickZoom:boolean;readonly keyboard:boolean;readonly keyboardRotation:boolean;readonly touchZoomRotate:boolean;readonly touchPitch:boolean;readonly touchRotation:boolean;} export interface GestureHandler {enable():Promise;disable():Promise;isEnabled():Promise;isActive():Promise;} export interface KeyboardHandler extends GestureHandler {enableRotation():Promise;disableRotation():Promise;} export interface TouchZoomRotateHandler extends KeyboardHandler {} export interface NativeMap { loaded():Promise; readonly dragPan:GestureHandler;readonly scrollZoom:GestureHandler;readonly doubleClickZoom:GestureHandler;readonly keyboard:KeyboardHandler;readonly touchZoomRotate:TouchZoomRotateHandler;readonly touchPitch:GestureHandler; /** Native request-queue getters are asynchronous; writes remain chainable. */ /** URL replacement; null clears. Inline GeoJSON style replacement is connected; diff:true remains unavailable. */ getStyle():Promise<{version:8;state?:Record;sources:Record;layers:readonly unknown[];name?:string;metadata?:Record}>; setStyle(style:string|null|{version:8;state?:Record;sources:Record;layers:readonly unknown[];name?:string;metadata?:Record},options?:{diff?:false}):this; addLayer(specification:GeoJSONLayerSpecification,beforeId?:string):this; removeLayer(id:string):this; moveLayer(id:string,beforeId?:string):this; addImage(id:string,image:MapImageData|StyleImageInterface,options?:MapImageOptions):this; /** Request one real frame; repeated calls coalesce, including from render callbacks. */ triggerRepaint():this; updateImage(id:string,image:MapImageData):this;removeImage(id:string):this; getGlyphs():Promise;setGlyphs(url:string|null|undefined,options?:{validate?:true}):this; loadImage(url:string):Promise;getImage(id:string):Promise;hasImage(id:string):Promise;listImages():Promise; getLayer(id:string):Promise; queryRenderedFeatures(geometryOrOptions?:QueryPixel|[QueryPixel,QueryPixel]|QueryRenderedFeatureOptions,options?:QueryRenderedFeatureOptions):Promise; setPaintProperty(id:string,name:string,value:unknown,options?:{validate?:true}):this; getPaintProperty(id:string,name:string):Promise; setLayoutProperty(id:string,name:string,value:unknown,options?:{validate?:true}):this; getLayoutProperty(id:string,name:string):Promise; setFilter(id:string,filter:unknown[]|null,options?:{validate?:true}):this; getFilter(id:string):Promise; setLayerZoomRange(id:string,minzoom:number,maxzoom:number):this; setTerrain(options:TerrainSpecification|null):typeof map;getTerrain():Promise|null>;queryTerrainElevation(point:readonly [number,number]|{lng:number;lat:number}|{lon:number;lat:number}):Promise; addSource(id:string,options:CommonSourceOptions):this; getSource(id:string):Promise; getGlobalState():Promise>>; setGlobalStateProperty(name:string,value:unknown):this; setFeatureState(target:FeatureStateTarget|QueriedSourceFeature,state:Record):this; getFeatureState(target:FeatureStateTarget|QueriedSourceFeature):Promise>; removeFeatureState(target:Omit & {source:string;id?:string|number},key?:string):this; querySourceFeatures(id:string,options?:QuerySourceFeatureOptions):Promise; removeSource(id:string):this; isSourceLoaded(id:string):Promise; getLight():Promise; setLight(light:LightSpecification,options?:LightSetterOptions):this; readonly lighting:{state():Promise;set(options:SceneLightingOptions):Promise}; getCenter(): Promise<{lng:number;lat:number}>; getZoom(): Promise; getMinZoom():Promise;getMaxZoom():Promise; getPitch(): Promise; getRoll(): Promise; getPadding(): Promise; getBounds(): Promise<[[number,number],[number,number]]>; getProjection(): Promise<{type:'geographic'|'mercator'|'globe'}>; setProjection(projection:{type:'geographic'|'mercator'|'globe'}):this; project(position:LngLatLike):Promise<{x:number;y:number}>; unproject(point:PointLike):Promise<{lng:number;lat:number}>; cameraForBounds(bounds: [number,number,number,number]|[LngLatLike,LngLatLike],options?:FitBoundsOptions):Promise; easeTo(options:EaseToOptions):this;flyTo(options:FlyToOptions):this;stop():this; isEasing():Promise;isMoving():Promise;isZooming():Promise;isRotating():Promise; jumpTo(options:CameraOptions):this; fitBounds(bounds:[number,number,number,number]|[LngLatLike,LngLatLike],options?:FitBoundsOptions):this; setCenter(center:LngLatLike):this; setZoom(zoom:number):this; setPitch(pitch:number):this; setPadding(padding:number|Partial):this; resetNorth(options?:ImmediateNavigationOptions):this; resetNorthPitch(options?:ImmediateNavigationOptions):this; setRoll(roll:number):this; zoomTo(zoom:number,options?:ImmediateNavigationOptions):this; rotateTo(bearing:number,options?:ImmediateNavigationOptions):this; panTo(center:LngLatLike,options?:ImmediatePanOptions):this; panBy(offset:PointLike,options?:ImmediatePanByOptions):this; zoomIn(options?:ImmediateNavigationOptions):this; zoomOut(options?:ImmediateNavigationOptions):this; getBearing(): Promise; setBearing(bearing: number): this; /** Host built-ins require a retained session; custom Evented names also work in one-shot scripts. */ /** Synchronous query of listeners owned by this retained facade. */ listens(type:string):boolean; fire(type:string,data?:Record):this; fire(event:{type:string;[key:string]:unknown}):this; setEventedParent(parent?:Evented|NativeMap|null,data?:EventedParentData):this; on(type:PointerEventType,listener:(event:NativePointerEvent)=>void|Promise):NativeSubscription; on(type:PointerEventType,layers:MapLayerSelector,listener:(event:NativePointerEvent)=>void|Promise):NativeSubscription; off(type:PointerEventType,listener:(event:NativePointerEvent)=>void|Promise):this; off(type:PointerEventType,layers:MapLayerSelector,listener:(event:NativePointerEvent)=>void|Promise):this; once(type:PointerEventType,listener:(event:NativePointerEvent)=>void|Promise):this; once(type:PointerEventType,layers:MapLayerSelector,listener:(event:NativePointerEvent)=>void|Promise):this; once(type:PointerEventType):Promise; once(type:PointerEventType,layers:MapLayerSelector):Promise; on(type:'move',listener:(event:NativeMoveEvent)=>void|Promise):NativeSubscription; off(type:'move',listener:(event:NativeMoveEvent)=>void|Promise):this; once(type:'move',listener:(event:NativeMoveEvent)=>void|Promise):this; once(type:'move'):Promise; on(type:CameraEventType,listener:(event:NativeCameraEvent)=>void|Promise):NativeSubscription; off(type:CameraEventType,listener:(event:NativeCameraEvent)=>void|Promise):this; once(type:CameraEventType,listener:(event:NativeCameraEvent)=>void|Promise):this; once(type:CameraEventType):Promise; on(type: NativeEventType, listener: NativeListener): NativeSubscription; off(type: NativeEventType, listener: NativeListener): this; once(type: NativeEventType, listener: NativeListener): this; once(type: NativeEventType): Promise; on(type:string,listener:(event:CustomEvent)=>unknown):NativeSubscription; off(type:string,listener:(event:CustomEvent)=>unknown):this; once(type:string,listener:(event:CustomEvent)=>unknown):this; once(type:string):Promise; readonly sqs: { /** Label placement fade duration in milliseconds; default 300. */ getLabelFadeDuration():Promise; /** Finite 0..3600000 ms; independent of material and raster fades. Confirm with flush. */ setLabelFadeDuration(ms:number):void; /** Integer-zoom material window in milliseconds; default 300. */ getMaterialFadeDuration():Promise; /** Finite 0..3600000 ms; does not change manual pattern/dash timing. Confirm with flush. */ setMaterialFadeDuration(ms:number):void; readonly resources:ResourcesAPI; viewModeState():Promise>;animations:AnimationsAPI;playbacks:PlaybacksAPI;scenes:ScenesAPI;getCapabilities():Promise>>; getSourceInfo(id:string):Promise; getLayers():Promise; setLayerMetadata(id:string,metadata:Record|null):NativeMap; getLayerMetadata(id:string):Promise>; ready(): Promise; /** [] for legacy one-shot; four connected events for retained sessions. */ events(): readonly NativeEventType[]; /** Retained session entry only. */ disposeSession(): Promise; getImageInfo(id:string):Promise;gesturesState():Promise;getAttributions():Promise; scaleAt(options?:ScaleAtOptions):Promise; cameraState():Promise;lifecycleState():Promise;animationState():Promise;setReducedMotion(value:boolean):NativeMap; state(): Promise; addGeoJSON(data: object): Promise; removeNativeLayer(id: string): Promise; flush(options?: FlushOptions): Promise; }; } export const map: NativeMap; /** Scene ownership is independent of a script session and of manual receiver pause. */ export interface SceneIdentity {readonly id:string;readonly sceneInstanceId:string} export type SceneStatus='draft'|'running'|'paused'|'stopped'; export interface SceneReceiver {readonly source:SourceIdentity;readonly receiverInstanceId:string} export interface SceneClockSnapshot extends SceneIdentity {readonly state:SceneStatus;readonly elapsedMs:number} export interface SceneSnapshot extends SceneIdentity {readonly name:string;readonly state:SceneStatus;readonly revision:string;readonly resourceCount:number;readonly receivers:readonly SceneReceiver[];readonly sources:readonly SourceIdentity[];readonly playbacks:readonly PlaybackIdentity[]} export interface Scene extends SceneIdentity {getState():Promise;getClock():Promise;start():Promise;pause():Promise;resume():Promise;stop():Promise;attachSource(source:SourceIdentity):Promise;detachSource(source:SourceIdentity):Promise} export interface ScenesAPI {create(options:{id:string;name?:string}):Promise;get(id:string):Promise;list():Promise;remove(scene:SceneIdentity):Promise} export interface SceneChangeEvent {readonly type:'sqs.scenechange';readonly reason:string;readonly scene:SceneSnapshot} export interface PlaybackIdentity {readonly id:string;readonly playbackInstanceId:string} export type PlaybackState='ready'|'playing'|'paused'|'stopped'|'completed'|'failed'; export interface PlaybackSnapshotBase extends PlaybackIdentity { readonly owner:SceneIdentity;readonly ownerState:SceneStatus;readonly source:SourceIdentity;readonly sourceRevision:string; readonly state:PlaybackState;readonly epoch:string;readonly elapsedMs:number;readonly positionMs:number; readonly durationMs:number;readonly loop:boolean;readonly delayRemainingMs:number; readonly error:{readonly code:string;readonly message:string}|null; } export interface RoutePlaybackSnapshot extends PlaybackSnapshotBase { readonly kind:'route';readonly target:SourceIdentity;readonly targetRevision:string; readonly position:readonly [number,number];readonly headingRadians:number; } export interface LineFrameSnapshot {readonly phase:number;readonly reveal:number;readonly opacity:number;readonly widthScale:number;readonly color:readonly [number,number,number,number]} export interface LinePlaybackSnapshot extends PlaybackSnapshotBase { readonly kind:'line';readonly layer:LayerIdentity;readonly sourceStateRevision:string;readonly frame:LineFrameSnapshot; /** Retained effect; layer and scene visibility still apply. */ readonly visibleEffect:boolean; readonly pattern?:{readonly id:string;readonly imageInstanceId:string;readonly revision:string}; } export type PlaybackSnapshot=RoutePlaybackSnapshot|LinePlaybackSnapshot; export interface RoutePlaybackOptions {id:string;source:SourceIdentity;target:SourceIdentity;duration?:number;offsets?:readonly number[];loop?:boolean;delay?:number} export type LineUnit='progress'|'pixels'; export type LineEffect = | {type:'flow';id?:string;unit?:LineUnit;spacing?:number;trailLength?:number;fade?:'linear'|'none';phase?:number} | {type:'dash';id?:string;unit?:LineUnit;on:number;gap:number} | {type:'reveal';id?:string;start?:number;end?:number} | {type:'arrows';id?:string;unit?:LineUnit;spacing?:number;length?:number} | {type:'glow';id?:string;radius?:number;intensity?:number} | {type:'pattern';id?:string;image:string;unit?:LineUnit;spacing?:number}; export interface LineKeyframe {offset:number;value:T} export interface LineTracks {color?:readonly LineKeyframe[];opacity?:readonly LineKeyframe[];widthScale?:readonly LineKeyframe[]} export interface LineTiming {duration:number;delay?:number;loop?:boolean;direction?:'forward'|'reverse'|'alternate';easing?:'linear'|'ease-in-out';fill?:'forwards'|'none'} export interface LinePlaybackOptions {id:string;layer:string|LayerIdentity;timing:LineTiming;effects:readonly LineEffect[];tracks?:LineTracks;stagger?:boolean;cap?:'butt'|'round';phaseField?:string;speedField?:string} export interface Playback extends PlaybackIdentity { getState():Promise;play():Promise;pause():Promise;stop():Promise;seek(timeMs:number):Promise; /** Resolves after the endpoint was accepted; loop waits require explicit cancellation. */ finished():Promise; } export interface PlaybacksAPI {get(id:string):Promise;list():Promise;remove(playback:PlaybackIdentity):Promise} export interface AnimationsAPI { route(options:RoutePlaybackOptions,owner:{owner:SceneIdentity}):Promise>; line(options:LinePlaybackOptions,owner:{owner:SceneIdentity}):Promise>; } export interface PlaybackChangeEvent {readonly type:'sqs.playbackchange';readonly reason:string;readonly playback:PlaybackSnapshot} export interface TileSourceMetadata {tiles:string[];minzoom:number;maxzoom:number;bounds:[number,number,number,number];scheme:'xyz'|'tms';attribution:string;tileSize:number|null;metadataLoaded:boolean;volatile:boolean;encoding?:'mapbox'|'terrarium'|'custom'} export interface TileSourceOptions {type:'vector'|'raster'|'raster-dem';url?:string;tiles?:string[];minzoom?:number;maxzoom?:number;bounds?:[number,number,number,number];scheme?:'xyz'|'tms';attribution?:string;tileSize?:256|512;encoding?:'mvt'|'mapbox'|'terrarium'|'custom';redFactor?:number;greenFactor?:number;blueFactor?:number;baseShift?:number;promoteId?:string|Record;volatile?:boolean} export interface TileSource extends Readonly {readonly type:'vector'|'raster'|'raster-dem';readonly dataRevision:string;setTiles(tiles:string[]):Promise;setUrl(url:string):Promise;readonly sqs:{getTileMetadata():Promise}} export interface TileSourceState {visibleTiles:number;readyTiles:number;fallbackTiles:number;pendingTiles:number;cachedTiles:number;byteLength:number} }