import type { Tool } from '../types';
export interface McpToolDescriptor {
    name: string;
    description?: string;
    inputSchema: unknown;
}
export interface McpServerOptions {
    tools: Tool[];
    /** Optional name advertised to clients. */
    serverName?: string;
    /** Optional version string. */
    version?: string;
}
export interface McpRequest {
    method: 'tools/list' | 'tools/call' | 'initialize';
    params?: Record<string, unknown>;
    id: number | string;
}
export interface McpResponse {
    id: number | string;
    result?: unknown;
    error?: {
        code: number;
        message: string;
    };
}
/** Stub transport — collects messages in-memory; replaced by stdio in production. */
export declare class StubTransport {
    sent: McpResponse[];
    send(response: McpResponse): void;
}
export declare class HarnessMcpServer {
    private tools;
    private serverName;
    private version;
    constructor(options: McpServerOptions);
    /** Build the tool catalog in MCP shape. */
    catalog(): McpToolDescriptor[];
    handle(request: McpRequest, transport: StubTransport): Promise<void>;
}
export interface McpServerStatus {
    ready: boolean;
    toolCount: number;
    serverName: string;
    transport: 'stub' | 'stdio';
    /** Hint surfaced to /api/jarvis/status for users. */
    enableHint?: string;
}
export declare function getMcpServerStatus(toolCount: number): McpServerStatus;
//# sourceMappingURL=mcpServer.d.ts.map