using Orleans;
using Orleans.Concurrency;

namespace Managing.Application.Abstractions.Grains;

/// <summary>
/// Orleans grain interface for Bundle Backtest operations.
/// This is a stateless worker grain that processes bundle backtest requests.
/// Uses the bundle request ID as the primary key (Guid).
/// The grain processes a single bundle request identified by its primary key.
/// </summary>
public interface IBundleBacktestGrain : IGrainWithGuidKey
{
    /// <summary>
    /// Processes the bundle backtest request for this grain's RequestId
    /// The RequestId is determined by the grain's primary key
    /// </summary>
    /// <returns>Task representing the async operation</returns>
    [OneWay]
    Task ProcessBundleRequestAsync();
}