using System.Text.Json.Nodes;
using Nexus.Api.Models;

namespace Nexus.Api.Services;

public interface IOpenClawGatewayClient
{
    Task<JsonNode?> InvokeToolAsync(string tool, object? args = null);
    Task<DashboardStatus> GetStatusAsync();
    Task<List<DashboardAgentInfo>> GetAgentsAsync();
    Task<List<MessageEntry>> GetSessionHistoryAsync(string sessionKey, int limit = 50, int offset = 0);
    Task<List<FeedEntry>> GetAllAgentOperationsAsync(int limit = 30);
    Task<ChatResponse> SendChatMessageAsync(string agentId, string message);
    Task<List<QueueItem>> GetQueueAsync();
    Task<bool> DeleteCronJobAsync(string id);
    Task<AgentModelInfo?> GetAgentModelAsync(string agentId);
    Task<bool> SetAgentModelAsync(string agentId, string model);
    Task<List<AgentActivityEntry>> GetAgentActivityAsync(string agentId, int limit = 5);
    List<ModelOption> GetAvailableModels();
}
