/**
 * Hook Registry
 *
 * Manages registration and discovery of hook handlers. Organizes hooks
 * by lifecycle event and supports priority-based ordering.
 *
 * @implements @.aiwg/requirements/use-cases/UC-004-extension-system.md
 * @architecture @src/extensions/types.ts
 * @tests @test/unit/cli/hooks/registry.test.ts
 * @issue #58
 */
import type { HookHandler, HookEvent } from './types.js';
/**
 * Hook Registry
 *
 * Central registry for all hook handlers. Provides O(1) lookup by event
 * and maintains priority ordering for execution.
 */
export declare class HookRegistry {
    /** Map of hook ID to handler */
    private handlers;
    /** Map of event to sorted list of handler IDs */
    private eventMap;
    /**
     * Register a hook handler
     *
     * @param handler - Hook handler to register
     * @throws Error if hook ID is already registered
     */
    register(handler: HookHandler): void;
    /**
     * Unregister a hook handler
     *
     * @param id - Hook ID to unregister
     */
    unregister(id: string): void;
    /**
     * Get handlers for a specific event
     *
     * Returns handlers in priority order (ascending). Optionally filters
     * by command name.
     *
     * @param event - Lifecycle event
     * @param command - Optional command name for filtering
     * @returns Array of matching handlers in priority order
     */
    getHandlers(event: HookEvent, command?: string): HookHandler[];
    /**
     * Check if a hook is registered
     *
     * @param id - Hook ID
     * @returns True if hook is registered
     */
    has(id: string): boolean;
    /**
     * Get a specific hook handler
     *
     * @param id - Hook ID
     * @returns Handler or undefined if not found
     */
    get(id: string): HookHandler | undefined;
    /**
     * Clear all registered hooks
     */
    clear(): void;
    /**
     * Get all registered handlers
     *
     * @returns Array of all handlers
     */
    getAllHandlers(): HookHandler[];
    /**
     * Get count of registered hooks
     *
     * @returns Number of registered hooks
     */
    get size(): number;
}
//# sourceMappingURL=registry.d.ts.map