import type { MCPScope, MCPServerConfig } from "../core/mcp/index.js";
declare function bannerLines(version: string, subtitle: string): string[];
/** A server row joined with its live connection status. */
export interface McpServerRow {
    config: MCPServerConfig;
    scope: MCPScope;
    ok: boolean;
    toolCount: number;
    error?: string;
}
export type McpDashboardAction = {
    kind: "add";
} | {
    kind: "remove";
    name: string;
    scope: MCPScope;
} | {
    kind: "retry";
} | {
    kind: "details";
    name: string;
    scope: MCPScope;
} | {
    kind: "close";
};
declare function transportSummary(config: MCPServerConfig): string;
/**
 * Render the interactive dashboard. Resolves with the chosen action so the
 * flow controller in cli/mcp.ts can re-run connect + redraw afterwards.
 */
export declare function renderMcpDashboard(options: {
    version: string;
    rows: McpServerRow[];
}): Promise<McpDashboardAction>;
export declare function renderScopeSelector(version: string, cwd: string): Promise<MCPScope | null>;
/** Read one line of input via readline (used for the paste prompt). */
export declare function promptLine(question: string): Promise<string>;
export interface BannerPromptOptions {
    /** Subtitle shown under the logo. */
    subtitle: string;
    /** The input prompt label, e.g. "Command: ". */
    question: string;
    /** Hint text shown above the prompt (default: leave empty to go back). */
    hint?: string;
}
/**
 * Paint the MCP banner from the home position (same anchor as every other
 * screen, so nothing drifts), then read one line. Returns null when the user
 * submits an empty line (treated as "go back").
 */
export declare function promptWithBanner(version: string, options: BannerPromptOptions): Promise<string | null>;
export declare const mcpColors: {
    primary: string;
    accent: string;
    text: string;
    dim: string;
    good: string;
    bad: string;
};
export { bannerLines, transportSummary };
//# sourceMappingURL=mcp.d.ts.map