import { type SDKTransport, type Server as TinyServer } from "../../tiny-stdio-mcp-server/dist/index.js";
import type { Group } from "./index.js";
import { type ErrorReportsOption } from "./error-report.js";
import { type HumanInLoopRuntimeOptions } from "./human-in-loop/index.js";
type Casing = "snake" | "camel";
type CmdkitServer = Omit<TinyServer, "connect"> & {
    connect(transport: SDKTransport): Promise<void>;
};
export interface RunMCPOptions<TServices extends object = Record<string, unknown>> {
    approvals?: boolean;
    fetch?: typeof globalThis.fetch;
    name: string;
    version?: string;
    humanInLoop?: HumanInLoopRuntimeOptions;
    projectRoot?: string;
    /**
     * Optional allowlist of MCP tool names or group prefixes.
     *
     * Tool names always use `__`-joined snake_case path segments, for example
     * `root__bot__create`.
     *
     * Passing a group prefix like `root__bot` includes every descendant tool in
     * that subtree.
     */
    tools?: string[];
    /**
     * Omit the root group name from MCP tool names for a single root group.
     *
     * Defaults to false, so existing MCP tool names keep the root group prefix.
     */
    omitRootToolNamePrefix?: boolean;
    services?: TServices;
    errorReports?: ErrorReportsOption;
    /**
     * Controls MCP input-schema key casing and accepted argument-key casing.
     *
     * This does not change tool names. Tool names always stay `__`-joined
     * snake_case path segments.
     */
    casing?: Casing;
}
export declare function createMCPServer<TServices extends object = Record<string, unknown>>(roots: Group<TServices> | Group<TServices>[], options: RunMCPOptions<TServices>): CmdkitServer;
export declare function runMCP<TServices extends object = Record<string, unknown>>(roots: Group<TServices> | Group<TServices>[], options: RunMCPOptions<TServices>): Promise<void>;
export {};
