using HoneyBox.Admin.Business.Models;
using HoneyBox.Admin.Business.Models.Goods;

namespace HoneyBox.Admin.Business.Services.Interfaces;

/// <summary>
/// 奖品等级服务接口
/// </summary>
public interface IPrizeLevelService
{
    /// <summary>
    /// 获取奖品等级列表
    /// </summary>
    Task<PagedResult<PrizeLevelResponse>> GetPrizeLevelsAsync(PrizeLevelListRequest request);

    /// <summary>
    /// 获取奖品等级详情
    /// </summary>
    Task<PrizeLevelResponse?> GetPrizeLevelAsync(int id);

    /// <summary>
    /// 创建奖品等级
    /// </summary>
    Task<int> CreatePrizeLevelAsync(PrizeLevelCreateRequest request);

    /// <summary>
    /// 更新奖品等级
    /// </summary>
    Task<bool> UpdatePrizeLevelAsync(int id, PrizeLevelUpdateRequest request);

    /// <summary>
    /// 删除奖品等级
    /// </summary>
    Task<bool> DeletePrizeLevelAsync(int id);

    /// <summary>
    /// 获取所有奖品等级选项（用于下拉选择）
    /// </summary>
    Task<List<PrizeLevelOptionResponse>> GetPrizeLevelOptionsAsync();

    /// <summary>
    /// 根据盒子类型获取奖品等级选项
    /// </summary>
    /// <param name="goodsType">盒子类型</param>
    /// <param name="isChildPrize">是否为子奖品（宝箱内奖品）</param>
    Task<List<PrizeLevelOptionResponse>> GetPrizeLevelOptionsByTypeAsync(int goodsType, bool isChildPrize = false);

    /// <summary>
    /// 获取概率总和
    /// </summary>
    Task<decimal> GetTotalProbabilityAsync();
}
