using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
namespace LANCommander.SDK.Plugins;
///
/// The entry point contract every LANCommander plugin implements. Plugins are discovered
/// from the host's Plugins drop-in folder and loaded once at startup.
///
public interface IPlugin
{
/// Stable, globally unique identifier (e.g. "com.acme.myplugin").
string Id { get; }
/// Human readable display name.
string Name { get; }
/// Plugin version (SemVer recommended).
string Version { get; }
/// Plugin author.
string Author { get; }
///
/// Registers the plugin's own services into the host's DI container. Called during host
/// startup before the service provider is built, so implementations must only register
/// services and must not attempt to resolve them.
///
void ConfigureServices(IServiceCollection services);
///
/// Asynchronous startup hook, invoked after the host's service provider is built. Use this
/// to resolve services, subscribe to lifecycle events, register UI extensions, etc.
///
Task InitializeAsync(PluginContext context, CancellationToken cancellationToken);
}