import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
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
 */
export interface TouchDesignerCapabilities {
    logging: Record<string, never>;
    prompts: Record<string, never>;
    tools: Record<string, never>;
}
/**
 * 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();
    /**
     * 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(): 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;
}
