/**
 * Expert Consultation Registry
 *
 * Surfaces UAP droids as virtual MCP tools so that `discover_tools` can find
 * the right expert by description, and `execute_tool` can dispatch a
 * consultation request to that droid. Keeps the 2-tool meta-router shape —
 * droids reuse the existing token-savings discovery surface.
 *
 * Virtual tool path: `experts.<droid-name>`
 * Virtual server name: `experts`
 */
import type { ToolDefinition } from '../types.js';
export declare const EXPERT_SERVER_NAME = "experts";
export interface ExpertConsultArgs {
    /** The context, task, or question to pass to the expert. */
    context: string;
    /** Optional explicit stage: pre-exec, post-exec, review, always. */
    stage?: 'pre-exec' | 'post-exec' | 'review' | 'always';
}
/**
 * Load every droid under `.factory/droids/` and convert each to a virtual
 * ToolDefinition that can be added to the MCP router's search index.
 *
 * Skips `test-droid-*` fixtures and any file with malformed frontmatter.
 */
export declare function loadExpertTools(cwd: string): ToolDefinition[];
/**
 * True when a tool path resolves to an expert consultation rather than an
 * external MCP server tool. Used by execute_tool to switch dispatch.
 */
export declare function isExpertToolPath(path: string): boolean;
/**
 * Extract the droid name from a full expert tool path.
 *
 *   "experts.security-auditor" → "security-auditor"
 */
export declare function expertNameFromPath(path: string): string | null;
export interface ExpertConsultResult {
    droid: string;
    found: boolean;
    /** Assembled consultation prompt (droid instructions + caller context). */
    consultation: string;
}
/**
 * Dispatch an in-process expert consultation. Locates the droid by its
 * frontmatter `name` (falling back to filename), and returns its instructions
 * wrapped as a prompt for the host agent — mirroring `uap_droid_invoke` so the
 * MCP `execute_tool` path and the Factory plugin path produce the same shape.
 *
 * Pure/synchronous and side-effect free: the harness is responsible for
 * actually running the returned prompt as a sub-agent.
 */
export declare function consultExpert(cwd: string, droidName: string, context: string, stage?: ExpertConsultArgs['stage']): ExpertConsultResult;
//# sourceMappingURL=registry.d.ts.map