using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using Jellyfin.Plugin.Jellypod.Api.Models;
using Jellyfin.Plugin.Jellypod.Models;
namespace Jellyfin.Plugin.Jellypod.Services;
///
/// Service for handling OPML import and export.
///
public interface IOpmlService
{
///
/// Parses OPML content and extracts podcast outlines.
///
/// The OPML XML content.
/// List of parsed outlines.
IReadOnlyList ParseOpml(string opmlContent);
///
/// Parses OPML from a stream.
///
/// The input stream containing OPML XML.
/// List of parsed outlines.
IReadOnlyList ParseOpml(Stream stream);
///
/// Imports podcasts from parsed OPML outlines.
///
/// The parsed OPML outlines.
/// Cancellation token.
/// Import result with statistics.
Task ImportPodcastsAsync(
IReadOnlyList outlines,
CancellationToken cancellationToken = default);
///
/// Exports all subscribed podcasts to OPML format.
///
/// OPML XML string.
Task ExportToOpmlAsync();
}