/**
 * Hook Scanner
 *
 * Discovers and catalogs all hooks in the project.
 * Scans plugin directories, parses hook metadata, and builds hook registry.
 *
 * Part of increment 0037: Hook Health Check System
 */
import { HookDefinition, ScannerConfig } from './types.js';
/**
 * Hook Scanner - Discovers hooks in project
 */
export declare class HookScanner {
    private config;
    constructor(config: ScannerConfig);
    /**
     * Scan project for all hooks
     */
    scanHooks(): Promise<HookDefinition[]>;
    /**
     * Scan hooks in a specific plugin directory
     *
     * Handles both legacy flat structure and v2 EDA architecture:
     * - Top-level hooks: user-prompt-submit.sh, etc.
     * - v2/dispatchers: session-start.sh, post-tool-use.sh
     * - v2/handlers: status-line-handler.sh, living-specs-handler.sh
     * - v2/detectors: lifecycle-detector.sh, us-completion-detector.sh
     * - v2/guards: metadata-json-guard.sh, etc.
     */
    private scanPluginHooks;
    /**
     * Scan v2 EDA architecture hooks
     * Structure: v2/{dispatchers,handlers,detectors,guards,queue}/*.sh
     */
    private scanV2Hooks;
    /**
     * Parse v2 hook file with EDA-aware metadata extraction
     */
    private parseV2HookFile;
    private static readonly V2_CATEGORY_TRIGGERS;
    /**
     * Extract trigger type for v2 hooks based on category
     */
    private extractV2Trigger;
    private static readonly CRITICAL_V2_HOOKS;
    /**
     * Check if v2 hook is critical
     */
    private isV2CriticalHook;
    private static readonly TESTABLE_V2_CATEGORIES;
    /**
     * Check if v2 hook is testable
     */
    private isV2TestableHook;
    private static readonly V2_CATEGORY_DURATIONS;
    /**
     * Get expected duration for v2 hooks
     */
    private getV2ExpectedDuration;
    /**
     * Check if file is a hook trigger file
     */
    private isHookFile;
    /**
     * Parse hook file and extract metadata
     */
    private parseHookFile;
    /**
     * Extract hook trigger from hook name
     */
    private extractTrigger;
    private static readonly EXTENSION_TO_TYPE;
    /**
     * Get file type from extension
     */
    private getFileType;
    /**
     * Extract dependencies from hook file
     */
    private extractDependencies;
    private static readonly CRITICAL_HOOKS;
    /**
     * Determine if hook is critical (failure blocks workflow)
     */
    private isCriticalHook;
    private static readonly TESTABLE_SHELL_HOOKS;
    /**
     * Determine if hook is testable in isolation
     */
    private isTestableHook;
    private static readonly HOOK_DURATIONS;
    /**
     * Get expected execution duration for hook (ms)
     */
    private getExpectedDuration;
    /**
     * Find all plugin directories in project
     */
    static findPluginDirectories(projectRoot: string): Promise<string[]>;
    /**
     * Create default scanner config
     */
    static createDefaultConfig(projectRoot: string): Promise<ScannerConfig>;
}
//# sourceMappingURL=HookScanner.d.ts.map