import { Observer, SubscriptionOptions } from "../../utils/observable"; import { Point } from "../../utils/misc"; export type DestinationZoomUpdate = { type: 'destination'; destination: number; anchor?: Point; }; export type DeltaZoomUpdate = { type: 'delta'; delta: number; anchor?: Point; }; export type ZoomUpdate = { anchorCoordinateSystem: 'world' | 'viewport'; update: DestinationZoomUpdate | DeltaZoomUpdate; }; export declare class CameraZoomUpdateBatcher { private nextZoom; private observable; private anchor; private delta; private anchorCoordinateSystem; private queueZoomUpdateCount; private queueZoomUpdateToCount; private lastUpdateCount; constructor(); /** * Queue a zoom update to a specific destination to be processed in the next animation frame */ queueZoomUpdateTo(destination: number, anchor?: Point): void; /** * Queue a zoom update by delta to be processed in the next animation frame */ queueZoomUpdateBy(delta: number, anchor?: Point): void; /** * Queue a zoom update by delta at a world anchor to be processed in the next animation frame */ queueZoomByAtWorld(delta: number, worldAnchor: Point): void; /** * Queue a zoom update to a specific destination at a world anchor to be processed in the next animation frame */ queueZoomToAtWorld(destination: number, worldAnchor: Point): void; /** * Process and clear all queued zoom updates * @returns the update to apply to the zoom level, with type information */ processQueuedUpdates(): ZoomUpdate | null; /** * Subscribe to zoom updates */ subscribe(observer: Observer<[ZoomUpdate]>, options?: SubscriptionOptions): () => void; /** * Get debug information about queue method calls since last update */ getDebugInfo(): { lastUpdateTotalCalls: number; queueZoomUpdateCalls: number; queueZoomUpdateToCalls: number; }; }