using Hc900Crawler.Core.Application.DTOs;

namespace Hc900Crawler.Core.Application.Interfaces;

/// <summary>트렌드 워크스페이스 — 아날로그 포인트 · 그룹 CRUD · 실시간 tail</summary>
public interface ITrendService
{
    Task<List<AnalogPointDto>>    GetAnalogPointsAsync(string? q, CancellationToken ct);
    Task<List<TrendGroupDto>>     GetGroupsAsync(CancellationToken ct);
    Task<TrendGroupDto?>          GetGroupAsync(int id, CancellationToken ct);
    Task<TrendGroupDto>           CreateGroupAsync(TrendGroupUpsertDto dto, CancellationToken ct);
    Task<TrendGroupDto?>          UpdateGroupAsync(int id, TrendGroupUpsertDto dto, CancellationToken ct);
    Task<bool>                    DeleteGroupAsync(int id, CancellationToken ct);
    Task<List<TrendLivePointDto>> GetLiveAsync(IReadOnlyList<string> tags, CancellationToken ct);
    Task<List<TrendLimitDto>>     GetLimitsAsync(IReadOnlyList<string> tags, CancellationToken ct);
    Task<List<TrendBandDto>>      GetRunBandsAsync(DateTime from, DateTime to, string? area, CancellationToken ct);
}
