using Alchegos.HCI.Models;

namespace Alchegos.HCI.Services;
public interface IChatSessionService
{
    ChatSession GetOrCreateSession(string sessionId);
    ChatSession? GetSession(string sessionId);
    void AddMessage(string sessionId, ChatMessage message);
    void SetWaitingStatus(string sessionId, bool isWaiting);
    void RemoveSession(string sessionId);
    Task SendMessageToExternalWebhook(string sessionId, string chatInput);
    void RegisterSessionCallbacks(string sessionId, Func<ChatMessage, Task>? messageCallback, Func<Task>? closeCallback);
    void UnregisterSessionCallbacks(string sessionId);
    Task TriggerMessageReceived(string sessionId, string output);
    Task TriggerSessionClosed(string sessionId);
}