using MCPForUnity.Editor.Models;
namespace MCPForUnity.Editor.Clients
{
///
/// Contract for MCP client configurators. Each client is responsible for
/// status detection, auto-configure, and manual snippet/steps.
///
public interface IMcpClientConfigurator
{
/// Stable identifier (e.g., "cursor").
string Id { get; }
/// Display name shown in the UI.
string DisplayName { get; }
/// Current status cached by the configurator.
McpStatus Status { get; }
///
/// The transport type the client is currently configured for.
/// Returns Unknown if the client is not configured or the transport cannot be determined.
///
ConfiguredTransport ConfiguredTransport { get; }
/// True if this client supports auto-configure.
bool SupportsAutoConfigure { get; }
/// Label to show on the configure button for the current state.
string GetConfigureActionLabel();
/// Returns the platform-specific config path (or message for CLI-managed clients).
string GetConfigPath();
/// Checks and updates status; returns current status.
McpStatus CheckStatus(bool attemptAutoRewrite = true);
/// Runs auto-configuration (register/write file/CLI etc.).
void Configure();
/// Returns the manual configuration snippet (JSON/TOML/commands).
string GetManualSnippet();
/// Returns ordered human-readable installation steps.
System.Collections.Generic.IList GetInstallationSteps();
}
}