using HoneyBox.Admin.Business.Models;
using HoneyBox.Admin.Business.Models.FloatBall;

namespace HoneyBox.Admin.Business.Services.Interfaces;

/// <summary>
/// 悬浮球配置服务接口
/// </summary>
public interface IFloatBallService
{
    /// <summary>
    /// 获取悬浮球列表（分页）
    /// </summary>
    /// <param name="request">分页请求</param>
    /// <returns>分页结果</returns>
    Task<PagedResult<FloatBallResponse>> GetFloatBallsAsync(FloatBallListRequest request);

    /// <summary>
    /// 获取悬浮球详情
    /// </summary>
    /// <param name="id">悬浮球ID</param>
    /// <returns>悬浮球详情</returns>
    Task<FloatBallResponse?> GetFloatBallByIdAsync(int id);

    /// <summary>
    /// 创建悬浮球
    /// </summary>
    /// <param name="request">创建请求</param>
    /// <returns>新创建的悬浮球ID</returns>
    Task<int> CreateFloatBallAsync(FloatBallCreateRequest request);

    /// <summary>
    /// 更新悬浮球
    /// </summary>
    /// <param name="id">悬浮球ID</param>
    /// <param name="request">更新请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateFloatBallAsync(int id, FloatBallUpdateRequest request);

    /// <summary>
    /// 删除悬浮球
    /// </summary>
    /// <param name="id">悬浮球ID</param>
    /// <returns>是否成功</returns>
    Task<bool> DeleteFloatBallAsync(int id);

    /// <summary>
    /// 更新悬浮球状态
    /// </summary>
    /// <param name="id">悬浮球ID</param>
    /// <param name="request">状态请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateStatusAsync(int id, FloatBallStatusRequest request);
}
