import { type MCPServer } from "../capability/mcp"; import type { LoadResult } from "../capability/types"; /** Result of normalizing a foreign MCP config into the internal contract. */ export interface MCPCompatNormalizeResult extends LoadResult { /** Normalization diagnostics (always present, possibly empty). */ warnings: string[]; /** Path the definitions were normalized from (for provenance). */ sourcePath: string; } /** * Normalize a Claude Code `.mcp.json` file body into the internal MCP contract. * * The Claude project format uses the same `{ "mcpServers": { name: {...} } }` * JSON shape as GJC's config; `enabled`/`autoload` are preserved so a caller * can decide startup behavior after import. Bounded to the supplied content: * no filesystem scanning, no user-home reads. */ export declare function normalizeClaudeMcpJson(content: string, sourcePath: string, level?: "project" | "user"): MCPCompatNormalizeResult; /** * Normalize a Codex `config.toml` file body into the internal MCP contract. * Only the `[mcp_servers.*]` sections are read; everything else is ignored. */ export declare function normalizeCodexMcpToml(content: string, sourcePath: string, level?: "project" | "user"): MCPCompatNormalizeResult; /** * Validate a normalized server against the internal MCP contract. Returns an * error message, or undefined when the definition is importable. Callers use * this to fail closed before writing a malformed/untrusted definition into * `.gjc` (mcpCapability.validate is reused so import and runtime share one rule). */ export declare function validateMCPCompatServer(server: MCPServer): string | undefined;