/** * Cache for clickable elements by URL * Stores clickable elements discovered during navigation for quick filtering/searching */ export interface ClickableElement { type: 'link' | 'button' | 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'textarea' | 'select' | 'checkbox' | 'radio' | 'file' | 'date' | 'other'; text: string; href: string; selector: string; inViewport?: boolean; x?: number; y?: number; width?: number; height?: number; context?: string; label?: string; required?: boolean; visible?: boolean; } interface CacheEntry { url: string; elements: ClickableElement[]; timestamp: number; viewportHeight: number; viewportWidth: number; } /** * Simple in-memory cache for clickable elements * Keys are normalized URL stubs (pathname + search, no protocol/host/hash) */ export declare class ClickableCache { private cache; private maxAge; /** * Normalize URL to cache key (host + pathname + search) * Includes host to prevent conflicts between different sites */ private normalizeUrl; /** * Store clickable elements for a URL */ set(url: string, elements: ClickableElement[], viewportHeight: number, viewportWidth: number): void; /** * Get cached clickable elements for a URL * Returns null if not cached or expired */ get(url: string): CacheEntry | null; /** * Check if URL is cached and fresh */ has(url: string): boolean; /** * Clear cache for a specific URL */ delete(url: string): void; /** * Clear entire cache */ clear(): void; /** * Get cache statistics */ stats(): { size: number; entries: Array<{ url: string; count: number; age: number; }>; }; } export {}; //# sourceMappingURL=clickable-cache.d.ts.map