import type { ClassificationResult, CompiledRule, JsonRule, ToolExecutionInput } from "../types.js";
import { type CommandMatchCandidate } from "./command-match.js";
type RuleLike = JsonRule | CompiledRule;
type RuleMatchSelection<T extends RuleLike> = {
    rule: T;
    candidate: CommandMatchCandidate;
};
export type ResolvedRuleMatch<T extends RuleLike = RuleLike> = {
    rule: T;
    candidate: CommandMatchCandidate;
    candidateInput: ToolExecutionInput;
    classification: ClassificationResult;
};
export declare function matchesRule(ruleLike: RuleLike, input: ToolExecutionInput): boolean;
export declare function findBestRuleMatch<T extends RuleLike>(input: ToolExecutionInput, rules: T[]): RuleMatchSelection<T> | undefined;
export declare function resolveRuleMatch<T extends RuleLike>(input: ToolExecutionInput, rules: T[]): ResolvedRuleMatch<T> | undefined;
export declare function classifyExecution(input: ToolExecutionInput, rules: RuleLike[], forcedRuleId?: string): ClassificationResult;
export {};
