using System.Text.Json.Serialization;

namespace AxCopilot.Models;

public class CodeSettings
{
	[JsonPropertyName("nexusBaseUrl")]
	public string NexusBaseUrl { get; set; } = "";

	[JsonPropertyName("nugetSource")]
	public string NugetSource { get; set; } = "https://api.nuget.org/v3/index.json";

	[JsonPropertyName("pypiSource")]
	public string PypiSource { get; set; } = "https://conda.anaconda.org/conda-forge";

	[JsonPropertyName("mavenSource")]
	public string MavenSource { get; set; } = "https://repo1.maven.org/maven2";

	[JsonPropertyName("npmSource")]
	public string NpmSource { get; set; } = "https://registry.npmjs.org";

	[JsonPropertyName("preferredIdePath")]
	public string PreferredIdePath { get; set; } = "";

	[JsonPropertyName("buildTimeout")]
	public int BuildTimeout { get; set; } = 120;

	[JsonPropertyName("enableLsp")]
	public bool EnableLsp { get; set; } = true;

	[JsonPropertyName("enableCodeIndex")]
	public bool EnableCodeIndex { get; set; } = true;

	[JsonPropertyName("codeIndexMaxFileKb")]
	public int CodeIndexMaxFileKb { get; set; } = 500;

	[JsonPropertyName("enableAutoDiff")]
	public bool EnableAutoDiff { get; set; } = true;

	[JsonPropertyName("enableCodeReview")]
	public bool EnableCodeReview { get; set; } = true;

	[JsonPropertyName("enableSnippetRunner")]
	public bool EnableSnippetRunner { get; set; } = true;

	[JsonPropertyName("enableCodeVerification")]
	public bool EnableCodeVerification { get; set; } = false;
}
