using System;
using System.Collections.Generic;
using Kyoo.Abstractions.Models.Exceptions;
namespace Kyoo.Abstractions.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 plugins and their dependencies from the plugin directory.
///
///
/// An initial plugin list to use.
/// You should not try to put plugins from the plugins directory here as they will get automatically loaded.
///
public void LoadPlugins(ICollection plugins);
///
/// Load plugins and their dependencies from the plugin directory.
///
///
/// An initial plugin list to use.
/// You should not try to put plugins from the plugins directory here as they will get automatically loaded.
///
public void LoadPlugins(params Type[] plugins);
}
}