/** * ElementRegistry — Singleton that tracks all interactive UI elements * * Elements are registered by the AgentKitProvider's introspection engine * or manually via the useAgentKit hook. The registry provides query methods * used by the CommandHandler to find and act on elements. */ import type { ElementInfo, ElementType, RegisteredElement, ElementHandlers, ScreenState } from './types'; type ChangeListener = (state: ScreenState) => void; declare class ElementRegistryImpl { private elements; private listeners; private autoIdCounter; /** * Register an element in the registry. */ register(id: string, info: Omit, ref: React.RefObject, handlers?: ElementHandlers): string; /** * Unregister an element by ID. */ unregister(id: string): boolean; /** * Update an element's info (partial update). */ update(id: string, partial: Partial): boolean; /** * Update an element's handlers. */ updateHandlers(id: string, handlers: Partial): boolean; /** * Get a registered element by ID. */ get(id: string): RegisteredElement | undefined; /** * Find elements by their text label (case-insensitive partial match). */ findByText(text: string): RegisteredElement[]; /** * Find elements by type. */ findByType(type: ElementType): RegisteredElement[]; /** * Find an element by ID or text. ID match is preferred. */ findByTarget(target: string): RegisteredElement | undefined; /** * Get all visible elements as ElementInfo array. * Filters out elements whose ref is in a hidden subtree (e.g. off-screen). */ getAll(): ElementInfo[]; /** * Get current screen state snapshot (visible elements only). */ getScreenState(): ScreenState; /** * Clear all registered elements. */ clear(): void; /** * Get count of visible elements. */ get size(): number; /** * Get total count including hidden elements (for internal use). */ get totalSize(): number; /** * Subscribe to registry changes. */ addListener(listener: ChangeListener): () => void; /** * Bulk update elements (used by introspection scans). * Updates introspected elements in-place to preserve action-modified state * (e.g. checked state after toggle). Removes stale introspected elements * and adds newly discovered ones. Manual elements are always preserved. */ bulkUpdate(elements: Array<{ id: string; info: Omit; ref: React.RefObject; handlers: ElementHandlers; }>): void; private generateId; private notifyListeners; } /** Singleton instance */ export declare const ElementRegistry: ElementRegistryImpl; export {}; //# sourceMappingURL=ElementRegistry.d.ts.map