using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using UnityEngine;

namespace LLM.Editor.Client
{
    /// <summary>
    /// Defines a common contract for API clients that can communicate with an LLM.
    /// This allows for swapping between different clients, such as a real one (Gemini)
    /// and a mock one for testing.
    /// </summary>
    public interface ILlmApiClient
    {
        public Task<bool> Initialize();
        public Task SendPrompt(string prompt, List<Object> stagedContext, CancellationToken cancellationToken = default);
        public Task SendFollowUp(string detailedContext, CancellationToken cancellationToken = default);
        public string GetAuthToken();
    }
}