namespace CMSMicroservice.Application.Common.Interfaces;

/// <summary>
/// Factory برای ایجاد Strategy مناسب براساس Config
/// </summary>
public interface ICommissionCalculationStrategyFactory
{
    /// <summary>
    /// ایجاد Strategy براساس تنظیمات سیستم
    /// </summary>
    /// <returns>استراتژی مناسب (ORM یا SP)</returns>
    Task<ICommissionCalculationStrategy> CreateStrategyAsync(CancellationToken cancellationToken = default);
    
    /// <summary>
    /// ایجاد Strategy مشخص
    /// </summary>
    /// <param name="strategyType">نوع استراتژی</param>
    /// <returns>استراتژی درخواستی</returns>
    ICommissionCalculationStrategy CreateStrategy(CommissionCalculationStrategyType strategyType);
}
