import { WorkspaceDefinition } from "../../config/types/workspace";
import { EditContextType } from "../client/editContext";
/**
 * WorkspaceRegistry manages registration and lookup of workspaces.
 *
 * Workspaces are fundamentally different UI experiences (home, editor, settings, etc.).
 * This registry provides a clean API for registering workspaces from core and plugins.
 */
export declare class WorkspaceRegistry {
    private workspaces;
    /**
     * Register a workspace definition.
     * @param workspace The workspace definition to register
     * @throws Error if a workspace with the same ID already exists
     */
    register(workspace: WorkspaceDefinition): void;
    /**
     * Register multiple workspaces at once.
     * @param workspaces Array of workspace definitions
     */
    registerAll(workspaces: WorkspaceDefinition[]): void;
    /**
     * Get a workspace by ID.
     * @param id The workspace ID
     * @returns The workspace definition or undefined if not found
     */
    get(id: string): WorkspaceDefinition | undefined;
    /**
     * Get all registered workspaces.
     * @returns Array of all workspace definitions
     */
    getAll(): WorkspaceDefinition[];
    /**
     * Get all visible workspaces for the current context.
     * Filters out hidden workspaces and those whose visible() returns false.
     * Sorted by sortOrder (lower numbers first).
     * @param editContext The current edit context
     * @returns Array of visible workspace definitions, sorted by sortOrder
     */
    getVisible(editContext: EditContextType): WorkspaceDefinition[];
    /**
     * Check if a workspace exists.
     * @param id The workspace ID
     * @returns True if the workspace is registered
     */
    has(id: string): boolean;
    /**
     * Remove a workspace by ID.
     * @param id The workspace ID to remove
     * @returns True if the workspace was removed
     */
    unregister(id: string): boolean;
    /**
     * Clear all registered workspaces.
     */
    clear(): void;
    /**
     * Get the count of registered workspaces.
     */
    get size(): number;
}
/**
 * Get the global workspace registry instance.
 * Creates it if it doesn't exist.
 */
export declare function getWorkspaceRegistry(): WorkspaceRegistry;
/**
 * Reset the global workspace registry.
 * Useful for testing.
 */
export declare function resetWorkspaceRegistry(): void;
