/**
 * Zenith Plugin Registry
 *
 * Manages plugin registration and initialization
 *
 * ═══════════════════════════════════════════════════════════════════════════════
 * HOOK OWNERSHIP RULE (CANONICAL)
 * ═══════════════════════════════════════════════════════════════════════════════
 *
 * The plugin registry is part of core infrastructure.
 * It MUST remain plugin-agnostic:
 *   - No plugin-specific types
 *   - No plugin-specific logic
 *   - Generic data handling only
 *
 * Plugins own their data structures; core provides the storage mechanism.
 * ═══════════════════════════════════════════════════════════════════════════════
 */
import type { ZenithPlugin, PluginContext } from '../config/types';
/**
 * Get all plugin data (for runtime access)
 */
export declare function getPluginData(): Record<string, unknown[]>;
/**
 * Get plugin data by namespace
 */
export declare function getPluginDataByNamespace(namespace: string): unknown[];
/**
 * Plugin registry for managing Zenith plugins
 */
export declare class PluginRegistry {
    private plugins;
    /**
     * Register a plugin
     */
    register(plugin: ZenithPlugin): void;
    /**
     * Get a plugin by name
     */
    get(name: string): ZenithPlugin | undefined;
    /**
     * Check if a plugin is registered
     */
    has(name: string): boolean;
    /**
     * Get all registered plugins
     */
    all(): ZenithPlugin[];
    /**
     * Initialize all plugins with the provided context
     */
    initAll(ctx: PluginContext): Promise<void>;
    /**
     * Clear all registered plugins
     */
    clear(): void;
}
/**
 * Create a plugin context for initialization
 *
 * Uses a generic data setter that stores data by namespace.
 * Plugins define their own data structures internally.
 *
 * @param projectRoot - Absolute path to the project root
 * @returns A PluginContext for plugin initialization
 */
export declare function createPluginContext(projectRoot: string): PluginContext;
