namespace io.github.hatayama.uLoopMCP
{
///
/// Visitor interface for handling editor-specific configuration generation.
///
/// This interface enables the Visitor pattern to eliminate switch statements
/// when converting McpEditorType enum values to their corresponding settings.
/// Each editor type has its own Visit method that returns type T.
///
/// Related classes:
/// - McpEditorType: Enum that defines supported editor types
/// - EditorConfig: Value object that stores configuration information
/// - EditorConfigProvider: Concrete implementation of this visitor interface
///
/// The return type for visit operations
public interface IEditorConfigVisitor
{
///
/// Visits Cursor editor configuration.
///
/// Configuration result for Cursor
T VisitCursor();
///
/// Visits Claude Code editor configuration.
///
/// Configuration result for Claude Code
T VisitClaudeCode();
///
/// Visits VSCode editor configuration.
///
/// Configuration result for VSCode
T VisitVSCode();
///
/// Visits Gemini CLI editor configuration.
///
/// Configuration result for Gemini CLI
T VisitGeminiCLI();
///
/// Visits Windsurf editor configuration.
///
/// Configuration result for Windsurf
T VisitWindsurf();
///
/// Visits Codex editor configuration.
///
/// Configuration result for Codex
T VisitCodex();
///
/// Visits MCP Inspector configuration.
///
/// Configuration result for MCP Inspector
T VisitMcpInspector();
}
}