namespace MCPForUnity.Editor.Services
{
///
/// Service for resolving paths to required tools and supporting user overrides
///
public interface IPathResolverService
{
///
/// Gets the uvx package manager path (respects override if set)
///
/// Path to the uvx executable, or null if not found
string GetUvxPath();
///
/// Gets the Claude CLI path (respects override if set)
///
/// Path to the claude executable, or null if not found
string GetClaudeCliPath();
///
/// Checks if Python is detected on the system
///
/// True if Python is found
bool IsPythonDetected();
///
/// Checks if Claude CLI is detected on the system
///
/// True if Claude CLI is found
bool IsClaudeCliDetected();
///
/// Sets an override for the uvx path
///
/// Path to override with
void SetUvxPathOverride(string path);
///
/// Sets an override for the Claude CLI path
///
/// Path to override with
void SetClaudeCliPathOverride(string path);
///
/// Clears the uvx path override
///
void ClearUvxPathOverride();
///
/// Clears the Claude CLI path override
///
void ClearClaudeCliPathOverride();
///
/// Gets whether a uvx path override is active
///
bool HasUvxPathOverride { get; }
///
/// Gets whether a Claude CLI path override is active
///
bool HasClaudeCliPathOverride { get; }
///
/// Gets whether the uvx path used a fallback from override to system path
///
bool HasUvxPathFallback { get; }
///
/// Validates the provided uv executable by running "--version" and parsing the output.
///
/// Absolute or relative path to the uv/uvx executable.
/// Parsed version string if successful.
/// True when the executable runs and returns a uv version string.
bool TryValidateUvxExecutable(string uvPath, out string version);
}
}