import type { DagNode, DagNodeDefinition, DagNodeRouting } from "./dag.js";
type RouteSource = "project" | "global" | "builtin";
export type RoutingInput = Pick<DagNodeDefinition, "id" | "name" | "role" | "inputs" | "outputs" | "cost" | "routing">;
export interface RoutingInventory {
    skills: Map<string, RouteSource>;
    mcpServers: Map<string, RouteSource>;
    hooks: Map<string, RouteSource>;
    tools: Set<string>;
    diagnostics: RoutingDiagnostic[];
    skillsScope: "project" | "all" | "none";
    mcpScope: "project" | "all" | "none";
    hooksScope: "project" | "all" | "none";
}
export interface RoutingDiagnostic {
    kind: "mcp-config";
    source: "project" | "global";
    path: string;
    message: string;
}
export declare function selectTaskRouting(input: RoutingInput): DagNodeRouting;
export declare function resetRoutingInventoryCache(): void;
export declare function mergeDagNodeRouting(auto: DagNodeRouting, override: DagNodeRouting | undefined): DagNodeRouting;
export declare function dagNodeRoutingEnv(node: DagNode, dag?: import("./dag.js").Dag): Record<string, string>;
export declare function discoverRoutingInventory(projectRoot?: string): RoutingInventory;
export declare function redactMcpConfig(cfg: unknown): unknown;
export declare function loadMergedMcpConfig(projectRoot: string, scope: "project" | "all" | "none"): Promise<{
    servers: Record<string, unknown>;
    sources: Map<string, RouteSource>;
    diagnostics: RoutingDiagnostic[];
}>;
export {};
