using skyscraper5.Skyscraper.Scraper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tsubasa.IO;

namespace skyscraper8.yo3explorer
{
	/// <summary>
	/// This interface is intended to describe a Skyscraper plugin that processes a yo3explorer compatible filesystem.
	/// </summary>
	internal interface FilesystemProcessorPlugin
	{
		/// <summary>
		/// Lets this Skyscraper plugin process a yo3explorer compatible filesystem.
		/// </summary>
		/// <param name="vfs">A yo3explorer compatible filesystem.</param>
		/// <param name="context">Data that might be useful to the plugin.</param>
		/// <param name="state">Data that is supposed to be kept spanning multiple yo3explorer sessions. One could argue that this object simulates the GUI of yo3explorer.</param>
		void ProcessFilesystem(IFilesystem vfs, yo3explorerToSkyscraperContextBridge context, yo3explorerState state);
	}
}
