import type { LocationMarker, LocationQuery, LocationRecords, LocationSource, LocationViewport } from '../location-search.js'; export interface LocationSelection { marker: LocationMarker; query: LocationViewport; } export interface LocationNavigation { viewport: LocationViewport; sources: LocationSource[]; selected?: LocationSelection | undefined; scrollTop: number; recordLimit?: number; page?: { key: string; data: LocationRecords; } | undefined; } export declare const locationQueryKey: (query: LocationQuery) => string; /** Short-lived memory only, owned by one login. In-flight reads survive closing search. */ export declare class LocationSearchCache { private readonly read; private readonly now; private account; private entries; private navigation; private revision; private hardRevision; private listeners; constructor(read?: (query: LocationQuery, signal: AbortSignal) => Promise, now?: () => number); subscribe: (listener: () => void) => () => void; getRevision: () => number; getHardRevision: () => number; activate(account: string | undefined): void; invalidate(hard: boolean): void; getNavigation(account: string, scope?: string): LocationNavigation | undefined; saveNavigation(account: string, value: LocationNavigation, scope?: string): void; peek(account: string, query: LocationQuery): T | undefined; load(account: string, query: LocationQuery, force?: boolean): Promise; } export declare const locationSearchCache: LocationSearchCache; /** Attach once on first use; keep invalidations active while the location view is closed. */ export declare function startLocationSearchCache(): void; //# sourceMappingURL=location-search-cache.d.ts.map