using ColaFlow.Modules.Mcp.Contracts.Resources;

namespace ColaFlow.Modules.Mcp.Application.Services;

/// <summary>
/// Service for discovering MCP Resources via Assembly scanning
/// </summary>
public interface IResourceDiscoveryService
{
    /// <summary>
    /// Discover all IMcpResource implementations in loaded assemblies
    /// </summary>
    /// <returns>List of discovered resource types</returns>
    IReadOnlyList<Type> DiscoverResourceTypes();

    /// <summary>
    /// Discover and instantiate all resources
    /// </summary>
    /// <param name="serviceProvider">Service provider for dependency injection</param>
    /// <returns>List of instantiated resources</returns>
    IReadOnlyList<IMcpResource> DiscoverAndInstantiateResources(IServiceProvider serviceProvider);
}
