import { type McpToolResult } from "../../_shared/baseToolAdapter.js";
export type McpUpdateResourcePermission = "mcp:resource:write";
export type McpUpdateResourceContext = {
    runtimeId?: string;
    sessionId?: string;
    invocationId?: string;
    dryRun?: boolean;
    guard?: {
        accepted?: boolean;
        allowed?: boolean;
        reason?: string;
    };
    contract?: {
        accepted?: boolean;
        reason?: string;
    };
    governance?: {
        accepted?: boolean;
        reason?: string;
    };
    allowedServerIds?: readonly string[];
    allowedUriPrefixes?: readonly string[];
    requestedScopes?: readonly string[];
    allowedScopes?: readonly string[];
    grantedPermissions?: readonly McpUpdateResourcePermission[];
    auditMetadata?: Readonly<Record<string, unknown>>;
};
export type McpUpdateResourceContent = {
    mimeType?: string;
    text?: string;
    bytesBase64?: string;
    metadata?: Readonly<Record<string, unknown>>;
};
export type McpUpdateResourceTarget = {
    serverId: string;
    resourceUri: string;
    content: McpUpdateResourceContent;
    expectedRevision?: string;
};
export type McpUpdateResourceRequest = {
    target?: (Partial<Omit<McpUpdateResourceTarget, "content">> & {
        content?: McpUpdateResourceContent;
    }) | null;
    context?: McpUpdateResourceContext;
};
export type McpUpdateResourceProviderRequest = McpUpdateResourceTarget;
export type McpUpdateResourceProviderResult = {
    uri?: string;
    status: "updated" | "not_found" | "conflict" | "pending";
    revision?: string;
    providerMetadata?: Readonly<Record<string, unknown>>;
    raw?: unknown;
};
export type McpUpdateResourceProvider = (request: McpUpdateResourceProviderRequest, context: Readonly<Record<string, unknown>>) => Promise<McpUpdateResourceProviderResult> | McpUpdateResourceProviderResult;
export type McpUpdateResourceMutationEnvelope = {
    uri: string;
    expectedRevision?: string;
    contentKind: "text" | "bytes" | "metadata" | "mixed";
    state: "planned" | "updated" | "not_found" | "conflict" | "pending";
    committed: boolean;
    revision?: string;
    source: "mockable-envelope" | "runtime-provider";
};
export type McpUpdateResourceOutput = {
    kind: "agentCore.basicTool.mcp.updateResource";
    target: McpUpdateResourceTarget;
    dryRun: boolean;
    executionBlocked: boolean;
    providerCalled: boolean;
    permissionsRequired: readonly McpUpdateResourcePermission[];
    unsafeSideEffects: true;
    acceptedScopes: readonly string[];
    mutationEnvelope: McpUpdateResourceMutationEnvelope;
    providerMetadata?: Readonly<Record<string, unknown>>;
};
export type McpUpdateResourceErrorCode = "INVALID_REQUEST" | "INVALID_CONTEXT" | "MISSING_SERVER_ID" | "INVALID_SERVER_ID" | "MISSING_RESOURCE_URI" | "INVALID_RESOURCE_URI" | "MISSING_CONTENT" | "INVALID_CONTENT" | "SCOPE_DENIED" | "PERMISSION_DENIED" | "CONTRACT_REJECTED" | "GOVERNANCE_REJECTED" | "REAL_EXECUTION_BLOCKED" | "PROVIDER_UNAVAILABLE" | "PROVIDER_REJECTED";
export type McpUpdateResourceResult = McpToolResult<McpUpdateResourceOutput, McpUpdateResourceErrorCode>;
export declare const mcpUpdateResourceDescriptor: {
    readonly toolId: "mcp.updateResource";
    readonly capability: "update-mcp-resource";
    readonly route: "agent_executionEngine.basic_toolLayer.baseTools.mcpBase.resource";
    readonly defaultDryRun: true;
    readonly tapOwnsApproval: true;
    readonly runtimeOwnsMcpClient: true;
    readonly permissionsRequired: readonly ["mcp:resource:write"];
    readonly unsafeSideEffects: true;
    readonly providerBoundary: "BaseToolExecutorPort.mcp.updateResource";
};
export declare function planMcpResourceUpdate(request?: unknown): McpUpdateResourceResult;
export declare function executeMcpResourceUpdate(request?: unknown, provider?: McpUpdateResourceProvider): Promise<McpUpdateResourceResult>;
