using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using skyscraper5.DsmCc.Descriptors;
using skyscraper5.DsmCc.Message;
using skyscraper5.Dvb.DataBroadcasting.Biop;
using skyscraper5.Mpeg2.Psi.Model;
using Tsubasa.IO;

namespace skyscraper5.Dvb.DataBroadcasting
{
    interface DataCarouselEventHandler
    {
        bool IsModuleWanted(int elementaryPid, ushort moduleId, byte moduleVersion);
        void NotifyOfNewModule(int elementaryPid, ushort moduleInfoModuleId, byte moduleInfoModuleVersion);
        void NotifyModuleDownloadProgress(int elementaryPid, ushort moduleInfoModuleId, byte moduleInfoModuleVersion, double moduleInfoDownloadProgress);
        ObjectCarouselEventHandler GetObjectCarouselEventHandler();
        void NotifyDownloadComplete(int elementaryPid, ushort moduleModuleId, byte moduleModuleVersion, Stream result, bool isObjectCarousel);
        void DsmCcDoItNowEvent(ProgramMapping programMapping, StreamEventDescriptor descriptorListStreamEventDescriptor, int sourcePid);
        void PreventDsmCcModuleRepetition(int elementaryPid, ushort moduleModuleId, byte moduleModuleVersion);
		void ProcessVirtualFilesystem(IFilesystem vfs, ProgramMappingStream programMappingStream);
	}
}
