using BaseDomain.Results;
using Postall.Domain.Dtos;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Postall.Domain.Services.Contracts
{
    public interface IVideoService
    {
        Task<Result<List<VideoResponse>>> GetUserVideosAsync();
        Task<Result<List<VideoResponse>>> GetVideosByChannelIdAsync(string channelId);
        Task<Result<VideoResponse>> GetVideoDetailsAsync(string videoId);
        Task<Result<List<VideoResponse>>> GetChannelVideosFromYouTubeAsync(string channelId, int maxResults = 10);
        Task<Result<bool>> AddVideoAsync(string videoId, string channelId);
        Task<Result<bool>> AddVideosAsync(List<string> videoIds, string channelId);
        Task<Result<bool>> RemoveVideoAsync(string videoId);
        Task<Result<List<VideoResponse>>> SearchVideosAsync(string query, int maxResults = 10);
    }
}