export interface ExpectedUtilityWeights { latency: number; tokens: number; risk: number; context: number; latencyScaleMs: number; tokenScale: number; minimumEvidence: number; minimumMargin: number; highEntropy: number; } export declare const DEFAULT_EXPECTED_UTILITY_WEIGHTS: ExpectedUtilityWeights; export interface ExpectedUtilityCandidate { tool: string; value: number; alpha: number; beta: number; sampleCount: number; latencyMs?: number; tokenEstimate?: number; riskCost?: number; contextCost?: number; deterministicMatch?: boolean; /** Candidates with unresolved paths may be observed/shortlisted but never recommended. */ automaticEligible?: boolean; /** `no_tool` uses a known probability rather than a learned posterior. */ successProbability?: number; } export interface RankedToolCandidate extends ExpectedUtilityCandidate { successProbability: number; latencyCost: number; tokenCost: number; riskCost: number; contextCost: number; utility: number; probability: number; } export type ToolSelectionDisposition = "recommend" | "shortlist" | "abstain"; export interface ToolSelectionDecision { disposition: ToolSelectionDisposition; recommendation?: string; shortlist: string[]; entropy: number; margin: number; ranked: RankedToolCandidate[]; } export declare function betaSuccessProbability(alpha: number, beta: number): number; export declare function normalizedEntropy(probabilities: readonly number[]): number; export declare function rankExpectedUtilityCandidates(candidates: readonly ExpectedUtilityCandidate[], weights?: ExpectedUtilityWeights): RankedToolCandidate[]; export declare function decideExpectedUtility(candidates: readonly ExpectedUtilityCandidate[], weights?: ExpectedUtilityWeights): ToolSelectionDecision; //# sourceMappingURL=expected-utility.d.ts.map