import type { MyceliumGraph, MyceliumNode, MyceliumEdge } from './graph';
export interface ActivationConfig {
    /** Number of propagation rounds (default 3). */
    hops?: number;
    /** Minimum activation to include in the result (default 0.05). */
    threshold?: number;
    /** Damping factor applied at each hop (default 0.7). */
    damping?: number;
}
export declare function spreadActivation(graph: MyceliumGraph, seedNodeId: string, config?: ActivationConfig): MyceliumNode[];
export type SelectionReason = 'exploitation' | 'exploration' | 'protected_required' | 'verifier_required' | 'safety_required' | 'fallback';
export interface RouteConfig {
    /** Maximum nodes to include (default 12). */
    maxNodes?: number;
    /** Maximum edges to include (default maxNodes * 2). */
    maxEdges?: number;
    /** Exploration rate: probability of picking a non-best edge (default 0.15). */
    exploreRate?: number;
    /** Optional deterministic random for tests. Returns 0..1. */
    random?: () => number;
}
export interface SelectedEdge {
    edge: MyceliumEdge;
    reason: SelectionReason;
}
export interface SelectedRoute {
    nodes: MyceliumNode[];
    edges: MyceliumEdge[];
    /** Per-edge selection reason, keyed by `${source}->${target}`. */
    selectionReasons: Map<string, SelectionReason>;
    exploitedEdges: MyceliumEdge[];
    exploratoryEdges: MyceliumEdge[];
    protectedRequiredEdges: MyceliumEdge[];
    fallbackEdges: MyceliumEdge[];
}
export declare function selectRoute(graph: MyceliumGraph, activatedNodes: MyceliumNode[], config?: RouteConfig): SelectedRoute;
//# sourceMappingURL=activation.d.ts.map