package com.dora.service;

import com.dora.dto.AdminRevenueDto;
import com.dora.dto.ApiResponse;

/**
 * 管理员收益设置服务接口
 */
public interface AdminRevenueService {

    /**
     * 获取收益设置
     * @return 收益设置响应
     */
    ApiResponse<AdminRevenueDto.RevenueSettingsResponse> getRevenueSettings();

    /**
     * 更新收益设置
     * @param request 更新请求
     * @return 更新结果
     */
    ApiResponse<String> updateRevenueSettings(AdminRevenueDto.RevenueSettingsUpdateRequest request);

    /**
     * 获取收益统计
     * @param request 统计请求
     * @return 收益统计响应
     */
    ApiResponse<AdminRevenueDto.RevenueStatisticsResponse> getRevenueStatistics(AdminRevenueDto.RevenueStatisticsRequest request);

    /**
     * 获取分成设置
     * @return 分成设置响应
     */
    ApiResponse<AdminRevenueDto.CommissionSettingsResponse> getCommissionSettings();

    /**
     * 更新分成设置
     * @param request 更新请求
     * @return 更新结果
     */
    ApiResponse<String> updateCommissionSettings(AdminRevenueDto.CommissionSettingsUpdateRequest request);

    /**
     * 获取提现设置
     * @return 提现设置响应
     */
    ApiResponse<AdminRevenueDto.WithdrawSettingsResponse> getWithdrawSettings();

    /**
     * 更新提现设置
     * @param request 更新请求
     * @return 更新结果
     */
    ApiResponse<String> updateWithdrawSettings(AdminRevenueDto.WithdrawSettingsUpdateRequest request);

    /**
     * 删除收益配置
     * @param configKey 配置键
     * @return 删除结果
     */
    ApiResponse<String> deleteRevenueConfig(String configKey);

    /**
     * 删除推广等级
     * @param levelId 等级ID
     * @return 删除结果
     */
    ApiResponse<String> deletePromotionLevel(Long levelId);

    /**
     * 获取被使用次数最多的工作流统计
     * @param request 查询请求
     * @return 工作流使用统计响应
     */
    ApiResponse<AdminRevenueDto.MostUsedWorkflowResponse> getMostUsedWorkflows(AdminRevenueDto.PopularContentRequest request);

    /**
     * 获取观看次数最高的视频统计
     * @param request 查询请求
     * @return 视频观看统计响应
     */
    ApiResponse<AdminRevenueDto.MostViewedVideoResponse> getMostViewedVideos(AdminRevenueDto.PopularContentRequest request);
}
