import { SidebarDefinition, ResolvedSidebar } from "../../config/types/sidebar";
import { EditContextType } from "../client/editContext";
/**
 * SidebarRegistry manages registration and lookup of sidebars.
 *
 * Sidebars are panels that can be opened within the Editor workspace.
 * This registry provides a clean API for registering sidebars from core and plugins.
 */
export declare class SidebarRegistry {
    private sidebars;
    /**
     * Register a sidebar definition.
     * @param sidebar The sidebar definition to register
     */
    register(sidebar: SidebarDefinition): void;
    /**
     * Register multiple sidebars at once.
     * @param sidebars Array of sidebar definitions
     */
    registerAll(sidebars: SidebarDefinition[]): void;
    /**
     * Get a sidebar by ID.
     * @param id The sidebar ID
     * @returns The sidebar definition or undefined if not found
     */
    get(id: string): SidebarDefinition | undefined;
    /**
     * Get all registered sidebars.
     * @returns Array of all sidebar definitions
     */
    getAll(): SidebarDefinition[];
    /**
     * Get all sidebars for a specific position.
     * @param position "left" or "right"
     * @returns Array of sidebar definitions for that position
     */
    getByPosition(position: "left" | "right"): SidebarDefinition[];
    /**
     * Get all visible sidebars for the current context.
     * Filters based on hidden, visible(), requiresItem, and requiresLayout.
     * @param editContext The current edit context
     * @returns Array of visible sidebar definitions, sorted by sortOrder
     */
    getVisible(editContext: EditContextType): SidebarDefinition[];
    /**
     * Get visible sidebars for a specific position.
     * @param position "left" or "right"
     * @param editContext The current edit context
     * @returns Array of visible sidebar definitions for that position
     */
    getVisibleByPosition(position: "left" | "right", editContext: EditContextType): SidebarDefinition[];
    /**
     * Resolve a sidebar definition by materializing any panel factories.
     * @param sidebar The sidebar definition
     * @param editContext The current edit context
     * @returns Resolved sidebar with all panels materialized
     */
    resolve(sidebar: SidebarDefinition, editContext: EditContextType): ResolvedSidebar;
    /**
     * Resolve multiple sidebars.
     * @param sidebarIds Array of sidebar IDs to resolve
     * @param editContext The current edit context
     * @returns Array of resolved sidebars (excludes not found)
     */
    resolveMany(sidebarIds: string[], editContext: EditContextType): ResolvedSidebar[];
    /**
     * Check if a sidebar exists.
     * @param id The sidebar ID
     * @returns True if the sidebar is registered
     */
    has(id: string): boolean;
    /**
     * Remove a sidebar by ID.
     * @param id The sidebar ID to remove
     * @returns True if the sidebar was removed
     */
    unregister(id: string): boolean;
    /**
     * Clear all registered sidebars.
     */
    clear(): void;
    /**
     * Get the count of registered sidebars.
     */
    get size(): number;
}
/**
 * Get the global sidebar registry instance.
 * Creates it if it doesn't exist.
 */
export declare function getSidebarRegistry(): SidebarRegistry;
/**
 * Reset the global sidebar registry.
 * Useful for testing.
 */
export declare function resetSidebarRegistry(): void;
