using Managing.Application.Abstractions.Models;
namespace Managing.Application.Abstractions.Grains
{
public interface IAgentGrain : IGrainWithIntegerKey
{
///
/// Initializes the agent grain with user-specific data.
///
/// The ID of the user (used as grain key).
/// The display name of the agent.
Task InitializeAsync(int userId, string agentName);
///
/// Updates only the agent name without recalculating summary.
///
/// The new agent name.
Task UpdateAgentNameAsync(string agentName);
///
/// Generates a summary of the agent's stats for the AgentRegistryGrain.
///
Task UpdateSummary();
///
/// Registers a new bot with this agent.
///
Task RegisterBotAsync(Guid botId);
///
/// Unregisters a bot from this agent.
///
Task UnregisterBotAsync(Guid botId);
///
/// Handles stream notifications for agent summary updates.
///
/// The update event from the stream
Task OnAgentSummaryUpdateAsync(AgentSummaryUpdateEvent updateEvent);
}
}