import { type AnyAgentTool } from "./common.js";
/** Test seam: clears the in-process cache. */
export declare function resetSkillSearchCacheForTest(): void;
interface MatchResult {
    name: string;
    description: string;
    path: string;
    score: number;
}
/**
 * Score a query against one skill's triggers + description.
 *  - Trigger score: ratio of query tokens that appear in the trigger set.
 *  - FTS score: 0.4 × ratio of query tokens that appear in the description
 *    (case-insensitive substring match).
 *  - Final = max(trigger, fts) so trigger matches always beat descriptions.
 *  - Returns 0 for "no signal at all" (caller should drop these).
 */
export declare function scoreSkillMatch(skill: {
    triggers: string[];
    description: string;
}, queryTokens: string[]): number;
/**
 * Pure-function search; exported for testing without going through the
 * tool execute wrapper.
 */
export declare function searchSkills(query: string, limit: number, workspaceDir?: string): MatchResult[];
export declare function createSkillSearchTool(opts?: {
    workspaceDir?: string;
}): AnyAgentTool;
export {};
