/**
 * Hypothesis Manager
 *
 * Manages root cause hypotheses during cross-domain analysis.
 * Handles:
 * - Hypothesis creation and tracking
 * - Evidence accumulation
 * - Confidence scoring
 * - Hypothesis ranking and selection
 */
import { Hypothesis, HypothesisEvidence } from './types';
/**
 * Configuration for hypothesis management
 */
export interface HypothesisManagerConfig {
    /** Maximum number of hypotheses to track */
    maxHypotheses: number;
    /** Confidence threshold for confirmation */
    confidenceThreshold: number;
    /** Decay factor for old evidence */
    evidenceDecayFactor?: number;
    /** Minimum supporting evidence for confirmation */
    minSupportingEvidence?: number;
}
/**
 * HypothesisManager - Manages hypothesis lifecycle
 */
export declare class HypothesisManager {
    private hypotheses;
    private config;
    constructor(config?: Partial<HypothesisManagerConfig>);
    /**
     * Add a new hypothesis
     */
    add(hypothesis: Hypothesis): void;
    /**
     * Get a hypothesis by ID
     */
    get(id: string): Hypothesis | undefined;
    /**
     * Update a hypothesis
     */
    update(id: string, updates: Partial<Hypothesis>): Hypothesis | null;
    /**
     * Remove a hypothesis
     */
    remove(id: string): boolean;
    /**
     * Get all hypotheses
     */
    getAll(): Hypothesis[];
    /**
     * Get active (non-rejected) hypotheses
     */
    getActive(): Hypothesis[];
    /**
     * Add evidence to a hypothesis
     */
    addEvidence(hypothesisId: string, evidence: HypothesisEvidence): Hypothesis | null;
    /**
     * Calculate confidence score for a hypothesis
     */
    calculateConfidence(hypothesis: Hypothesis): number;
    /**
     * Get the top hypothesis by confidence
     */
    getTop(): Hypothesis | null;
    /**
     * Get hypotheses sorted by confidence (descending)
     */
    getRanked(): Hypothesis[];
    /**
     * Check if any hypothesis meets confidence threshold
     */
    hasConfirmed(): boolean;
    /**
     * Get confirmed hypotheses
     */
    getConfirmed(): Hypothesis[];
    /**
     * Check if two hypotheses should be merged
     */
    shouldMerge(h1: Hypothesis, h2: Hypothesis): boolean;
    /**
     * Merge two hypotheses
     */
    merge(h1Id: string, h2Id: string): Hypothesis | null;
    /**
     * Update hypothesis status based on evidence
     */
    private updateStatus;
    /**
     * Remove the lowest confidence hypothesis to make room
     */
    private pruneLowestConfidence;
    /**
     * Calculate component name similarity (0-1)
     */
    private componentSimilarity;
    /**
     * Clear all hypotheses
     */
    clear(): void;
}
//# sourceMappingURL=hypothesisManager.d.ts.map