import type { ToolDefinition } from '../../../services/llm';
import type { WorkflowCandidate } from '../../../types/discovery';
/**
 * Ranked discovery of compiled YAML workflows via FTS + tag overlap.
 *
 * Callers pass their own module-level caches so each pipeline keeps
 * isolated cache instances.
 */
export declare function findCompiledWorkflows(prompt: string, caches: {
    yamlWorkflowMap: Map<string, string>;
    toolDefCache: Map<string, ToolDefinition>;
}, logPrefix?: string): Promise<{
    inventory: string;
    toolIds: string[];
    candidates: WorkflowCandidate[];
}>;
/**
 * LLM-as-judge: does a compiled workflow match the user's intent?
 * One cheap call (secondary model, ~200 tokens) to potentially skip
 * the entire agentic loop.
 */
export declare function evaluateWorkflowMatch(prompt: string, candidates: WorkflowCandidate[], logPrefix?: string): Promise<{
    matched: boolean;
    workflowName: string | null;
    confidence: number;
}>;
/**
 * Extract structured inputs from the user's prompt using the matched
 * workflow's input_schema. Acts as a second confirmation gate — if the
 * LLM can't map the prompt to the schema, the match is rejected.
 */
export declare function extractWorkflowInputs(prompt: string, inputSchema: Record<string, unknown>, workflowName: string): Promise<{
    inputs: Record<string, any> | null;
    extracted: boolean;
}>;
