using AuthorBuddy.Web.Models; namespace AuthorBuddy.Web.Services; public interface IOllamaService { bool SupportsModelManagement { get; } Task> GetLocalModelsAsync(); Task> GetModelsForBackendAsync(string backendName); Task PullModelAsync(string modelName, IProgress progress); Task QuickSpellCheckAsync(string text); Task GetEmbeddingAsync(string text, string? backendName = null); Task TestEmbeddingAsync(string model, string? backendName = null); Task Chat(string model, string userMessage, string? systemPrompt = null, double? temperature = null, string? backendName = null); Task ChatStream(string model, string userMessage, Func onToken, string? systemPrompt = null, double? temperature = null, string? backendName = null); Task AnswerBasedOnFactsAsync(string question, string facts); Task<(bool Success, long LatencyMs)> TestConnectionAsync(); Task ModelExistsAsync(string model, string? backendName = null); Task DeleteModelAsync(string modelName); Task<(bool Success, int ContextWindow)> GetModelContextWindowAsync(string model, string? backendName = null); Task MeasureLatencyAsync(string model, string? backendName = null); void Reconfigure(string ollamaUrl); }