using TakeoutSaaS.Domain.Finance.Enums;
using TakeoutSaaS.Domain.Finance.Models;

namespace TakeoutSaaS.Domain.Finance.Repositories;

/// <summary>
/// 财务概览仓储契约。
/// </summary>
public interface IFinanceOverviewRepository
{
    /// <summary>
    /// 获取财务概览页快照。
    /// </summary>
    /// <param name="tenantId">租户标识。</param>
    /// <param name="dimension">统计维度。</param>
    /// <param name="storeId">门店标识（门店维度必填）。</param>
    /// <param name="currentUtc">当前 UTC 时间。</param>
    /// <param name="cancellationToken">取消标记。</param>
    Task<FinanceOverviewDashboardSnapshot> GetDashboardSnapshotAsync(
        long tenantId,
        FinanceCostDimension dimension,
        long? storeId,
        DateTime currentUtc,
        CancellationToken cancellationToken = default);
}
