using System;
using System.Collections.Generic;
using Kyoo.Models.Exceptions;
namespace Kyoo.Controllers
{
	/// 
	/// A service to handle long running tasks.
	/// 
	/// The concurrent number of running tasks is implementation dependent.
	public interface ITaskManager
	{
		/// 
		/// Start a new task (or queue it).
		/// 
		/// The slug of the task to run
		/// A list of arguments to pass to the task. An automatic conversion will be made if arguments to not fit.
		/// If the number of arguments is invalid or if an argument can't be converted.
		/// The task could not be found.
		void StartTask(string taskSlug, Dictionary arguments = null);
		
		/// 
		/// Get all currently running tasks
		/// 
		/// A list of currently running tasks.
		ICollection GetRunningTasks();
		
		/// 
		/// Get all available tasks
		/// 
		/// A list of every tasks that this instance know.
		ICollection GetAllTasks();
	}
}