using System.Collections.Generic;
using Kyoo.Models.Exceptions;
namespace Kyoo.Controllers
{
///
/// A manager to load plugins and retrieve information from them.
///
public interface IPluginManager
{
///
/// Get a single plugin that match the type and name given.
///
/// The name of the plugin
/// The type of the plugin
/// If no plugins match the query
/// A plugin that match the queries
public T GetPlugin(string name);
///
/// Get all plugins of the given type.
///
/// The type of plugins to get
/// A list of plugins matching the given type or an empty list of none match.
public ICollection GetPlugins();
///
/// Get all plugins currently running on Kyoo. This also includes deleted plugins if the app as not been restarted.
///
/// All plugins currently loaded.
public ICollection GetAllPlugins();
///
/// Load new plugins from the plugin directory.
///
/// If a plugin can't be loaded because a dependency can't be resolved.
public void ReloadPlugins();
}
}