/**
 * Widget Registry Service
 *
 * Central registry for managing dashboard widgets, their definitions,
 * and tier-based access control.
 *
 * @since v1.56.0
 */
import type { Tier } from '../../core/types/auth.js';
import { type DashboardLayout, type PresetLayoutName, type RegisteredWidget, type WidgetCategory, type WidgetDefinition } from './widget-types.js';
/**
 * Preset layout definitions
 */
export declare const PRESET_LAYOUTS: Record<PresetLayoutName, DashboardLayout>;
/**
 * Widget Registry class
 */
export declare class WidgetRegistry {
    private widgets;
    private layouts;
    constructor();
    /**
     * Register a widget
     */
    register(widget: RegisteredWidget): void;
    /**
     * Unregister a widget
     */
    unregister(widgetId: string): boolean;
    /**
     * Get a widget by ID
     */
    get(widgetId: string): RegisteredWidget | undefined;
    /**
     * Get widget definition by ID
     */
    getDefinition(widgetId: string): WidgetDefinition | undefined;
    /**
     * Get all registered widgets
     */
    getAll(): RegisteredWidget[];
    /**
     * Get all widget definitions
     */
    getAllDefinitions(): WidgetDefinition[];
    /**
     * Get widgets available for a given tier
     */
    getAvailableForTier(tier: Tier): RegisteredWidget[];
    /**
     * Get widget definitions available for a given tier
     */
    getDefinitionsForTier(tier: Tier): WidgetDefinition[];
    /**
     * Get widgets by category
     */
    getByCategory(category: WidgetCategory): RegisteredWidget[];
    /**
     * Check if a widget is available for a tier
     */
    isAvailable(widgetId: string, tier: Tier): boolean;
    /**
     * Get a layout by ID
     */
    getLayout(layoutId: string): DashboardLayout | undefined;
    /**
     * Get all layouts
     */
    getAllLayouts(): DashboardLayout[];
    /**
     * Get layouts available for a given tier
     */
    getLayoutsForTier(tier: Tier): DashboardLayout[];
    /**
     * Get preset layouts
     */
    getPresetLayouts(): DashboardLayout[];
    /**
     * Add a custom layout
     */
    addLayout(layout: DashboardLayout): void;
    /**
     * Update a layout
     */
    updateLayout(layout: DashboardLayout): void;
    /**
     * Delete a custom layout
     */
    deleteLayout(layoutId: string): boolean;
    /**
     * Validate a layout (check all widgets exist and tier requirements)
     */
    validateLayout(layout: DashboardLayout, tier: Tier): ValidationResult;
    /**
     * Filter layout to only include widgets available for tier
     */
    filterLayoutForTier(layout: DashboardLayout, tier: Tier): DashboardLayout;
    /**
     * Get widget count
     */
    get count(): number;
    /**
     * Get layout count
     */
    get layoutCount(): number;
    /**
     * Clear all widgets (for testing)
     */
    clear(): void;
}
/**
 * Validation result
 */
export interface ValidationResult {
    valid: boolean;
    errors: string[];
    warnings: string[];
}
/**
 * Get the global widget registry instance
 */
export declare function getWidgetRegistry(): WidgetRegistry;
/**
 * Create a new widget registry (for testing)
 */
export declare function createWidgetRegistry(): WidgetRegistry;
export default WidgetRegistry;
//# sourceMappingURL=WidgetRegistry.d.ts.map