import type { Context, MiddlewareHandler } from "hono";
import { McpServer, type LogLevel, type McpServerInfo } from "../server";
import type { Tool } from "../tool";
import type { Resource } from "../resource";
export type McpServerInit = {
    tools?: Tool<any, any, any | never>[];
    resources?: Resource<any, any, any, any | never>[];
    context?: object;
    serverInfo?: McpServerInfo;
} | {
    server: McpServer;
};
export interface McpOptionsBase {
    sessionsEnabled?: boolean;
    debug?: {
        historyEndpoint?: boolean;
        explainEndpoint?: boolean;
        logLevel?: LogLevel;
    };
    endpoint?: {
        transport?: "streamableHttp";
        path: `/${string}`;
        _init?: RequestInit;
    };
}
export type McpOptionsStatic = McpOptionsBase & McpServerInit & {
    setup?: never;
};
export interface McpOptionsSetup extends McpOptionsBase {
    setup: (c: Context) => Promise<McpServerInit>;
}
export type McpOptions = McpOptionsStatic | McpOptionsSetup;
export declare const mcp: (opts: McpOptions) => MiddlewareHandler;
