import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import type { Core, Modules } from '@strapi/types';
import { McpPromptRegistry } from '../prompt-registry';
import { McpResourceRegistry } from '../resource-registry';
import { McpToolRegistry } from '../tool-registry';
import type { McpAdminTokenAbility } from '../authentication';
import { McpCapabilityDefinitionRegistry } from './McpCapabilityDefinitionRegistry';
import type { McpCapabilityRegistryReadonly } from './McpCapabilityRegistry';
export type McpCapabilityDefinitions = {
    tools: McpCapabilityDefinitionRegistry<'tool', Modules.MCP.McpToolDefinition>;
    prompts: McpCapabilityDefinitionRegistry<'prompt', Modules.MCP.McpPromptDefinition>;
    resources: McpCapabilityDefinitionRegistry<'resource', Modules.MCP.McpResourceDefinition>;
};
export type McpRegistries = {
    tools: McpToolRegistry;
    prompts: McpPromptRegistry;
    resources: McpResourceRegistry;
};
/** Read-only registry surface exposed on McpServerWithRegistries. */
export type McpRegistriesReadonly = {
    tools: McpCapabilityRegistryReadonly;
    prompts: McpCapabilityRegistryReadonly;
    resources: McpCapabilityRegistryReadonly;
};
export type McpServerWithRegistries = {
    mcpServer: McpServer;
    registries: McpRegistriesReadonly;
};
export type CreateMcpServerWithRegistriesParams = {
    strapi: Core.Strapi;
    definitions: McpCapabilityDefinitions;
    isDevMode: boolean;
    ability: McpAdminTokenAbility;
    user: Modules.MCP.McpHandlerContext['user'];
};
export declare const createMcpServerWithRegistries: ({ strapi, definitions, isDevMode, ability, user, }: CreateMcpServerWithRegistriesParams) => McpServerWithRegistries;
//# sourceMappingURL=McpServerFactory.d.ts.map