/**
 * MCP Proxy Middleware for Hono
 *
 * Provides a CORS proxy for browser-based MCP clients to connect to remote MCP servers
 * that don't support CORS or require server-side forwarding.
 *
 * @module mcp-proxy
 */
import type { Context, Hono } from "hono";
/**
 * Options for configuring the MCP proxy middleware
 */
export interface McpProxyOptions {
    /**
     * Route path for the proxy endpoint
     * @default "/mcp/proxy"
     * @example "/inspector/api/proxy"
     */
    path?: string;
    /**
     * Optional authentication function to validate requests
     * Return true to allow the request, false to reject with 401
     *
     * @example
     * ```typescript
     * authenticate: async (c) => {
     *   const apiKey = c.req.header("X-API-Key");
     *   return apiKey === process.env.API_KEY;
     * }
     * ```
     */
    authenticate?: (c: Context) => Promise<boolean> | boolean;
    /**
     * Optional request validator to check if target URL is allowed
     * Return true to allow, false to reject with 403
     *
     * @example
     * ```typescript
     * validateRequest: (targetUrl) => {
     *   // Only allow specific domains
     *   return targetUrl.startsWith("https://api.example.com");
     * }
     * ```
     */
    validateRequest?: (targetUrl: string, c: Context) => Promise<boolean> | boolean;
    /**
     * Enable request logging
     * @default true
     */
    enableLogging?: boolean;
}
/**
 * Mount MCP proxy middleware on a Hono app
 *
 * This middleware proxies MCP requests to target servers based on the X-Target-URL header.
 * It handles CORS, streaming responses (SSE), and provides optional authentication.
 *
 * The proxy:
 * 1. Reads the target URL from the X-Target-URL header
 * 2. Forwards the request to that URL with appropriate headers
 * 3. Streams the response back to the client
 * 4. Handles compression and encoding correctly
 *
 * @param app - Hono application instance
 * @param options - Configuration options for the proxy
 *
 * @example
 * ```typescript
 * import { Hono } from "hono";
 * import { mountMcpProxy } from "mcp-use/server";
 *
 * const app = new Hono();
 *
 * // Basic usage
 * mountMcpProxy(app);
 *
 * // With authentication
 * mountMcpProxy(app, {
 *   path: "/api/proxy",
 *   authenticate: async (c) => {
 *     const token = c.req.header("Authorization");
 *     return token === `Bearer ${process.env.SECRET_TOKEN}`;
 *   },
 *   validateRequest: (targetUrl) => {
 *     // Only allow specific domains
 *     return targetUrl.startsWith("https://mcp.example.com");
 *   }
 * });
 * ```
 *
 * @remarks
 * WARNING: This proxy does not implement authentication by default.
 * For production use, provide an `authenticate` function or restrict access to localhost only.
 */
export declare function mountMcpProxy(app: Hono, options?: McpProxyOptions): void;
//# sourceMappingURL=mcp-proxy.d.ts.map