import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import type { Logger } from 'pino';
import type { ElsClient } from '../elsClient.js';
import { type ToolContext, type MiddlewareDeps } from '../middleware/withMiddleware.js';
import type { Tier } from '../billing/limits.js';
/**
 * Регистрирует все read-only tools на MCP-сервере.
 *
 * Каждый tool регистрируется через `server.registerTool(name, config, cb)`.
 * SDK 1.x принимает Zod raw shape (Record<string, ZodType>) в `inputSchema` и
 * автоматически валидирует args перед вызовом handler'а. На выходе handler
 * возвращает `{ structuredContent, content, isError? }`.
 *
 * Опционально tool можно отключить через ENV `MCP_DISABLE_TOOLS=name1,name2`.
 */
export interface RegisterToolsOptions {
    client: ElsClient;
    disabled?: readonly string[];
    log?: Logger;
    /**
     * Дополнительный contextProvider для извлечения appId/keyId/tier из
     * текущего request-контекста (в stdio-режиме обычно константа из config,
     * в HTTP-режиме — из OIDC claim / API-key). Если не задан, middleware
     * пропускается и handler вызывается напрямую (legacy-режим).
     */
    contextProvider?: () => ToolContext;
    /** Deps для middleware (audit/usage/redaction). */
    middleware?: MiddlewareDeps;
}
export declare function registerTools(server: McpServer, opts: RegisterToolsOptions): string[];
/**
 * Helper: создаёт ToolContext из переменных окружения для stdio-режима.
 */
export declare function makeStdioContext(args: {
    appId: string;
    apiKey: string;
    tier: Tier;
    log?: Logger;
}): ToolContext;
export declare const ALL_TOOL_NAMES: string[];
//# sourceMappingURL=index.d.ts.map