using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.LiveTv;
namespace MediaBrowser.Controller.LiveTv;
///
/// Service responsible for managing s and mapping
/// their channels to channels provided by s.
///
public interface IListingsManager
{
///
/// Saves the listing provider.
///
/// The listing provider information.
/// A value indicating whether to validate login.
/// A value indicating whether to validate listings..
/// Task.
Task SaveListingProvider(ListingsProviderInfo info, bool validateLogin, bool validateListings);
///
/// Deletes the listing provider.
///
/// The listing provider's id.
void DeleteListingsProvider(string? id);
///
/// Gets the lineups.
///
/// Type of the provider.
/// The provider identifier.
/// The country.
/// The location.
/// The available lineups.
Task> GetLineups(string? providerType, string? providerId, string? country, string? location);
///
/// Gets the programs for a provided channel.
///
/// The channel to retrieve programs for.
/// The earliest date to retrieve programs for.
/// The latest date to retrieve programs for.
/// The to use.
/// The available programs.
Task> GetProgramsAsync(
ChannelInfo channel,
DateTime startDateUtc,
DateTime endDateUtc,
CancellationToken cancellationToken);
///
/// Adds metadata from the s to the provided channels.
///
/// The channels.
/// A value indicating whether to use the EPG channel cache.
/// The to use.
/// A task representing the metadata population.
Task AddProviderMetadata(IList channels, bool enableCache, CancellationToken cancellationToken);
///
/// Gets the channel mapping options for a provider.
///
/// The id of the provider to use.
/// The channel mapping options.
Task GetChannelMappingOptions(string? providerId);
///
/// Sets the channel mapping.
///
/// The id of the provider for the mapping.
/// The tuner channel number.
/// The provider channel number.
/// The updated channel mapping.
Task SetChannelMapping(string providerId, string tunerChannelNumber, string providerChannelNumber);
}