using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using gehGassi.Dto.Common;
using gehGassiApp.Core.Interfaces.Synchronization;
using gehGassiApp.Domain.Common;
using gehGassiApp.Domain.News;
namespace gehGassiApp.Core.Interfaces
{
///
/// Schnittstellenbeschreibung für einen Service der alle Funktionen rund um News zur Verfügung stellt
///
public interface INewsService : IService, ISyncPushPullService
{
///
/// Gibt eine Liste der aktuellen News Kategorien zurück.
/// Entweder von der DB oder vom Server
///
/// Aktuelles Accesstoken
/// Gewünschte Sprache
/// CancellationToken
/// Liste der News Kategorien
Task> GetCategoriesAsync(string accessToken, string language, CancellationToken token);
///
/// Abrufen von News. Berücksichtigt auch den Standort.
///
/// Id der Kategorie. Leer wenn ohne gewünscht
/// Aktuelle Position
/// Wie viele News sollen abgerufen werden? -1 Wenn nicht anwenden.
/// Wie viele News sollen ausgelassen werden? -1 Wenn nicht anwenden.
/// Akteuller Modus der App
/// Aktuelles Accesstoken
/// Gewünschte Sprache
/// CancellationToken
/// Liste der News
Task>> GetNewsAsync(string categoryId, LocationDto location, int take, int skip, AppMode appMode, string language, string accessToken, CancellationToken token);
}
}