using Abstractions; using Microsoft.AspNetCore.Builder; namespace Server.Services; public interface IPluginService { /// Pre-build: scan plugin dirs, load slots, call OnBuilderInitialize on each. Task DiscoverPluginsAsync(WebApplicationBuilder builder); /// Post-build: add slots to the registry, call OnAppInitialize on each. Task ActivatePluginsAsync(WebApplication app); /// Hot-swap a single plugin DLL without restarting. Task ReloadAsync(string pluginDllPath); void SetServiceProvider(IServiceProvider serviceProvider); IEnumerable GetPlugins(); IMedusaPlugin? FindPlugin(string gameCode, int? minVer = null, int? maxVer = null); Task DoesProfileExistAsync(IMedusaPlugin plugin, string cardId); }