import { resolveSiteSessionOrigin } from "./site-session-origin.js"; import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import type { Settings } from "@opengeni/config"; import { ToolGatewayDeclarationsResponse, type AccessGrant, type ToolGatewayCatalog, type ToolGatewayIdentity } from "@opengeni/contracts"; import { type AccessGrantAuthorization, type ApiRouteDeps } from "@opengeni/core"; import { consumeToolGatewayApproval, getWorkspaceArtifactContentRef, issueToolGatewayApproval } from "@opengeni/db"; import { type PreparedWorkspaceToolGatewayTools } from "@opengeni/runtime/workspace-tool-gateway"; import { type ToolGatewayDefinition } from "@opengeni/tool-gateway"; import type { Observability } from "@opengeni/observability"; export type PreparedWorkspaceToolGateway = Pick & { toolGateway: NonNullable; toolGatewayCatalog: NonNullable; reauthorize?: () => Promise; }; type WorkspaceSiteToolContext = { siteArtifactId: string; siteVersionId: string; identity: { serverId: string; toolName: string; }; }; type AuthorizeWorkspaceSiteTool = (db: ApiRouteDeps["db"], grant: AccessGrant, context: WorkspaceSiteToolContext) => Promise; export declare function grantUsesAttemptScopedMcp(grant: AccessGrant): boolean; export declare function requireWorkspaceToolGatewayGrant(grant: AccessGrant): void; export declare function requireWorkspaceToolGatewayAuthorization(authorization: AccessGrantAuthorization): AccessGrant; export declare function prepareWorkspaceToolGateway(routeDeps: ApiRouteDeps, authorization: AccessGrantAuthorization): Promise; export declare function prepareMcpOAuthWorkspaceToolGateway(routeDeps: ApiRouteDeps, grant: AccessGrant, allowedIdentities: readonly { serverId: string; toolName: string; }[]): Promise; export declare function prepareWorkspaceToolGatewayForGrant(routeDeps: ApiRouteDeps, grant: AccessGrant, allowedIdentities?: readonly { serverId: string; toolName: string; }[]): Promise; export declare function workspaceToolGatewayDefinitionFilter(settings: Pick, allowedIdentities?: readonly ToolGatewayIdentity[]): (definition: ToolGatewayDefinition) => boolean; export declare function workspaceToolGatewaySettingsForGrant(settings: Settings, grant: AccessGrant, allowedIdentities?: readonly { serverId: string; toolName: string; }[]): Settings; export declare function buildWorkspaceToolGatewayMcpServer(prepared: PreparedWorkspaceToolGateway, grant: AccessGrant, observability?: Observability): Server; export declare function callWorkspaceToolGateway(prepared: PreparedWorkspaceToolGateway, grant: AccessGrant, input: unknown, db?: ApiRouteDeps["db"], consumeApproval?: typeof consumeToolGatewayApproval, observability?: Observability, authorizeSiteTool?: AuthorizeWorkspaceSiteTool, resolveOrigin?: typeof resolveSiteSessionOrigin): Promise<{ operationId: string; catalogDigest: string; result: { [x: string]: unknown; content: ({ [x: string]: unknown; type: "text"; text: string; annotations?: Record | undefined; _meta?: Record | undefined; } | { [x: string]: unknown; type: "image"; data: string; mimeType: string; annotations?: Record | undefined; _meta?: Record | undefined; } | { [x: string]: unknown; type: "audio"; data: string; mimeType: string; annotations?: Record | undefined; _meta?: Record | undefined; } | { [x: string]: unknown; type: "resource_link"; name: string; title?: string | undefined; uri: string; description?: string | undefined; mimeType?: string | undefined; size?: number | undefined; icons?: { src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "dark" | "light" | undefined; }[] | undefined; annotations?: Record | undefined; _meta?: Record | undefined; } | { [x: string]: unknown; type: "resource"; resource: { [x: string]: unknown; uri: string; mimeType?: string | undefined; text: string; _meta?: Record | undefined; } | { [x: string]: unknown; uri: string; mimeType?: string | undefined; blob: string; _meta?: Record | undefined; }; annotations?: Record | undefined; _meta?: Record | undefined; })[]; structuredContent?: Record | undefined; isError?: boolean | undefined; _meta?: Record | undefined; }; }>; export declare function approveWorkspaceToolGatewayCall(prepared: PreparedWorkspaceToolGateway, grant: AccessGrant, db: ApiRouteDeps["db"], input: unknown, issueApproval?: typeof issueToolGatewayApproval, observability?: Observability): Promise<{ operationId: string; catalogDigest: string; identity: { serverId: string; toolName: string; }; approvalToken: string; expiresAt: string; }>; export declare function requireWorkspaceSiteToolAuthorization(db: ApiRouteDeps["db"], grant: AccessGrant, context: WorkspaceSiteToolContext, resolveVersion?: typeof getWorkspaceArtifactContentRef): Promise; export declare function toolGatewayCatalogResponse(catalog: ToolGatewayCatalog): ToolGatewayCatalog; export declare function workspaceToolGatewayDeclarations(prepared: PreparedWorkspaceToolGateway): ToolGatewayDeclarationsResponse; export {};