import type { Modules } from '@strapi/types';
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { McpCapabilityDefinitionRegistry } from './McpCapabilityDefinitionRegistry';
export interface McpCapabilityRegistry {
    bind: (mcpServer: McpServer) => void;
}
/** Read-only registry surface for external consumers (plugins, handlers). */
export type McpCapabilityRegistryReadonly = Pick<McpCapabilityRegistryBase<'tool', Modules.MCP.McpCapabilityDefinition, RegisteredCapability>, 'list' | 'status'>;
export type RegisteredCapability = {
    enabled: boolean;
    enable(): void;
    disable(): void;
    remove(): void;
};
export declare class McpCapabilityRegistryBase<CapabilityName extends 'tool' | 'prompt' | 'resource', Definition extends Modules.MCP.McpCapabilityDefinition, Registered extends RegisteredCapability> {
    #private;
    constructor(definitions: McpCapabilityDefinitionRegistry<CapabilityName, Definition>);
    protected register<LocallyRegistered extends Registered>(registerFn: (definition: Definition) => LocallyRegistered): void;
    list(ctx?: {
        filter?: {
            status?: ('enabled' | 'disabled' | 'defined' | 'undefined')[];
        };
    }): {
        name: string;
        status: "enabled" | "disabled" | "defined" | "undefined";
        devModeOnly: boolean;
        auth: Definition["auth"] | undefined;
    }[];
    status(name: string): 'enabled' | 'disabled' | 'defined' | 'undefined';
    /** @internal Used by syncMcpSessionCapabilities; not part of the public registry API. */
    enable(name: string): void;
    /** @internal Used by syncMcpSessionCapabilities; not part of the public registry API. */
    enableAll(): void;
    /** @internal Used by syncMcpSessionCapabilities; not part of the public registry API. */
    disable(name: string): void;
    /** @internal Used by syncMcpSessionCapabilities; not part of the public registry API. */
    disableAll(): void;
    /** @internal Used by syncMcpSessionCapabilities; not part of the public registry API. */
    remove(name: string): void;
    /** @internal Used by syncMcpSessionCapabilities; not part of the public registry API. */
    removeAll(): void;
}
//# sourceMappingURL=McpCapabilityRegistry.d.ts.map