import type { MyceliumGraph } from './graph';
export interface ReinforcementConfig {
    /** Learning rate for successful routes (default 0.08). */
    alpha?: number;
    /** Decay rate for unused edges per cycle (default 0.02). */
    beta?: number;
    /** Cost penalty factor (default 0.01). */
    gamma?: number;
    /** Minimum weight before an unprotected edge is archived (default 0.03). */
    pruneThreshold?: number;
    /** Maximum number of decay cycles before force-pruning (default 100). */
    maxIdleCycles?: number;
    /** Floor below which protected edges never decay (default 0.25). */
    protectedFloor?: number;
}
export interface EpisodeExtras {
    query?: string;
    taskType?: string;
    selectionReasons?: Record<string, string>;
    rewardComponents?: Record<string, number>;
    dryRun?: boolean;
    blocked?: boolean;
    blockReason?: string;
    appliedVerifiers?: string[];
}
export declare function reinforceRoute(graph: MyceliumGraph, route: string[], reward: number, config?: ReinforcementConfig, episode?: EpisodeExtras): void;
export declare function weakenRoute(graph: MyceliumGraph, route: string[], penalty: number, config?: ReinforcementConfig): void;
export declare function decayUnusedEdges(graph: MyceliumGraph, config?: ReinforcementConfig): number;
export declare function pruneDeadEdges(graph: MyceliumGraph, config?: ReinforcementConfig): number;
export interface RewardInput {
    taskSuccess?: number;
    correctness?: number;
    usefulness?: number;
    costEfficiency?: number;
    userSatisfaction?: number;
    novelty?: number;
}
export declare function computeReward(input: RewardInput): number;
//# sourceMappingURL=reinforcement.d.ts.map