import * as L from 'leaflet'; type ScaleFactor = 'scaleFactor1x' | 'scaleFactor2x' | 'scaleFactor4x'; interface GoogleMapTilesOptions { apiKey: string; mapType?: string; language?: string; region?: string; imageFormat?: string; scale?: ScaleFactor; highDpi?: boolean; layerTypes?: string[]; overlay?: boolean; styles?: Record[]; apiOptions?: string[]; maxZoom?: number; minZoom?: number; minNativeZoom?: number; maxNativeZoom?: number; opacity?: number; tileSize?: unknown; attribution?: unknown; bounds?: unknown; updateWhenIdle?: boolean; updateWhenZooming?: boolean; updateInterval?: number; className?: string; keepBuffer?: number; noWrap?: boolean; pane?: string; zIndex?: number; zoomOffset?: number; errorTileUrl?: string; subdomains?: unknown; tms?: boolean; detectRetina?: boolean; reuseTiles?: boolean; [key: string]: unknown; } export declare class GoogleMapTilesLayer extends L.GridLayer { private readonly apiKey; private readonly highDpi; private readonly sessionRequest; private readonly scaleFactor; private sessionToken?; private sessionPromise?; private sessionRefreshId?; private previousViewport?; private currentAttribution?; private mapInstance?; private readonly onMoveEnd; constructor(options: GoogleMapTilesOptions); onAdd(map: L.Map): this; onRemove(map: L.Map): this; createTile(coords: L.Coords, done: L.DoneCallback): HTMLElement; private ensureSession; private startSessionFetch; private fetchAndApplySession; private scheduleSessionRefresh; private clearSessionRefresh; private updateAttribution; private applyAttribution; private removeCurrentAttribution; private applyTileSize; private parseExpiry; private buildTileUrl; private mapScaleToFactor; private factorToScale; private applyInitialGridOptions; private setGridOptions; private resolveTileSize; private redrawLayer; } export {};