import { type McpToolDefinition, type McpToolRegistryContext, type McpToolRegistryPermission, type McpToolRegistryResult } from "../mcp.registerTool/core.js";
export type UpdateMcpToolPatch = Partial<Omit<McpToolDefinition, "name">> & {
    name?: string;
};
export type UpdateMcpToolTarget = {
    serverId: string;
    toolName: string;
    patch: UpdateMcpToolPatch;
};
export type UpdateMcpToolRequest = {
    target?: {
        serverId?: unknown;
        toolName?: unknown;
        patch?: unknown;
    } | null;
    context?: McpToolRegistryContext;
};
export type UpdateMcpToolProviderRequest = UpdateMcpToolTarget;
export type UpdateMcpToolProviderResult = {
    toolName?: string;
    status: "updated" | "not_found" | "pending";
    providerMetadata?: Readonly<Record<string, unknown>>;
    raw?: unknown;
};
export type UpdateMcpToolProvider = (request: UpdateMcpToolProviderRequest, context: Readonly<Record<string, unknown>>) => Promise<UpdateMcpToolProviderResult> | UpdateMcpToolProviderResult;
export type UpdateMcpToolEnvelope = {
    toolName: string;
    state: "planned" | "updated" | "not_found" | "pending";
    patchKeys: readonly string[];
    source: "mockable-envelope" | "runtime-provider";
};
export type UpdateMcpToolOutput = {
    kind: "agentCore.basicTool.mcp.updateTool";
    target: UpdateMcpToolTarget;
    dryRun: boolean;
    executionBlocked: boolean;
    providerCalled: boolean;
    permissionsRequired: readonly McpToolRegistryPermission[];
    unsafeSideEffects: true;
    acceptedScopes: readonly string[];
    registryEnvelope: UpdateMcpToolEnvelope;
    providerMetadata?: Readonly<Record<string, unknown>>;
};
export type UpdateMcpToolResult = McpToolRegistryResult<UpdateMcpToolOutput>;
export declare const mcpUpdateToolDescriptor: {
    readonly toolId: "mcp.updateTool";
    readonly capability: "update-mcp-tool-definition";
    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.updateTool";
};
export declare function planMcpToolUpdate(request?: unknown): UpdateMcpToolResult;
export declare function executeMcpToolUpdate(request?: unknown, provider?: UpdateMcpToolProvider): Promise<UpdateMcpToolResult>;
