import type { CustomVisualization } from './types.js';
/**
 * Central widget registration and lookup.
 * Plugin-sourced entries take priority over legacy-sourced entries.
 *
 * @internal
 */
export declare class WidgetPluginRegistry {
    private readonly entries;
    /**
     * Register a widget component by type name.
     * Plugin-sourced entries take priority over legacy-sourced entries.
     * Within the same source, first-write-wins (no silent overwrites).
     */
    register(widgetTypeName: string, component: CustomVisualization, source?: 'plugin' | 'legacy'): void;
    /**
     * Unregister a widget by type name and source.
     * Only removes the entry if it matches the given source.
     */
    unregister(widgetTypeName: string, source: 'plugin' | 'legacy'): void;
    /**
     * Get a widget component by type name.
     * When `source` is provided, returns the component only if the entry matches that source.
     * When omitted, returns the component for any source (plugin takes priority over legacy).
     */
    getComponent(widgetTypeName: string, source?: 'plugin' | 'legacy'): CustomVisualization | undefined;
    /**
     * Check if a widget is registered.
     * When `source` is provided, returns true only if an entry exists for that source.
     * When omitted, returns true for any registered entry.
     */
    has(widgetTypeName: string, source?: 'plugin' | 'legacy'): boolean;
}
