import { type McpToolRegistryContext, type McpToolRegistryPermission, type McpToolRegistryResult } from "../mcp.registerTool/core.js";
export type UnregisterMcpToolTarget = {
    serverId: string;
    toolName: string;
    keepAuditRecord?: boolean;
};
export type UnregisterMcpToolRequest = {
    target?: {
        serverId?: unknown;
        toolName?: unknown;
        keepAuditRecord?: unknown;
    } | null;
    context?: McpToolRegistryContext;
};
export type UnregisterMcpToolProviderRequest = UnregisterMcpToolTarget;
export type UnregisterMcpToolProviderResult = {
    toolName?: string;
    status: "unregistered" | "not_found" | "pending";
    providerMetadata?: Readonly<Record<string, unknown>>;
    raw?: unknown;
};
export type UnregisterMcpToolProvider = (request: UnregisterMcpToolProviderRequest, context: Readonly<Record<string, unknown>>) => Promise<UnregisterMcpToolProviderResult> | UnregisterMcpToolProviderResult;
export type UnregisterMcpToolEnvelope = {
    toolName: string;
    state: "planned" | "unregistered" | "not_found" | "pending";
    keepAuditRecord: boolean;
    source: "mockable-envelope" | "runtime-provider";
};
export type UnregisterMcpToolOutput = {
    kind: "agentCore.basicTool.mcp.unregisterTool";
    target: UnregisterMcpToolTarget;
    dryRun: boolean;
    executionBlocked: boolean;
    providerCalled: boolean;
    permissionsRequired: readonly McpToolRegistryPermission[];
    unsafeSideEffects: true;
    acceptedScopes: readonly string[];
    registryEnvelope: UnregisterMcpToolEnvelope;
    providerMetadata?: Readonly<Record<string, unknown>>;
};
export type UnregisterMcpToolResult = McpToolRegistryResult<UnregisterMcpToolOutput>;
export declare const mcpUnregisterToolDescriptor: {
    readonly toolId: "mcp.unregisterTool";
    readonly capability: "unregister-mcp-tool";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.mcpBase.tool";
    readonly permissionsRequired: readonly ["mcp:tool:read", "mcp:tool:write"];
    readonly defaultDryRun: true;
    readonly unsafeSideEffects: true;
    readonly tapOwnsApproval: true;
    readonly runtimeOwnsMcpClient: true;
    readonly providerBoundary: "BaseToolExecutorPort.mcp.unregisterTool";
};
export declare function planMcpToolUnregistration(request?: unknown): UnregisterMcpToolResult;
export declare function executeMcpToolUnregistration(request?: unknown, provider?: UnregisterMcpToolProvider): Promise<UnregisterMcpToolResult>;
