/**
 * Icon Registry System
 * Simple icon storage and retrieval with Cache API persistence
 * PORTED FROM: clj/ty/icons.cljs
 */
/**
 * Read icon directly from cache (for immediate rendering)
 * This is the key function that prevents icon twitching!
 * @param name Icon name
 * @returns Promise<string | null> - SVG string from cache or null
 */
export declare function getCachedIcon(name: string): Promise<string | null>;
/**
 * Register multiple icons at once
 * Always updates memory and notifies watchers immediately
 * Cache update happens in background (only if different from cached version)
 * @param icons Object mapping icon names to SVG strings
 */
export declare function registerIcons(icons: Record<string, string>): void;
/**
 * Register a single icon
 * Always updates memory and notifies watchers immediately
 * Cache update happens in background (only if different from cached version)
 * @param name Icon name
 * @param svg SVG string
 */
export declare function registerIcon(name: string, svg: string): void;
/**
 * Lookup an icon by name from memory
 * NOTE: This does NOT check cache - use getCachedIcon() for that
 * @param name Icon name
 * @returns SVG string or undefined
 */
export declare function getIcon(name: string): string | undefined;
/**
 * Check if an icon exists in memory
 * NOTE: This does NOT check cache
 * @param name Icon name
 * @returns true if icon is registered in memory
 */
export declare function hasIcon(name: string): boolean;
/**
 * Clear all registered icons from memory and cache
 */
export declare function clearIcons(): Promise<void>;
/**
 * Add a watcher for registry changes
 * @param id Unique watcher ID
 * @param iconName Optional icon name to watch (for selective notification)
 * @param callback Function to call when watched icons change
 */
export declare function addWatcher(id: string, iconName: string | undefined, callback: (changedIcons: Set<string>) => void): void;
/**
 * Remove a watcher
 * @param id Watcher ID to remove
 */
export declare function removeWatcher(id: string): void;
/**
 * Get all registered icon names (memory only, not cache)
 * @returns Array of icon names
 */
export declare function getIconNames(): string[];
/**
 * Get registry size (memory only)
 * @returns Number of registered icons in memory
 */
export declare function getIconCount(): number;
/**
 * Get cache statistics
 * @returns Promise with cache info
 */
export declare function getCacheInfo(): Promise<{
    version: string;
    cacheName: string;
    available: boolean;
    iconCount?: number;
}>;
//# sourceMappingURL=icon-registry.d.ts.map