using skyscraper8.Ietf.FLUTE;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using moe.yo3explorer.skyscraper8.DVBI.Model;

namespace skyscraper8.DvbNip
{
	internal interface IDvbNipEventHandler
	{
		void FluteFileArrival(NipActualCarrierInformation currentCarrierInformation, FluteListener fluteListener);
		void FluteFileDownloadProgress(NipActualCarrierInformation currentCarrierInformation, ulong destinationTsi, ulong destinationToi, double progress, FileType fileAssociation);
		void OnMulticastGatewayConfiguration(NipActualCarrierInformation currentCarrierInformation, MulticastGatewayConfigurationType multicastGatewayConfiguration);
		void OnNipCarrierDetected(NipActualCarrierInformation currentCarrierInformation);
		bool IsFileNeeded(string announcedFileContentLocation);
		void OnPrivateDataSignallingManifest(NipActualCarrierInformation currentCarrierInformation, PrivateDataSignallingManifestType privateDataSignallingManifest);
		void OnServiceListEntryPoints(NipActualCarrierInformation currentCarrierInformation,
			ServiceListEntryPoints serviceListEntryPoints, DateTime currentTime, DvbNipServiceListNotifier dvbNipReceiver);

		void OnServiceList(NipActualCarrierInformation currentCarrierInformation, string serviceListId, ServiceListType serviceList);
		void OnTimeOffsetFile(NipActualCarrierInformation currentCarrierInformation, TimeOffsetFileType timeOffsetFile);
		void OnNetworkInformationFile(NipActualCarrierInformation currentCarrierInformation, NetworkInformationFileType networkInformationFile);
		void OnServiceInformationFile(NipActualCarrierInformation currentCarrierInformation, ServiceInformationFileType serviceInformationFile);
		void FluteFileAnnouncement(IPAddress ip, ushort port, FDTInstanceType flute);
	}
}
