import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
import type { Core, Modules } from '@strapi/types';
import { z } from '@strapi/utils';
import { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';
import { type McpCapabilityRegistry, McpCapabilityRegistryBase } from './internal/McpCapabilityRegistry';
import type { McpAdminTokenAbility } from './authentication';
export declare function makeMcpToolDefinition<Name extends string, Title extends string, Description extends string, OutputSchema extends z.ZodObject<z.ZodRawShape>, InputSchema extends z.ZodObject<z.ZodRawShape> | undefined = undefined, Access extends Modules.MCP.McpCapabilityAccess = Modules.MCP.McpCapabilityAccess>(tool: {
    name: Name;
    title: Title;
    description: Description;
    resolveInputSchema?: (context: Modules.MCP.McpHandlerContext) => InputSchema;
    resolveOutputSchema: (context: Modules.MCP.McpHandlerContext) => OutputSchema;
    createHandler: (strapi: Core.Strapi, context: Modules.MCP.McpHandlerContext) => Modules.MCP.McpToolHandler<NoInfer<InputSchema>, NoInfer<OutputSchema>>;
} & Access): Modules.MCP.McpToolDefinition<Name, InputSchema, OutputSchema, Title, Description> & Access;
export declare class McpToolRegistry extends McpCapabilityRegistryBase<'tool', Modules.MCP.McpToolDefinition, RegisteredTool> implements McpCapabilityRegistry {
    #private;
    constructor(ctx: {
        strapi: Core.Strapi;
        definitions: McpCapabilityDefinitionRegistry<'tool', Modules.MCP.McpToolDefinition>;
        ability: McpAdminTokenAbility;
        user: Modules.MCP.McpHandlerContext['user'];
    });
    bind(mcpServer: McpServer): void;
}
//# sourceMappingURL=tool-registry.d.ts.map