/**
 * @license
 * Copyright 2025 Steven Roussey <sroussey@gmail.com>
 * SPDX-License-Identifier: Apache-2.0
 *
 * Unified MCP client util. Full schema is available on all platforms.
 * stdio transport is injected via McpTaskDeps and only available on Node/Bun.
 */
import { Client } from "@modelcontextprotocol/sdk/client";
import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
import type { McpServerConfig } from "./McpTaskDeps";
export declare const mcpTransportTypes: readonly ["stdio", "sse", "streamable-http"];
export declare const mcpServerConfigSchema: {
    readonly properties: {
        readonly auth_type: {
            readonly type: "string";
            readonly enum: readonly ["none", "bearer", "client_credentials", "private_key_jwt", "static_private_key_jwt", "authorization_code"];
            readonly title: "Auth Type";
            readonly description: "Authentication method for connecting to the MCP server";
        };
        readonly auth_token: {
            readonly type: "string";
            readonly format: "credential";
            readonly title: "Bearer Token";
            readonly description: "Static bearer token or API key (for bearer auth)";
        };
        readonly auth_client_id: {
            readonly type: "string";
            readonly title: "Client ID";
            readonly description: "OAuth client ID (for OAuth auth types)";
        };
        readonly auth_client_secret: {
            readonly type: "string";
            readonly format: "credential";
            readonly title: "Client Secret";
            readonly description: "OAuth client secret (for client_credentials auth)";
        };
        readonly auth_private_key: {
            readonly type: "string";
            readonly format: "credential";
            readonly title: "Private Key";
            readonly description: "PEM or JWK private key (for private_key_jwt auth)";
        };
        readonly auth_algorithm: {
            readonly type: "string";
            readonly title: "Algorithm";
            readonly description: "JWT signing algorithm, e.g. RS256, ES256 (for private_key_jwt auth)";
        };
        readonly auth_jwt_bearer_assertion: {
            readonly type: "string";
            readonly format: "credential";
            readonly title: "JWT Assertion";
            readonly description: "Pre-built JWT assertion (for static_private_key_jwt auth)";
        };
        readonly auth_redirect_url: {
            readonly type: "string";
            readonly format: "uri";
            readonly title: "Redirect URL";
            readonly description: "OAuth redirect URL (for authorization_code auth)";
        };
        readonly auth_scope: {
            readonly type: "string";
            readonly title: "Scope";
            readonly description: "OAuth scope (space-separated)";
        };
        readonly auth_client_name: {
            readonly type: "string";
            readonly title: "Client Name";
            readonly description: "Optional OAuth client display name";
        };
        readonly auth_jwt_lifetime_seconds: {
            readonly type: "number";
            readonly title: "JWT Lifetime";
            readonly description: "JWT lifetime in seconds (default: 300)";
            readonly minimum: 1;
        };
        readonly transport: {
            readonly type: "string";
            readonly enum: readonly ["stdio", "sse", "streamable-http"];
            readonly title: "Transport";
            readonly description: "The transport type to use for connecting to the MCP server";
        };
        readonly server_url: {
            readonly type: "string";
            readonly format: "uri";
            readonly title: "Server URL";
            readonly description: "The URL of the MCP server (for sse and streamable-http transports)";
        };
        readonly command: {
            readonly type: "string";
            readonly title: "Command";
            readonly description: "The command to run (for stdio transport)";
        };
        readonly args: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly title: "Arguments";
            readonly description: "Command arguments (for stdio transport)";
        };
        readonly env: {
            readonly type: "object";
            readonly additionalProperties: {
                readonly type: "string";
            };
            readonly title: "Environment";
            readonly description: "Environment variables (for stdio transport)";
        };
    };
    readonly allOf: readonly Record<string, unknown>[];
};
export type McpTransportType = (typeof mcpTransportTypes)[number];
export declare function createMcpClient(config: McpServerConfig, signal?: AbortSignal): Promise<{
    client: Client;
    transport: Transport;
}>;
export declare const mcpClientFactory: {
    create: typeof createMcpClient;
};
//# sourceMappingURL=McpClientUtil.d.ts.map