import type { McpServer, RegisteredPrompt } from '@modelcontextprotocol/sdk/server/mcp.js';
import type { Core, Modules } from '@strapi/types';
import { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';
import { type McpCapabilityRegistry, McpCapabilityRegistryBase } from './internal/McpCapabilityRegistry';
/**
 * Defines a Strapi MCP prompt with full type inference, ready to pass to
 * `strapi.ai.mcp.registerPrompt()`. Exposed publicly as `ai.mcp.definePrompt`.
 *
 * The returned value is the definition unchanged — this builder only exists to
 * infer the `name`/`argsSchema` and narrow the access variant (`devModeOnly` vs
 * `auth`) so the result is directly assignable to `registerPrompt`.
 *
 * @param prompt - The prompt definition. Provide either `devModeOnly: true`
 * (dev-only, no auth) or an `auth` policy set — never both.
 * @returns The same definition, with its access variant narrowed.
 *
 * @example
 * ```ts
 * import { ai } from '@strapi/strapi';
 *
 * const context = ai.mcp.definePrompt({
 *   name: 'app-context',
 *   title: 'App Context',
 *   description: 'Provides context about the app',
 *   devModeOnly: true,
 *   createHandler: (strapi) => async () => ({
 *     messages: [{ role: 'user', content: { type: 'text', text: 'You are connected to Strapi.' } }],
 *   }),
 * });
 *
 * // later, in register() or bootstrap():
 * strapi.ai.mcp.registerPrompt(context);
 * ```
 */
export declare const makeMcpPromptDefinition: Modules.MCP.McpPromptBuilder;
export declare class McpPromptRegistry extends McpCapabilityRegistryBase<'prompt', Modules.MCP.McpPromptDefinition, RegisteredPrompt> implements McpCapabilityRegistry {
    #private;
    constructor(ctx: {
        strapi: Core.Strapi;
        definitions: McpCapabilityDefinitionRegistry<'prompt', Modules.MCP.McpPromptDefinition>;
    });
    bind(mcpServer: McpServer): void;
}
//# sourceMappingURL=prompt-registry.d.ts.map