import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { type Logger } from 'pino';
import type { Config } from './config.js';
import { ElsClient } from './elsClient.js';
import type { ToolContext, MiddlewareDeps } from './middleware/withMiddleware.js';
import type { ProjectConfig } from './discovery/projectConfig.js';
/**
 * Создаёт McpServer, регистрирует tools, возвращает готовый объект.
 *
 * Transport подключается отдельно: stdio через `cli.ts`, HTTP через
 * `transports/http-server.ts`.
 *
 * Логи всегда идут в stderr (pino.destination(2)) — stdout зарезервирован
 * для JSON-RPC.
 */
export interface CreateMcpServerOptions {
    config: Config;
    log?: Logger;
    /** Для тестов: использовать готовый ELS клиент вместо создания нового. */
    client?: ElsClient;
    /**
     * Opt-in contextProvider. Если задан — все tools будут обёрнуты в
     * `withMiddleware` (quota + audit + usage + redaction).
     */
    contextProvider?: () => ToolContext;
    /** Middleware deps (audit/usage/redaction). */
    middleware?: MiddlewareDeps;
    /**
     * Auto-discovered project config (если найден `els.config.json` или
     * `package.json[inso.els]` в workdir / roots).
     */
    projectConfig?: ProjectConfig | null;
    /**
     * Готовый text instructions для init-response. Если не задан, но передан
     * `projectConfig` — генерим автоматически. Если оба не заданы — базовый
     * блок без project-context.
     */
    instructions?: string;
}
export interface McpServerHandle {
    server: McpServer;
    client: ElsClient;
    log: Logger;
    registeredTools: string[];
    registeredResources: string[];
    registeredPrompts: string[];
}
export declare function createMcpServer(opts: CreateMcpServerOptions): McpServerHandle;
//# sourceMappingURL=server.d.ts.map