import type { ClientOptions } from '../utils/types.js'; import type { ServerConfig, ClientConfig, ClientManager, ClientType } from './types.js'; /** * Abstract base class providing common functionality for all supported MCP client managers. * * Subclasses should extend this class to handle client-specific configuration paths and custom behaviors. */ export declare abstract class BaseClientManager implements ClientManager { protected readonly clientType: ClientType; readonly displayName: string; protected readonly capabilities?: string[]; /** * Initializes a new BaseClientManager instance. * * @param options - Configuration options including client type, display name, and optional capabilities. */ constructor(options: { clientType: ClientType; displayName: string; capabilities?: string[]; }); /** * Returns the absolute path to the client's configuration file. * * Subclasses must implement this method to provide client-specific path resolution. * Implementations are responsible for ensuring any necessary directories exist. * * @returns The resolved configuration file path. */ abstract getConfigPath(): string; /** * Updates the client’s configuration with OpenZiti MCP server settings. * * Loads the existing configuration, applies updates for the MCP server, * and writes the updated configuration back to disk. * * @param options - Client configuration options such as enabled tools and read-only mode. */ configure(options: ClientOptions): Promise; /** * Creates an MCP server configuration entry based on the provided client options. * * This method transforms the user’s options into a command, arguments, * environment variables, and optional capabilities that the client will use to start the MCP server. * * Subclasses may override this method if additional customization of the server config is needed. * * @param options - Options controlling server configuration, such as selected tools and read-only mode. * @returns A fully-formed ServerConfig object. * @protected */ protected createServerConfig(options: ClientOptions): ServerConfig; /** * Loads the client’s configuration from disk. * * Attempts to read and parse the configuration file at the given path. * Returns a default configuration object if the file is missing or cannot be read. * * @param configPath - Path to the client’s configuration file. * @returns A parsed ClientConfig object. * @protected */ protected readConfig(configPath: string): ClientConfig; /** * Writes the provided configuration object to disk. * * Serializes the configuration to formatted JSON and saves it at the specified path. * * @param configPath - Path where the configuration should be saved. * @param config - Configuration object to serialize and write. * @protected */ protected writeConfig(configPath: string, config: ClientConfig): void; }