using LANCommander.SDK.Models.Manifest; namespace LANCommander.Server.Services.Providers.Metadata; public interface IMetadataProvider { public string ProviderName { get; } bool IsAvailable => true; public Task?> SearchGamesAsync(string input, int limit = 10, int offset = 0); public Task GetGameAsync(string gameId); Task?> GetSubProvidersAsync() => Task.FromResult?>(null); Task?> SearchGamesAsync(string input, string? subProvider, int limit = 10, int offset = 0) => SearchGamesAsync(input, limit, offset); } public record MetadataSearchResult(string Id, T Data); public record MetadataSearchResultsCollection(ICollection> Results, bool More, int Limit = 10, int Offset = 0);