using MarketAlly.AIPlugin;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace MarketAlly.AIPlugin.Analysis.Infrastructure
{
///
/// Interface for discovering and loading analysis plugins
///
public interface IPluginDiscovery
{
///
/// Discovers all plugins in the specified directory
///
/// Directory to search for plugins
/// Collection of discovered plugins
Task> DiscoverPluginsAsync(string pluginDirectory);
///
/// Loads a specific plugin from an assembly
///
/// Path to the plugin assembly
/// Full name of the plugin type
/// Loaded plugin instance
Task LoadPluginAsync(string assemblyPath, string typeName);
///
/// Gets all built-in analysis plugins
///
/// Collection of built-in plugins
IEnumerable GetBuiltInPlugins();
///
/// Validates that a plugin implements the required interfaces
///
/// Plugin to validate
/// True if plugin is valid
bool ValidatePlugin(IAIPlugin plugin);
}
}