using Orleans;

namespace Managing.Application.Abstractions.Grains;

/// <summary>
/// Orleans grain interface for price fetching operations.
/// This stateless worker grain handles fetching price data from external APIs 
/// and publishing to Orleans streams for a specific timeframe.
/// </summary>
public interface IPriceFetcherGrain : IGrainWithStringKey
{
    /// <summary>
    /// Fetches price data for all supported exchange/ticker combinations
    /// and publishes new candles to their respective streams.
    /// </summary>
    Task FetchAndPublishPricesAsync();
}