namespace Application.Abstractions.YouTube;

/// <summary>
/// YouTube PubSubHubbub(WebSub) 구독 관리
/// 채널의 새 영상/생방송 알림을 푸시로 수신
/// </summary>
public interface IYouTubePubSubService
{
    /// <summary>특정 채널의 피드 구독 신청</summary>
    Task<bool> SubscribeAsync(string channelId, CancellationToken ct);

    /// <summary>특정 채널의 피드 구독 해지</summary>
    Task<bool> UnsubscribeAsync(string channelId, CancellationToken ct);

    /// <summary>Atom Feed 알림 파싱</summary>
    YouTubePubSubNotification? ParseNotification(string atomXml);

    /// <summary>HMAC 서명 검증</summary>
    bool VerifySignature(string payload, string signature);
}