using HoneyBox.Model.Models.Config;

namespace HoneyBox.Core.Interfaces;

/// <summary>
/// 配置服务接口
/// </summary>
public interface IConfigService
{
    /// <summary>
    /// 获取系统配置
    /// </summary>
    /// <returns>系统配置数据</returns>
    Task<ConfigResponseDto> GetConfigAsync();

    /// <summary>
    /// 获取平台配置
    /// </summary>
    /// <param name="platform">平台标识</param>
    /// <returns>平台配置数据</returns>
    Task<PlatformConfigDto> GetPlatformConfigAsync(string? platform);

    /// <summary>
    /// 根据配置键获取配置值
    /// </summary>
    /// <param name="key">配置键</param>
    /// <returns>配置值（JSON字符串）</returns>
    Task<string?> GetConfigValueAsync(string key);

    /// <summary>
    /// 获取广告列表
    /// </summary>
    /// <param name="typeId">广告类型ID</param>
    /// <returns>广告列表</returns>
    Task<List<AdvertDto>> GetAdvertListAsync(int typeId);

    /// <summary>
    /// 获取单页内容
    /// </summary>
    /// <param name="type">单页类型ID</param>
    /// <returns>单页内容数据</returns>
    Task<DanyeDto?> GetDanyeAsync(int type);

    /// <summary>
    /// 获取单页内容（带平台适配）
    /// </summary>
    /// <param name="type">单页类型ID</param>
    /// <param name="platform">平台标识（APP_ANDROID, APP_IOS等）</param>
    /// <returns>单页内容数据</returns>
    Task<DanyeContentDto?> GetDanyeContentAsync(int type, string? platform);
}
