import { PrefetchPriority } from './prefetch-queue'; /** * Route definition for prefetching */ export interface PrefetchableRoute { path: string; component?: () => Promise; dataLoader?: () => Promise; assets?: string[]; priority?: PrefetchPriority; prefetchOn?: ('viewport' | 'hover' | 'idle' | 'immediate')[]; minProbability?: number; } /** * Route prefetch configuration */ export interface RoutePrefetchConfig { /** Enable route prefetching */ enabled: boolean; /** Default prefetch triggers */ defaultTriggers: ('viewport' | 'hover' | 'idle' | 'immediate')[]; /** Hover delay before prefetch (ms) */ hoverDelay: number; /** Viewport root margin */ viewportMargin: string; /** Enable intelligent prediction */ intelligentPrefetch: boolean; /** Minimum prediction probability */ minProbability: number; /** Maximum concurrent route prefetches */ maxConcurrent: number; /** Cache prefetched components */ cacheComponents: boolean; /** Component cache TTL in ms */ cacheTTL: number; /** Debug mode */ debug: boolean; } /** * Route prefetch result */ export interface RoutePrefetchResult { path: string; component: boolean; data: boolean; assets: string[]; duration: number; cached: boolean; } /** * Link prefetch handlers */ export interface LinkPrefetchHandlers { onMouseEnter: () => void; onMouseLeave: () => void; onFocus: () => void; onBlur: () => void; onTouchStart: () => void; } /** * Manages route-based prefetching */ export declare class RoutePrefetchManager { private config; private routes; private componentCache; private dataCache; private prefetchedRoutes; private hoverTimers; private viewportObserver; private observedLinks; private readonly engine; private queue; private currentPath; constructor(config?: Partial); /** * Register routes for prefetching */ registerRoutes(routes: PrefetchableRoute[]): void; /** * Register a single route */ registerRoute(route: PrefetchableRoute): void; /** * Unregister a route */ unregisterRoute(path: string): boolean; /** * Set current path (for prediction) */ setCurrentPath(path: string): void; /** * Prefetch a specific route */ prefetchRoute(path: string): Promise; /** * Get cached component for a route */ getCachedComponent(path: string): unknown | null; /** * Get cached data for a route */ getCachedData(path: string): unknown | null; /** * Create prefetch handlers for a link */ createLinkHandlers(path: string): LinkPrefetchHandlers; /** * Observe a link element for viewport-based prefetching */ observeLink(element: Element, path: string): () => void; /** * Prefetch all immediate routes */ prefetchImmediateRoutes(): void; /** * Prefetch predicted routes */ prefetchPredicted(): void; /** * Get prefetch statistics */ getStats(): { registeredRoutes: number; prefetchedRoutes: number; cachedComponents: number; cachedData: number; }; /** * Clear all caches */ clearCache(): void; /** * Destroy the manager */ destroy(): void; private prefetchComponent; private prefetchData; private prefetchAssets; private inferAssetType; private handleHoverStart; private handleHoverEnd; private initViewportObserver; private log; } /** * Get or create the global route prefetch manager */ export declare function getRoutePrefetchManager(config?: Partial): RoutePrefetchManager; /** * Reset the manager instance */ export declare function resetRoutePrefetchManager(): void; /** * Prefetch a route by path */ export declare function prefetchRoute(path: string): Promise; /** * Register routes for prefetching */ export declare function registerPrefetchRoutes(routes: PrefetchableRoute[]): void; /** * Create link prefetch handlers */ export declare function createRouteLinkHandlers(path: string): LinkPrefetchHandlers;