import type { Transport } from "@modelcontextprotocol/server";
import { McpServer } from "@modelcontextprotocol/server";
import type { ILogger } from "../core/logger.js";
import type { Result } from "../core/result.js";
import type { TouchDesignerClient } from "../tdClient/touchDesignerClient.js";
/**
 * Capabilities supported by TouchDesigner MCP Server
 *
 * The `logging` capability was removed: MCP deprecates the Logging feature as
 * of protocol revision 2026-07-28 (SEP-2577) in favor of stderr logging.
 */
export interface TouchDesignerCapabilities {
    prompts: Record<string, never>;
    tools: Record<string, never>;
}
export interface TouchDesignerServerParams {
    tdClient?: TouchDesignerClient;
}
/**
 * TouchDesigner MCP Server implementation
 */
export declare class TouchDesignerServer {
    readonly server: McpServer;
    readonly logger: ILogger;
    readonly tdClient: TouchDesignerClient;
    private readonly connectionManager;
    /**
     * Initialize TouchDesignerServer with proper dependency injection
     */
    constructor(params?: TouchDesignerServerParams);
    /**
     * Create a new TouchDesignerServer instance
     *
     * Factory method for creating server instances in multi-session scenarios.
     * Each session should have its own server instance to maintain independent MCP protocol state.
     *
     * @returns McpServer instance ready for connection to a transport
     *
     * @example
     * ```typescript
     * // In TransportRegistry
     * const serverFactory = () => TouchDesignerServer.create();
     * const transport = await registry.getOrCreate(sessionId, body, serverFactory);
     * ```
     */
    static create(params?: TouchDesignerServerParams): McpServer;
    /**
     * Connect to MCP transport
     */
    connect(transport: Transport): Promise<Result<void, Error>>;
    /**
     * Disconnect from MCP transport
     */
    disconnect(): Promise<Result<void, Error>>;
    /**
     * Check if connected to MCP transport
     */
    isConnectedToMCP(): boolean;
    /**
     * Register all features with the server
     * Only called after all dependencies are initialized
     */
    private registerAllFeatures;
}
