namespace Managing.Application.Abstractions.Grains
{
    public interface IAgentGrain : IGrainWithIntegerKey
    {
        /// <summary>
        /// Initializes the agent grain with user-specific data.
        /// </summary>
        /// <param name="userId">The ID of the user (used as grain key).</param>
        /// <param name="agentName">The display name of the agent.</param>
        Task InitializeAsync(int userId, string agentName);

        /// <summary>
        /// Generates a summary of the agent's stats for the AgentRegistryGrain.
        /// </summary>
        Task UpdateSummary();

        /// <summary>
        /// Registers a new bot with this agent.
        /// </summary>
        Task RegisterBotAsync(Guid botId);

        /// <summary>
        /// Unregisters a bot from this agent.
        /// </summary>
        Task UnregisterBotAsync(Guid botId);
    }
}