using System.Globalization; namespace Ellie.Marmalade; public interface IMarmaladeLoaderSevice { Task<MarmaladeLoadResult> LoadMarmaladeAsync(string marmaladeName); Task<MarmaladeUnloadResult> UnloadMarmaladeAsync(string marmaladeName); string GetCommandDescription(string marmaladeName, string commandName, CultureInfo culture); string[] GetCommandExampleArgs(string marmaladeName, string commandName, CultureInfo culture); Task ReloadStrings(); IReadOnlyCollection<string> GetAllMarmalades(); IReadOnlyCollection<MarmaladeStats> GetLoadedMarmalades(CultureInfo? cultureInfo = null); } public sealed record MarmaladeStats(string Name, string? Description, IReadOnlyCollection<CanaryStats> Canaries); public sealed record CanaryStats(string Name, string? Prefix, IReadOnlyCollection<CanaryCommandStats> Commands); public sealed record CanaryCommandStats(string Name);